Mercurial > pidgin.yaz
diff src/gtkblist.c @ 12070:e4666705944b
[gaim-migrate @ 14365]
patches [ 1353462 ] account-disabled/enabled signals, use them in account dialog
and [ 1355690 ] Add/remove statusbox when accounts are enabled/disabled
some parts of the first one didn't apply, but they were doc changes, so
i figured charkins could diff them.
committer: Tailor Script <tailor@pidgin.im>
author | Tim Ringenbach <marv@pidgin.im> |
---|---|
date | Sun, 13 Nov 2005 03:45:16 +0000 |
parents | ac18b43b0495 |
children | 3b52d94437f3 |
line wrap: on
line diff
--- a/src/gtkblist.c Sun Nov 13 03:39:06 2005 +0000 +++ b/src/gtkblist.c Sun Nov 13 03:45:16 2005 +0000 @@ -3247,6 +3247,41 @@ return result; } +static void account_enabled(GaimAccount *account, GaimGtkBuddyList *gtkblist) +{ + GtkWidget *box; + + if (!gtkblist) + return; + + box = gtk_gaim_status_box_new_with_account(account); + gtkblist->statusboxes = g_list_append(gtkblist->statusboxes, box); + gtk_box_pack_start(GTK_BOX(gtkblist->statusboxbox), box, FALSE, TRUE, 0); + gtk_widget_show(box); +} + +static void account_disabled(GaimAccount *account, GaimGtkBuddyList *gtkblist) +{ + GList *iter; + + if (!gtkblist) + return; + + for (iter = gtkblist->statusboxes; iter; iter = iter->next) + { + GtkWidget *box = iter->data; + GaimAccount *ac = NULL; + + g_object_get(G_OBJECT(box), "account", &ac, NULL); + if (ac == account) + { + gtkblist->statusboxes = g_list_remove_link(gtkblist->statusboxes, iter); + gtk_widget_destroy(box); + break; + } + } +} + static void gaim_gtk_blist_show(GaimBuddyList *list) { void *handle; @@ -3480,6 +3515,11 @@ gaim_gtk_blist_sound_method_pref_cb, NULL); /* Setup some gaim signal handlers. */ + gaim_signal_connect(gaim_accounts_get_handle(), "account-disabled", + gtkblist, GAIM_CALLBACK(account_disabled), gtkblist); + gaim_signal_connect(gaim_accounts_get_handle(), "account-enabled", + gtkblist, GAIM_CALLBACK(account_enabled), gtkblist); + gaim_signal_connect(gaim_connections_get_handle(), "signed-on", gtkblist, GAIM_CALLBACK(sign_on_off_cb), list); gaim_signal_connect(gaim_connections_get_handle(), "signed-off",