pidgin/gtkblist.c

changeset 41947
7b3312d0760c
parent 41902
c3c64590319f
child 41958
76d1633b8ec0
equal deleted inserted replaced
41946:0fb3b0e7122f 41947:7b3312d0760c
639 editing_blist = FALSE; 639 editing_blist = FALSE;
640 g_object_set(G_OBJECT(renderer), "editable", FALSE, NULL); 640 g_object_set(G_OBJECT(renderer), "editable", FALSE, NULL);
641 pidgin_blist_refresh(list); 641 pidgin_blist_refresh(list);
642 } 642 }
643 643
644 static void gtk_blist_renderer_editing_started_cb(GtkCellRenderer *renderer, 644 static void
645 GtkCellEditable *editable, 645 gtk_blist_renderer_editing_started_cb(G_GNUC_UNUSED GtkCellRenderer *renderer,
646 gchar *path_str, 646 GtkCellEditable *editable,
647 gpointer user_data) 647 gchar *path_str, gpointer user_data)
648 { 648 {
649 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(user_data); 649 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(user_data);
650 GtkTreeIter iter; 650 GtkTreeIter iter;
651 GtkTreePath *path = NULL; 651 GtkTreePath *path = NULL;
652 PurpleBlistNode *node; 652 PurpleBlistNode *node;
783 g_free(msg); 783 g_free(msg);
784 } else 784 } else
785 g_list_free(merges); 785 g_list_free(merges);
786 } 786 }
787 787
788 static void gtk_blist_renderer_edited_cb(GtkCellRendererText *text_rend, char *arg1, 788 static void
789 char *arg2, PurpleBuddyList *list) 789 gtk_blist_renderer_edited_cb(G_GNUC_UNUSED GtkCellRendererText *text_rend,
790 char *arg1, char *arg2, PurpleBuddyList *list)
790 { 791 {
791 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(list); 792 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(list);
792 GtkTreeIter iter; 793 GtkTreeIter iter;
793 GtkTreePath *path; 794 GtkTreePath *path;
794 PurpleBlistNode *node; 795 PurpleBlistNode *node;
902 /* 903 /*
903 * Check the values of all the text entry boxes. If any required input 904 * Check the values of all the text entry boxes. If any required input
904 * strings are empty then don't allow the user to click on "OK." 905 * strings are empty then don't allow the user to click on "OK."
905 */ 906 */
906 static void 907 static void
907 set_sensitive_if_input_chat_cb(GtkWidget *entry, gpointer user_data) 908 set_sensitive_if_input_chat_cb(G_GNUC_UNUSED GtkWidget *entry,
909 gpointer user_data)
908 { 910 {
909 PurpleProtocol *protocol; 911 PurpleProtocol *protocol;
910 PurpleConnection *gc; 912 PurpleConnection *gc;
911 PidginChatData *data; 913 PidginChatData *data;
912 GList *tmp; 914 GList *tmp;
982 return FALSE; 984 return FALSE;
983 } 985 }
984 986
985 static void 987 static void
986 make_blist_request_dialog(PidginBlistRequestData *data, PurpleAccount *account, 988 make_blist_request_dialog(PidginBlistRequestData *data, PurpleAccount *account,
987 const char *title, const char *window_role, const char *label_text, 989 const char *title, const char *label_text,
988 GCallback callback_func, GtkCustomFilterFunc filter_func, 990 GCallback callback_func,
989 GCallback response_cb) 991 GtkCustomFilterFunc filter_func,
992 GCallback response_cb)
990 { 993 {
991 GtkWidget *label; 994 GtkWidget *label;
992 GtkWidget *img; 995 GtkWidget *img;
993 GtkWidget *content_area; 996 GtkWidget *content_area;
994 GtkWidget *hbox; 997 GtkWidget *hbox;
1181 PidginAccountChooser *chooser = NULL; 1184 PidginAccountChooser *chooser = NULL;
1182 1185
1183 data = g_new0(PidginChatData, 1); 1186 data = g_new0(PidginChatData, 1);
1184 1187
1185 make_blist_request_dialog((PidginBlistRequestData *)data, NULL, 1188 make_blist_request_dialog((PidginBlistRequestData *)data, NULL,
1186 _("Join a Chat"), "join_chat", 1189 _("Join a Chat"),
1187 _("Please enter the appropriate information about the chat " 1190 _("Please enter the appropriate information about the chat "
1188 "you would like to join.\n"), 1191 "you would like to join.\n"),
1189 G_CALLBACK(chat_select_account_cb), 1192 G_CALLBACK(chat_select_account_cb),
1190 chat_account_filter_func, (GCallback)do_joinchat); 1193 chat_account_filter_func, (GCallback)do_joinchat);
1191 gtk_dialog_add_buttons(GTK_DIALOG(data->rq_data.window), 1194 gtk_dialog_add_buttons(GTK_DIALOG(data->rq_data.window),
1202 rebuild_chat_entries(data, NULL); 1205 rebuild_chat_entries(data, NULL);
1203 1206
1204 gtk_widget_show(data->rq_data.window); 1207 gtk_widget_show(data->rq_data.window);
1205 } 1208 }
1206 1209
1207 static void gtk_blist_row_expanded_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) 1210 static void
1211 gtk_blist_row_expanded_cb(G_GNUC_UNUSED GtkTreeView *tv, GtkTreeIter *iter,
1212 G_GNUC_UNUSED GtkTreePath *path, gpointer user_data)
1208 { 1213 {
1209 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(user_data); 1214 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(user_data);
1210 PurpleBlistNode *node; 1215 PurpleBlistNode *node;
1211 1216
1212 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &node, -1); 1217 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &node, -1);
1225 purple_blist_node_set_bool(node, "collapsed", FALSE); 1230 purple_blist_node_set_bool(node, "collapsed", FALSE);
1226 gtk_widget_trigger_tooltip_query(gtkblist->treeview); 1231 gtk_widget_trigger_tooltip_query(gtkblist->treeview);
1227 } 1232 }
1228 } 1233 }
1229 1234
1230 static void gtk_blist_row_collapsed_cb(GtkTreeView *tv, GtkTreeIter *iter, GtkTreePath *path, gpointer user_data) 1235 static void
1236 gtk_blist_row_collapsed_cb(G_GNUC_UNUSED GtkTreeView *tv, GtkTreeIter *iter,
1237 G_GNUC_UNUSED GtkTreePath *path, gpointer user_data)
1231 { 1238 {
1232 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(user_data); 1239 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(user_data);
1233 PurpleBlistNode *node; 1240 PurpleBlistNode *node;
1234 1241
1235 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &node, -1); 1242 gtk_tree_model_get(GTK_TREE_MODEL(gtkblist->treemodel), iter, NODE_COLUMN, &node, -1);
1262 } else if(PURPLE_IS_META_CONTACT(node)) { 1269 } else if(PURPLE_IS_META_CONTACT(node)) {
1263 pidgin_blist_collapse_contact_cb(NULL, node); 1270 pidgin_blist_collapse_contact_cb(NULL, node);
1264 } 1271 }
1265 } 1272 }
1266 1273
1267 static void gtk_blist_row_activated_cb(GtkTreeView *tv, GtkTreePath *path, GtkTreeViewColumn *col, gpointer data) { 1274 static void
1275 gtk_blist_row_activated_cb(G_GNUC_UNUSED GtkTreeView *tv, GtkTreePath *path,
1276 G_GNUC_UNUSED GtkTreeViewColumn *col, gpointer data)
1277 {
1268 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(data); 1278 PidginBuddyList *gtkblist = PIDGIN_BUDDY_LIST(data);
1269 PurpleBlistNode *node; 1279 PurpleBlistNode *node;
1270 GtkTreeIter iter; 1280 GtkTreeIter iter;
1271 1281
1272 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path); 1282 gtk_tree_model_get_iter(GTK_TREE_MODEL(gtkblist->treemodel), &iter, path);
1309 1319
1310 return FALSE; 1320 return FALSE;
1311 } 1321 }
1312 1322
1313 static void 1323 static void
1314 pidgin_blist_expand_contact_cb(GtkWidget *w, PurpleBlistNode *node) 1324 pidgin_blist_expand_contact_cb(G_GNUC_UNUSED GtkWidget *w,
1325 PurpleBlistNode *node)
1315 { 1326 {
1316 PidginBlistNode *gtknode; 1327 PidginBlistNode *gtknode;
1317 GtkTreeIter iter, parent; 1328 GtkTreeIter iter, parent;
1318 PurpleBlistNode *bnode; 1329 PurpleBlistNode *bnode;
1319 GtkTreePath *path; 1330 GtkTreePath *path;
1345 g_idle_add(scroll_to_expanded_cell, ex); 1356 g_idle_add(scroll_to_expanded_cell, ex);
1346 } 1357 }
1347 } 1358 }
1348 1359
1349 static void 1360 static void
1350 pidgin_blist_collapse_contact_cb(GtkWidget *w, PurpleBlistNode *node) 1361 pidgin_blist_collapse_contact_cb(G_GNUC_UNUSED GtkWidget *w,
1362 PurpleBlistNode *node)
1351 { 1363 {
1352 PurpleBlistNode *bnode; 1364 PurpleBlistNode *bnode;
1353 PidginBlistNode *gtknode; 1365 PidginBlistNode *gtknode;
1354 1366
1355 if(!PURPLE_IS_META_CONTACT(node)) 1367 if(!PURPLE_IS_META_CONTACT(node))
2474 return g_string_free(str, FALSE); 2486 return g_string_free(str, FALSE);
2475 } 2487 }
2476 2488
2477 static GHashTable *cached_emblems; 2489 static GHashTable *cached_emblems;
2478 2490
2479 static void _cleanup_cached_emblem(gpointer data, GObject *obj) { 2491 static void
2492 _cleanup_cached_emblem(gpointer data, G_GNUC_UNUSED GObject *obj) {
2480 g_hash_table_remove(cached_emblems, data); 2493 g_hash_table_remove(cached_emblems, data);
2481 } 2494 }
2482 2495
2483 static GdkPixbuf * _pidgin_blist_get_cached_emblem(gchar *path) { 2496 static GdkPixbuf * _pidgin_blist_get_cached_emblem(gchar *path) {
2484 GdkPixbuf *pb = g_hash_table_lookup(cached_emblems, path); 2497 GdkPixbuf *pb = g_hash_table_lookup(cached_emblems, path);
2776 gtknode->row = NULL; 2789 gtknode->row = NULL;
2777 } 2790 }
2778 2791
2779 static void 2792 static void
2780 conversation_updated_cb(PurpleConversation *conv, PurpleConversationUpdateType type, 2793 conversation_updated_cb(PurpleConversation *conv, PurpleConversationUpdateType type,
2781 PidginBuddyList *gtkblist) 2794 G_GNUC_UNUSED PidginBuddyList *gtkblist)
2782 { 2795 {
2783 PurpleAccount *account = purple_conversation_get_account(conv); 2796 PurpleAccount *account = purple_conversation_get_account(conv);
2784 2797
2785 if (type != PURPLE_CONVERSATION_UPDATE_UNSEEN) 2798 if (type != PURPLE_CONVERSATION_UPDATE_UNSEEN)
2786 return; 2799 return;
2805 return; 2818 return;
2806 ui->conv = NULL; 2819 ui->conv = NULL;
2807 } 2820 }
2808 2821
2809 static void 2822 static void
2810 conversation_created_cb(PurpleConversation *conv, PidginBuddyList *gtkblist) 2823 conversation_created_cb(PurpleConversation *conv,
2824 G_GNUC_UNUSED PidginBuddyList *gtkblist)
2811 { 2825 {
2812 PurpleAccount *account = purple_conversation_get_account(conv); 2826 PurpleAccount *account = purple_conversation_get_account(conv);
2813 2827
2814 if (PURPLE_IS_IM_CONVERSATION(conv)) { 2828 if (PURPLE_IS_IM_CONVERSATION(conv)) {
2815 GSList *buddies = purple_blist_find_buddies(account, purple_conversation_get_name(conv)); 2829 GSList *buddies = purple_blist_find_buddies(account, purple_conversation_get_name(conv));
2852 2866
2853 g_free(node); 2867 g_free(node);
2854 } 2868 }
2855 2869
2856 static void 2870 static void
2857 pidgin_blist_new_node(PurpleBuddyList *list, PurpleBlistNode *node) { 2871 pidgin_blist_new_node(G_GNUC_UNUSED PurpleBuddyList *list,
2872 PurpleBlistNode *node)
2873 {
2858 PidginBlistNode *pidgin_node = NULL; 2874 PidginBlistNode *pidgin_node = NULL;
2859 2875
2860 pidgin_node = g_new0(PidginBlistNode, 1); 2876 pidgin_node = g_new0(PidginBlistNode, 1);
2861 2877
2862 g_object_set_data_full(G_OBJECT(node), UI_DATA, pidgin_node, 2878 g_object_set_data_full(G_OBJECT(node), UI_DATA, pidgin_node,
2895 id = "alphabetical"; 2911 id = "alphabetical";
2896 } 2912 }
2897 pidgin_blist_sort_method_set(id); 2913 pidgin_blist_sort_method_set(id);
2898 } 2914 }
2899 2915
2900 static void _prefs_change_sort_method(const char *pref_name, PurplePrefType type, 2916 static void
2901 gconstpointer val, gpointer data) 2917 _prefs_change_sort_method(const char *pref_name,
2918 G_GNUC_UNUSED PurplePrefType type, gconstpointer val,
2919 G_GNUC_UNUSED gpointer data)
2902 { 2920 {
2903 if(purple_strequal(pref_name, PIDGIN_PREFS_ROOT "/blist/sort_type")) 2921 if(purple_strequal(pref_name, PIDGIN_PREFS_ROOT "/blist/sort_type"))
2904 pidgin_blist_sort_method_set(val); 2922 pidgin_blist_sort_method_set(val);
2905 } 2923 }
2906 2924
3283 } 3301 }
3284 3302
3285 return FALSE; 3303 return FALSE;
3286 } 3304 }
3287 3305
3288 static void pidgin_blist_selection_changed(GtkTreeSelection *selection, gpointer data) 3306 static void
3307 pidgin_blist_selection_changed(GtkTreeSelection *selection,
3308 G_GNUC_UNUSED gpointer data)
3289 { 3309 {
3290 PurpleBlistNode *new_selection = NULL; 3310 PurpleBlistNode *new_selection = NULL;
3291 GtkTreeIter iter; 3311 GtkTreeIter iter;
3292 3312
3293 if(gtk_tree_selection_get_selected(selection, NULL, &iter)){ 3313 if(gtk_tree_selection_get_selected(selection, NULL, &iter)){
3566 } 3586 }
3567 } 3587 }
3568 3588
3569 3589
3570 3590
3571 static void pidgin_blist_update_buddy(PurpleBuddyList *list, PurpleBlistNode *node, gboolean status_change) 3591 static void
3592 pidgin_blist_update_buddy(PurpleBuddyList *list, PurpleBlistNode *node,
3593 G_GNUC_UNUSED gboolean status_change)
3572 { 3594 {
3573 PurpleBuddy *buddy; 3595 PurpleBuddy *buddy;
3574 PidginBlistNode *gtkparentnode; 3596 PidginBlistNode *gtkparentnode;
3575 3597
3576 g_return_if_fail(PURPLE_IS_BUDDY(node)); 3598 g_return_if_fail(PURPLE_IS_BUDDY(node));
3689 } else if(PURPLE_IS_CHAT(node)) { 3711 } else if(PURPLE_IS_CHAT(node)) {
3690 pidgin_blist_update_chat(list, node); 3712 pidgin_blist_update_chat(list, node);
3691 } 3713 }
3692 } 3714 }
3693 3715
3694 static void pidgin_blist_set_visible(PurpleBuddyList *list, gboolean show) 3716 static void
3717 pidgin_blist_set_visible(G_GNUC_UNUSED PurpleBuddyList *list, gboolean show)
3695 { 3718 {
3696 if (!(gtkblist && gtkblist->window)) 3719 if (!(gtkblist && gtkblist->window))
3697 return; 3720 return;
3698 3721
3699 if (show) { 3722 if (show) {
3704 /* gtk_window_iconify(GTK_WINDOW(gtkblist->window)); */ 3727 /* gtk_window_iconify(GTK_WINDOW(gtkblist->window)); */
3705 } 3728 }
3706 } 3729 }
3707 3730
3708 static void 3731 static void
3709 pidgin_blist_request_add_buddy(PurpleBuddyList *list, PurpleAccount *account, 3732 pidgin_blist_request_add_buddy(G_GNUC_UNUSED PurpleBuddyList *list,
3710 const char *username, const char *group, 3733 PurpleAccount *account, const char *username,
3711 const char *alias) 3734 const char *group, const char *alias)
3712 { 3735 {
3713 GtkWidget *dialog = NULL; 3736 GtkWidget *dialog = NULL;
3714 3737
3715 dialog = pidgin_add_buddy_dialog_new(account, username, alias, NULL, group); 3738 dialog = pidgin_add_buddy_dialog_new(account, username, alias, NULL, group);
3716 3739
3717 gtk_widget_show(dialog); 3740 gtk_widget_show(dialog);
3718 } 3741 }
3719 3742
3720 static void 3743 static void
3721 pidgin_blist_request_add_chat(PurpleBuddyList *list, PurpleAccount *account, 3744 pidgin_blist_request_add_chat(G_GNUC_UNUSED PurpleBuddyList *list,
3722 PurpleGroup *group, const char *alias, 3745 PurpleAccount *account, PurpleGroup *group,
3723 const char *name) 3746 const char *alias, const char *name)
3724 { 3747 {
3725 GtkWidget *dialog = NULL; 3748 GtkWidget *dialog = NULL;
3726 3749
3727 dialog = pidgin_add_chat_dialog_new(account, group, alias, name); 3750 dialog = pidgin_add_chat_dialog_new(account, group, alias, name);
3728 3751
3729 gtk_widget_show(dialog); 3752 gtk_widget_show(dialog);
3730 } 3753 }
3731 3754
3732 static void 3755 static void
3733 add_group_cb(PurpleConnection *gc, const char *group_name) 3756 add_group_cb(G_GNUC_UNUSED PurpleConnection *connection,
3757 const char *group_name)
3734 { 3758 {
3735 PurpleGroup *group; 3759 PurpleGroup *group;
3736 3760
3737 if ((group_name == NULL) || (*group_name == '\0')) 3761 if ((group_name == NULL) || (*group_name == '\0'))
3738 return; 3762 return;
3740 group = purple_group_new(group_name); 3764 group = purple_group_new(group_name);
3741 purple_blist_add_group(group, NULL); 3765 purple_blist_add_group(group, NULL);
3742 } 3766 }
3743 3767
3744 static void 3768 static void
3745 pidgin_blist_request_add_group(PurpleBuddyList *list) 3769 pidgin_blist_request_add_group(G_GNUC_UNUSED PurpleBuddyList *list)
3746 { 3770 {
3747 purple_request_input(NULL, _("Add Group"), NULL, 3771 purple_request_input(NULL, _("Add Group"), NULL,
3748 _("Please enter the name of the group to be added."), 3772 _("Please enter the name of the group to be added."),
3749 NULL, FALSE, FALSE, NULL, 3773 NULL, FALSE, FALSE, NULL,
3750 _("Add"), G_CALLBACK(add_group_cb), 3774 _("Add"), G_CALLBACK(add_group_cb),
3756 pidgin_blist_get_default_gtk_blist(void) 3780 pidgin_blist_get_default_gtk_blist(void)
3757 { 3781 {
3758 return gtkblist; 3782 return gtkblist;
3759 } 3783 }
3760 3784
3761 static gboolean autojoin_cb(PurpleConnection *gc, gpointer data) 3785 static gboolean
3786 autojoin_cb(PurpleConnection *gc, G_GNUC_UNUSED gpointer data)
3762 { 3787 {
3763 PurpleAccount *account = purple_connection_get_account(gc); 3788 PurpleAccount *account = purple_connection_get_account(gc);
3764 PurpleBlistNode *gnode, *cnode; 3789 PurpleBlistNode *gnode, *cnode;
3765 for (gnode = purple_blist_get_default_root(); gnode; 3790 for (gnode = purple_blist_get_default_root(); gnode;
3766 gnode = gnode->next) { 3791 gnode = gnode->next) {
3886 3911
3887 /************************************************************************** 3912 /**************************************************************************
3888 * GTK Buddy list GObject code 3913 * GTK Buddy list GObject code
3889 **************************************************************************/ 3914 **************************************************************************/
3890 static void 3915 static void
3891 pidgin_buddy_list_init(PidginBuddyList *self) 3916 pidgin_buddy_list_init(G_GNUC_UNUSED PidginBuddyList *self)
3892 { 3917 {
3893 } 3918 }
3894 3919
3895 static void 3920 static void
3896 pidgin_buddy_list_finalize(GObject *obj) 3921 pidgin_buddy_list_finalize(GObject *obj)
3998 4023
3999 /****************************************** 4024 /******************************************
4000 ** Sort Methods 4025 ** Sort Methods
4001 ******************************************/ 4026 ******************************************/
4002 4027
4003 static void sort_method_none(PurpleBlistNode *node, PurpleBuddyList *blist, GtkTreeIter parent_iter, GtkTreeIter *cur, GtkTreeIter *iter) 4028 static void
4029 sort_method_none(PurpleBlistNode *node, G_GNUC_UNUSED PurpleBuddyList *blist,
4030 GtkTreeIter parent_iter, GtkTreeIter *cur, GtkTreeIter *iter)
4004 { 4031 {
4005 PurpleBlistNode *sibling = node->prev; 4032 PurpleBlistNode *sibling = node->prev;
4006 GtkTreeIter sibling_iter; 4033 GtkTreeIter sibling_iter;
4007 4034
4008 if (cur != NULL) { 4035 if (cur != NULL) {

mercurial