comparison src/gtkutils.c @ 6646:b89d98f0bf79

[gaim-migrate @ 7171] The Privacy dialog now displays only accounts that are online, as does the pounce dialog. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Fri, 29 Aug 2003 22:41:23 +0000
parents 70d5122bc3ff
children 3c10d6de8bf3
comparison
equal deleted inserted replaced
6645:2fa677eb9e57 6646:b89d98f0bf79
750 user_data); 750 user_data);
751 } 751 }
752 752
753 static void 753 static void
754 create_account_menu(GtkWidget *optmenu, GaimAccount *default_account, 754 create_account_menu(GtkWidget *optmenu, GaimAccount *default_account,
755 gboolean show_all) 755 GaimCheckAccountFunc check_account_func, gboolean show_all)
756 { 756 {
757 GaimAccount *account; 757 GaimAccount *account;
758 GtkWidget *menu; 758 GtkWidget *menu;
759 GtkWidget *item; 759 GtkWidget *item;
760 GtkWidget *image; 760 GtkWidget *image;
790 GaimConnection *gc = (GaimConnection *)p->data; 790 GaimConnection *gc = (GaimConnection *)p->data;
791 791
792 account = gaim_connection_get_account(gc); 792 account = gaim_connection_get_account(gc);
793 } 793 }
794 794
795 if (check_account_func == NULL || !check_account_func(account))
796 continue;
797
795 plugin = gaim_find_prpl(gaim_account_get_protocol(account)); 798 plugin = gaim_find_prpl(gaim_account_get_protocol(account));
796 799
797 if (plugin != NULL) 800 if (plugin != NULL)
798 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin); 801 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(plugin);
799 802
869 { 872 {
870 GtkWidget *menu; 873 GtkWidget *menu;
871 GtkWidget *item; 874 GtkWidget *item;
872 gboolean show_all; 875 gboolean show_all;
873 GaimAccount *account; 876 GaimAccount *account;
877 GaimCheckAccountFunc check_account_func;
874 878
875 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu)); 879 menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu));
876 item = gtk_menu_get_active(GTK_MENU(menu)); 880 item = gtk_menu_get_active(GTK_MENU(menu));
877 account = g_object_get_data(G_OBJECT(item), "account"); 881 account = g_object_get_data(G_OBJECT(item), "account");
878 882
879 show_all = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(optmenu), 883 show_all = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(optmenu),
880 "show_all")); 884 "show_all"));
881 885
886 check_account_func = g_object_get_data(G_OBJECT(item),
887 "check_account_func");
888
882 gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu)); 889 gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu));
883 890
884 create_account_menu(optmenu, account, show_all); 891 create_account_menu(optmenu, account, check_account_func, show_all);
885 } 892 }
886 893
887 static gboolean 894 static gboolean
888 account_menu_destroyed_cb(GtkWidget *optmenu, GdkEvent *event, 895 account_menu_destroyed_cb(GtkWidget *optmenu, GdkEvent *event,
889 void *user_data) 896 void *user_data)
894 } 901 }
895 902
896 GtkWidget * 903 GtkWidget *
897 gaim_gtk_account_option_menu_new(GaimAccount *default_account, 904 gaim_gtk_account_option_menu_new(GaimAccount *default_account,
898 gboolean show_all, GCallback cb, 905 gboolean show_all, GCallback cb,
906 GaimCheckAccountFunc check_account_func,
899 gpointer user_data) 907 gpointer user_data)
900 { 908 {
901 GtkWidget *optmenu; 909 GtkWidget *optmenu;
902 910
903 /* Create the option menu */ 911 /* Create the option menu */
916 optmenu); 924 optmenu);
917 925
918 /* Set some data. */ 926 /* Set some data. */
919 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data); 927 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
920 g_object_set_data(G_OBJECT(optmenu), "show_all", GINT_TO_POINTER(show_all)); 928 g_object_set_data(G_OBJECT(optmenu), "show_all", GINT_TO_POINTER(show_all));
929 g_object_set_data(G_OBJECT(optmenu), "chck_account_func",
930 check_account_func);
921 931
922 /* Create and set the actual menu. */ 932 /* Create and set the actual menu. */
923 create_account_menu(optmenu, default_account, show_all); 933 create_account_menu(optmenu, default_account, check_account_func, show_all);
924 934
925 /* And now the last callback. */ 935 /* And now the last callback. */
926 g_signal_connect(G_OBJECT(optmenu), "changed", 936 g_signal_connect(G_OBJECT(optmenu), "changed",
927 G_CALLBACK(account_menu_cb), cb); 937 G_CALLBACK(account_menu_cb), cb);
928 938