| 7459 PidginBuddyList *pidgin_blist_get_default_gtk_blist() |
7459 PidginBuddyList *pidgin_blist_get_default_gtk_blist() |
| 7460 { |
7460 { |
| 7461 return gtkblist; |
7461 return gtkblist; |
| 7462 } |
7462 } |
| 7463 |
7463 |
| 7464 static void account_signon_cb(PurpleConnection *gc, gpointer z) |
7464 static gboolean autojoin_cb(PurpleConnection *gc, gpointer data) |
| 7465 { |
7465 { |
| 7466 PurpleAccount *account = purple_connection_get_account(gc); |
7466 PurpleAccount *account = purple_connection_get_account(gc); |
| 7467 PurpleBlistNode *gnode, *cnode; |
7467 PurpleBlistNode *gnode, *cnode; |
| 7468 for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) |
7468 for(gnode = purple_get_blist()->root; gnode; gnode = gnode->next) |
| 7469 { |
7469 { |
| 7485 (purple_blist_node_get_string((PurpleBlistNode*)chat, |
7485 (purple_blist_node_get_string((PurpleBlistNode*)chat, |
| 7486 "gtk-autojoin") != NULL)) |
7486 "gtk-autojoin") != NULL)) |
| 7487 serv_join_chat(gc, chat->components); |
7487 serv_join_chat(gc, chat->components); |
| 7488 } |
7488 } |
| 7489 } |
7489 } |
| |
7490 |
| |
7491 /* Stop processing; we handled the autojoins. */ |
| |
7492 return TRUE; |
| 7490 } |
7493 } |
| 7491 |
7494 |
| 7492 void * |
7495 void * |
| 7493 pidgin_blist_get_handle() { |
7496 pidgin_blist_get_handle() { |
| 7494 static int handle; |
7497 static int handle; |
| 7560 void pidgin_blist_init(void) |
7563 void pidgin_blist_init(void) |
| 7561 { |
7564 { |
| 7562 void *gtk_blist_handle = pidgin_blist_get_handle(); |
7565 void *gtk_blist_handle = pidgin_blist_get_handle(); |
| 7563 |
7566 |
| 7564 cached_emblems = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); |
7567 cached_emblems = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); |
| 7565 |
|
| 7566 purple_signal_connect(purple_connections_get_handle(), "signed-on", |
|
| 7567 gtk_blist_handle, PURPLE_CALLBACK(account_signon_cb), |
|
| 7568 NULL); |
|
| 7569 |
7568 |
| 7570 /* Initialize prefs */ |
7569 /* Initialize prefs */ |
| 7571 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/blist"); |
7570 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/blist"); |
| 7572 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons", TRUE); |
7571 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_buddy_icons", TRUE); |
| 7573 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups", FALSE); |
7572 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/blist/show_empty_groups", FALSE); |
| 7623 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", |
7622 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", |
| 7624 gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); |
7623 gtk_blist_handle, PURPLE_CALLBACK(buddy_signonoff_cb), NULL); |
| 7625 purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", |
7624 purple_signal_connect(purple_blist_get_handle(), "buddy-privacy-changed", |
| 7626 gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL); |
7625 gtk_blist_handle, PURPLE_CALLBACK(pidgin_blist_update_privacy_cb), NULL); |
| 7627 |
7626 |
| |
7627 purple_signal_connect_priority(purple_connections_get_handle(), "autojoin", |
| |
7628 gtk_blist_handle, PURPLE_CALLBACK(autojoin_cb), |
| |
7629 NULL, PURPLE_SIGNAL_PRIORITY_HIGHEST); |
| 7628 } |
7630 } |
| 7629 |
7631 |
| 7630 void |
7632 void |
| 7631 pidgin_blist_uninit(void) { |
7633 pidgin_blist_uninit(void) { |
| 7632 g_hash_table_destroy(cached_emblems); |
7634 g_hash_table_destroy(cached_emblems); |
| 7737 my_name = purple_chat_get_name((PurpleChat*)node); |
7739 my_name = purple_chat_get_name((PurpleChat*)node); |
| 7738 } else { |
7740 } else { |
| 7739 sort_method_none(node, blist, groupiter, cur, iter); |
7741 sort_method_none(node, blist, groupiter, cur, iter); |
| 7740 return; |
7742 return; |
| 7741 } |
7743 } |
| 7742 |
|
| 7743 |
7744 |
| 7744 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) { |
7745 if (!gtk_tree_model_iter_children(GTK_TREE_MODEL(gtkblist->treemodel), &more_z, &groupiter)) { |
| 7745 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0); |
7746 gtk_tree_store_insert(gtkblist->treemodel, iter, &groupiter, 0); |
| 7746 return; |
7747 return; |
| 7747 } |
7748 } |