Mercurial > pidgin
comparison finch/gntconv.c @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 02 Jun 2012 02:30:49 +0000 |
parents | f5e193735392 |
children |
comparison
equal
deleted
inserted
replaced
32818:01ff09d4a463 | 32819:2c6510167895 |
---|---|
50 #include "gntentry.h" | 50 #include "gntentry.h" |
51 #include "gntlabel.h" | 51 #include "gntlabel.h" |
52 #include "gntmenu.h" | 52 #include "gntmenu.h" |
53 #include "gntmenuitem.h" | 53 #include "gntmenuitem.h" |
54 #include "gntmenuitemcheck.h" | 54 #include "gntmenuitemcheck.h" |
55 #include "gntmenuutil.h" | |
55 #include "gntstyle.h" | 56 #include "gntstyle.h" |
56 #include "gnttextview.h" | 57 #include "gnttextview.h" |
57 #include "gnttree.h" | 58 #include "gnttree.h" |
58 #include "gntutils.h" | 59 #include "gntutils.h" |
59 #include "gntwindow.h" | 60 #include "gntwindow.h" |
121 purple_conv_im_stop_send_typed_timeout(im); | 122 purple_conv_im_stop_send_typed_timeout(im); |
122 purple_conv_im_start_send_typed_timeout(im); | 123 purple_conv_im_start_send_typed_timeout(im); |
123 if (send || (purple_conv_im_get_type_again(im) != 0 && | 124 if (send || (purple_conv_im_get_type_again(im) != 0 && |
124 time(NULL) > purple_conv_im_get_type_again(im))) { | 125 time(NULL) > purple_conv_im_get_type_again(im))) { |
125 unsigned int timeout; | 126 unsigned int timeout; |
126 timeout = serv_send_typing(purple_conversation_get_gc(conv), | 127 timeout = serv_send_typing(purple_conversation_get_connection(conv), |
127 purple_conversation_get_name(conv), | 128 purple_conversation_get_name(conv), |
128 PURPLE_TYPING); | 129 PURPLE_TYPING); |
129 purple_conv_im_set_type_again(im, timeout); | 130 purple_conv_im_set_type_again(im, timeout); |
130 } | 131 } |
131 } else { | 132 } else { |
132 purple_conv_im_stop_send_typed_timeout(im); | 133 purple_conv_im_stop_send_typed_timeout(im); |
133 | 134 |
134 serv_send_typing(purple_conversation_get_gc(conv), | 135 serv_send_typing(purple_conversation_get_connection(conv), |
135 purple_conversation_get_name(conv), | 136 purple_conversation_get_name(conv), |
136 PURPLE_NOT_TYPING); | 137 PURPLE_NOT_TYPING); |
137 } | 138 } |
138 } | 139 } |
139 } | 140 } |
280 | 281 |
281 if (!conv) | 282 if (!conv) |
282 return; | 283 return; |
283 | 284 |
284 im = PURPLE_CONV_IM(conv); | 285 im = PURPLE_CONV_IM(conv); |
285 ggc = FINCH_GET_DATA(conv); | 286 ggc = FINCH_CONV(conv); |
286 | 287 |
287 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { | 288 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
288 int scroll; | 289 int scroll; |
289 str = get_conversation_title(conv, account); | 290 str = get_conversation_title(conv, account); |
290 title = g_strdup_printf(_("%s [%s]"), str, | 291 title = g_strdup_printf(_("%s [%s]"), str, |
319 buddy_signed_on_off(PurpleBuddy *buddy, gpointer null) | 320 buddy_signed_on_off(PurpleBuddy *buddy, gpointer null) |
320 { | 321 { |
321 PurpleConversation *conv = find_conv_with_contact(purple_buddy_get_account(buddy), purple_buddy_get_name(buddy)); | 322 PurpleConversation *conv = find_conv_with_contact(purple_buddy_get_account(buddy), purple_buddy_get_name(buddy)); |
322 if (conv == NULL) | 323 if (conv == NULL) |
323 return; | 324 return; |
324 generate_send_to_menu(FINCH_GET_DATA(conv)); | 325 generate_send_to_menu(FINCH_CONV(conv)); |
325 } | 326 } |
326 | 327 |
327 static void | 328 static void |
328 account_signed_on_off(PurpleConnection *gc, gpointer null) | 329 account_signed_on_off(PurpleConnection *gc, gpointer null) |
329 { | 330 { |
331 while (list) { | 332 while (list) { |
332 PurpleConversation *conv = list->data; | 333 PurpleConversation *conv = list->data; |
333 PurpleConversation *cc = find_conv_with_contact( | 334 PurpleConversation *cc = find_conv_with_contact( |
334 purple_conversation_get_account(conv), purple_conversation_get_name(conv)); | 335 purple_conversation_get_account(conv), purple_conversation_get_name(conv)); |
335 if (cc) | 336 if (cc) |
336 generate_send_to_menu(FINCH_GET_DATA(cc)); | 337 generate_send_to_menu(FINCH_CONV(cc)); |
337 list = list->next; | 338 list = list->next; |
338 } | 339 } |
339 | 340 |
340 if (PURPLE_CONNECTION_IS_CONNECTED(gc)) { | 341 if (PURPLE_CONNECTION_IS_CONNECTED(gc)) { |
341 /* We just signed on. Let's see if there's any chat that we have open, | 342 /* We just signed on. Let's see if there's any chat that we have open, |
396 } | 397 } |
397 | 398 |
398 static void | 399 static void |
399 cleared_message_history_cb(PurpleConversation *conv, gpointer data) | 400 cleared_message_history_cb(PurpleConversation *conv, gpointer data) |
400 { | 401 { |
401 FinchConv *ggc = FINCH_GET_DATA(conv); | 402 FinchConv *ggc = FINCH_CONV(conv); |
402 if (ggc) | 403 if (ggc) |
403 gnt_text_view_clear(GNT_TEXT_VIEW(ggc->tv)); | 404 gnt_text_view_clear(GNT_TEXT_VIEW(ggc->tv)); |
404 } | 405 } |
405 | 406 |
406 static void | 407 static void |
408 gg_extended_menu(FinchConv *ggc) | |
409 { | |
410 GntWidget *sub; | |
411 GList *list; | |
412 | |
413 sub = gnt_menu_new(GNT_MENU_POPUP); | |
414 gnt_menuitem_set_submenu(ggc->plugins, GNT_MENU(sub)); | |
415 | |
416 for (list = purple_conversation_get_extended_menu(ggc->active_conv); | |
417 list; list = g_list_delete_link(list, list)) | |
418 { | |
419 gnt_append_menu_action(GNT_MENU(sub), list->data, ggc->active_conv); | |
420 } | |
421 } | |
422 | |
423 static void | |
424 conv_updated(PurpleConversation *conv, PurpleConvUpdateType type) | |
425 { | |
426 if (type == PURPLE_CONV_UPDATE_FEATURES) { | |
427 gg_extended_menu(purple_conversation_get_ui_data(conv)); | |
428 } | |
429 } | |
430 | |
431 static void | |
407 clear_scrollback_cb(GntMenuItem *item, gpointer ggconv) | 432 clear_scrollback_cb(GntMenuItem *item, gpointer ggconv) |
408 { | 433 { |
409 FinchConv *ggc = ggconv; | 434 FinchConv *ggc = ggconv; |
410 purple_conversation_clear_message_history(ggc->active_conv); | 435 purple_conversation_clear_message_history(ggc->active_conv); |
411 } | 436 } |
412 | 437 |
413 static void | 438 static void |
414 send_file_cb(GntMenuItem *item, gpointer ggconv) | 439 send_file_cb(GntMenuItem *item, gpointer ggconv) |
415 { | 440 { |
416 FinchConv *ggc = ggconv; | 441 FinchConv *ggc = ggconv; |
417 serv_send_file(purple_conversation_get_gc(ggc->active_conv), | 442 serv_send_file(purple_conversation_get_connection(ggc->active_conv), |
418 purple_conversation_get_name(ggc->active_conv), NULL); | 443 purple_conversation_get_name(ggc->active_conv), NULL); |
419 } | 444 } |
420 | 445 |
421 static void | 446 static void |
422 add_pounce_cb(GntMenuItem *item, gpointer ggconv) | 447 add_pounce_cb(GntMenuItem *item, gpointer ggconv) |
429 | 454 |
430 static void | 455 static void |
431 get_info_cb(GntMenuItem *item, gpointer ggconv) | 456 get_info_cb(GntMenuItem *item, gpointer ggconv) |
432 { | 457 { |
433 FinchConv *ggc = ggconv; | 458 FinchConv *ggc = ggconv; |
434 finch_retrieve_user_info(purple_conversation_get_gc(ggc->active_conv), | 459 finch_retrieve_user_info(purple_conversation_get_connection(ggc->active_conv), |
435 purple_conversation_get_name(ggc->active_conv)); | 460 purple_conversation_get_name(ggc->active_conv)); |
436 } | 461 } |
437 | 462 |
438 static void | 463 static void |
439 toggle_timestamps_cb(GntMenuItem *item, gpointer ggconv) | 464 toggle_timestamps_cb(GntMenuItem *item, gpointer ggconv) |
593 PurpleConversation *conv = fc->active_conv; | 618 PurpleConversation *conv = fc->active_conv; |
594 purple_conv_chat_invite_user(PURPLE_CONV_CHAT(conv), NULL, NULL, TRUE); | 619 purple_conv_chat_invite_user(PURPLE_CONV_CHAT(conv), NULL, NULL, TRUE); |
595 } | 620 } |
596 | 621 |
597 static void | 622 static void |
623 plugin_changed_cb(PurplePlugin *p, gpointer data) | |
624 { | |
625 gg_extended_menu(data); | |
626 } | |
627 | |
628 static void | |
598 gg_create_menu(FinchConv *ggc) | 629 gg_create_menu(FinchConv *ggc) |
599 { | 630 { |
600 GntWidget *menu, *sub; | 631 GntWidget *menu, *sub; |
601 GntMenuItem *item; | 632 GntMenuItem *item; |
602 | 633 |
663 item = gnt_menuitem_check_new(_("Enable Sounds")); | 694 item = gnt_menuitem_check_new(_("Enable Sounds")); |
664 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), | 695 gnt_menuitem_check_set_checked(GNT_MENU_ITEM_CHECK(item), |
665 !(ggc->flags & FINCH_CONV_NO_SOUND)); | 696 !(ggc->flags & FINCH_CONV_NO_SOUND)); |
666 gnt_menu_add_item(GNT_MENU(sub), item); | 697 gnt_menu_add_item(GNT_MENU(sub), item); |
667 gnt_menuitem_set_callback(item, toggle_sound_cb, ggc); | 698 gnt_menuitem_set_callback(item, toggle_sound_cb, ggc); |
699 | |
700 item = gnt_menuitem_new(_("Plugins")); | |
701 gnt_menu_add_item(GNT_MENU(menu), item); | |
702 ggc->plugins = item; | |
703 | |
704 gg_extended_menu(ggc); | |
668 } | 705 } |
669 | 706 |
670 static void | 707 static void |
671 create_conv_from_userlist(GntWidget *widget, FinchConv *fc) | 708 create_conv_from_userlist(GntWidget *widget, FinchConv *fc) |
672 { | 709 { |
681 return; | 718 return; |
682 } | 719 } |
683 | 720 |
684 name = gnt_tree_get_selection_data(GNT_TREE(widget)); | 721 name = gnt_tree_get_selection_data(GNT_TREE(widget)); |
685 | 722 |
686 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); | 723 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); |
687 if (prpl_info && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_cb_real_name)) | 724 if (prpl_info && PURPLE_PROTOCOL_PLUGIN_HAS_FUNC(prpl_info, get_cb_real_name)) |
688 realname = prpl_info->get_cb_real_name(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(fc->active_conv)), name); | 725 realname = prpl_info->get_cb_real_name(gc, purple_conv_chat_get_id(PURPLE_CONV_CHAT(fc->active_conv)), name); |
689 else | 726 else |
690 realname = NULL; | 727 realname = NULL; |
691 purple_conversation_new(PURPLE_CONV_TYPE_IM, account, realname ? realname : name); | 728 purple_conversation_new(PURPLE_CONV_TYPE_IM, account, realname ? realname : name); |
747 } | 784 } |
748 | 785 |
749 static void | 786 static void |
750 finch_create_conversation(PurpleConversation *conv) | 787 finch_create_conversation(PurpleConversation *conv) |
751 { | 788 { |
752 FinchConv *ggc = FINCH_GET_DATA(conv); | 789 FinchConv *ggc = FINCH_CONV(conv); |
753 char *title; | 790 char *title; |
754 PurpleConversationType type; | 791 PurpleConversationType type; |
755 PurpleConversation *cc; | 792 PurpleConversation *cc; |
756 PurpleAccount *account; | 793 PurpleAccount *account; |
757 PurpleBlistNode *convnode = NULL; | 794 PurpleBlistNode *convnode = NULL; |
761 return; | 798 return; |
762 } | 799 } |
763 | 800 |
764 account = purple_conversation_get_account(conv); | 801 account = purple_conversation_get_account(conv); |
765 cc = find_conv_with_contact(account, purple_conversation_get_name(conv)); | 802 cc = find_conv_with_contact(account, purple_conversation_get_name(conv)); |
766 if (cc && FINCH_GET_DATA(cc)) | 803 if (cc && FINCH_CONV(cc)) |
767 ggc = FINCH_GET_DATA(cc); | 804 ggc = FINCH_CONV(cc); |
768 else | 805 else |
769 ggc = g_new0(FinchConv, 1); | 806 ggc = g_new0(FinchConv, 1); |
770 | 807 |
771 /* Each conversation with the same person will have the same logging setting */ | 808 /* Each conversation with the same person will have the same logging setting */ |
772 if (ggc->list) { | 809 if (ggc->list) { |
774 purple_conversation_is_logging(ggc->list->data)); | 811 purple_conversation_is_logging(ggc->list->data)); |
775 } | 812 } |
776 | 813 |
777 ggc->list = g_list_prepend(ggc->list, conv); | 814 ggc->list = g_list_prepend(ggc->list, conv); |
778 ggc->active_conv = conv; | 815 ggc->active_conv = conv; |
779 FINCH_SET_DATA(conv, ggc); | 816 purple_conversation_set_ui_data(conv, ggc); |
780 | 817 |
781 if (cc && FINCH_GET_DATA(cc) && cc != conv) { | 818 if (cc && FINCH_CONV(cc) && cc != conv) { |
782 finch_conversation_set_active(conv); | 819 finch_conversation_set_active(conv); |
783 return; | 820 return; |
784 } | 821 } |
785 | 822 |
786 type = purple_conversation_get_type(conv); | 823 type = purple_conversation_get_type(conv); |
874 purple_signal_connect(purple_cmds_get_handle(), "cmd-added", ggc, | 911 purple_signal_connect(purple_cmds_get_handle(), "cmd-added", ggc, |
875 G_CALLBACK(cmd_added_cb), ggc); | 912 G_CALLBACK(cmd_added_cb), ggc); |
876 purple_signal_connect(purple_cmds_get_handle(), "cmd-removed", ggc, | 913 purple_signal_connect(purple_cmds_get_handle(), "cmd-removed", ggc, |
877 G_CALLBACK(cmd_removed_cb), ggc); | 914 G_CALLBACK(cmd_removed_cb), ggc); |
878 | 915 |
916 purple_signal_connect(purple_plugins_get_handle(), "plugin-load", ggc, | |
917 PURPLE_CALLBACK(plugin_changed_cb), ggc); | |
918 purple_signal_connect(purple_plugins_get_handle(), "plugin-unload", ggc, | |
919 PURPLE_CALLBACK(plugin_changed_cb), ggc); | |
920 | |
879 g_free(title); | 921 g_free(title); |
880 gnt_box_give_focus_to_child(GNT_BOX(ggc->window), ggc->entry); | 922 gnt_box_give_focus_to_child(GNT_BOX(ggc->window), ggc->entry); |
881 g_signal_connect(G_OBJECT(ggc->window), "gained-focus", G_CALLBACK(gained_focus_cb), ggc); | 923 g_signal_connect(G_OBJECT(ggc->window), "gained-focus", G_CALLBACK(gained_focus_cb), ggc); |
882 } | 924 } |
883 | 925 |
884 static void | 926 static void |
885 finch_destroy_conversation(PurpleConversation *conv) | 927 finch_destroy_conversation(PurpleConversation *conv) |
886 { | 928 { |
887 /* do stuff here */ | 929 /* do stuff here */ |
888 FinchConv *ggc = FINCH_GET_DATA(conv); | 930 FinchConv *ggc = FINCH_CONV(conv); |
889 ggc->list = g_list_remove(ggc->list, conv); | 931 ggc->list = g_list_remove(ggc->list, conv); |
890 if (ggc->list && conv == ggc->active_conv) { | 932 if (ggc->list && conv == ggc->active_conv) { |
891 ggc->active_conv = ggc->list->data; | 933 ggc->active_conv = ggc->list->data; |
892 gg_setup_commands(ggc, TRUE); | 934 gg_setup_commands(ggc, TRUE); |
893 } | 935 } |
903 | 945 |
904 static void | 946 static void |
905 finch_write_common(PurpleConversation *conv, const char *who, const char *message, | 947 finch_write_common(PurpleConversation *conv, const char *who, const char *message, |
906 PurpleMessageFlags flags, time_t mtime) | 948 PurpleMessageFlags flags, time_t mtime) |
907 { | 949 { |
908 FinchConv *ggconv = FINCH_GET_DATA(conv); | 950 FinchConv *ggconv = FINCH_CONV(conv); |
909 char *strip, *newline; | 951 char *strip, *newline; |
910 GntTextFormatFlags fl = 0; | 952 GntTextFormatFlags fl = 0; |
911 int pos; | 953 int pos; |
912 | 954 |
913 g_return_if_fail(ggconv != NULL); | 955 g_return_if_fail(ggconv != NULL); |
1067 } | 1109 } |
1068 | 1110 |
1069 static void | 1111 static void |
1070 finch_chat_add_users(PurpleConversation *conv, GList *users, gboolean new_arrivals) | 1112 finch_chat_add_users(PurpleConversation *conv, GList *users, gboolean new_arrivals) |
1071 { | 1113 { |
1072 FinchConv *ggc = FINCH_GET_DATA(conv); | 1114 FinchConv *ggc = FINCH_CONV(conv); |
1073 GntEntry *entry = GNT_ENTRY(ggc->entry); | 1115 GntEntry *entry = GNT_ENTRY(ggc->entry); |
1074 | 1116 |
1075 if (!new_arrivals) | 1117 if (!new_arrivals) |
1076 { | 1118 { |
1077 /* Print the list of users in the room */ | 1119 /* Print the list of users in the room */ |
1082 g_string_printf(string, | 1124 g_string_printf(string, |
1083 ngettext("List of %d user:\n", "List of %d users:\n", count), count); | 1125 ngettext("List of %d user:\n", "List of %d users:\n", count), count); |
1084 for (iter = users; iter; iter = iter->next) | 1126 for (iter = users; iter; iter = iter->next) |
1085 { | 1127 { |
1086 PurpleConvChatBuddy *cbuddy = iter->data; | 1128 PurpleConvChatBuddy *cbuddy = iter->data; |
1087 char *str; | 1129 const char *str; |
1088 | 1130 |
1089 if ((str = cbuddy->alias) == NULL) | 1131 if ((str = purple_conv_chat_cb_get_alias(cbuddy)) == NULL) |
1090 str = cbuddy->name; | 1132 str = purple_conv_chat_cb_get_name(cbuddy); |
1091 g_string_append_printf(string, "[ %s ]", str); | 1133 g_string_append_printf(string, "[ %s ]", str); |
1092 } | 1134 } |
1093 | 1135 |
1094 purple_conversation_write(conv, NULL, string->str, | 1136 purple_conversation_write(conv, NULL, string->str, |
1095 PURPLE_MESSAGE_SYSTEM, time(NULL)); | 1137 PURPLE_MESSAGE_SYSTEM, time(NULL)); |
1098 | 1140 |
1099 for (; users; users = users->next) | 1141 for (; users; users = users->next) |
1100 { | 1142 { |
1101 PurpleConvChatBuddy *cbuddy = users->data; | 1143 PurpleConvChatBuddy *cbuddy = users->data; |
1102 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); | 1144 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); |
1103 gnt_entry_add_suggest(entry, cbuddy->name); | 1145 gnt_entry_add_suggest(entry, purple_conv_chat_cb_get_name(cbuddy)); |
1104 gnt_entry_add_suggest(entry, cbuddy->alias); | 1146 gnt_entry_add_suggest(entry, purple_conv_chat_cb_get_alias(cbuddy)); |
1105 gnt_tree_add_row_after(tree, g_strdup(cbuddy->name), | 1147 gnt_tree_add_row_after(tree, g_strdup(purple_conv_chat_cb_get_name(cbuddy)), |
1106 gnt_tree_create_row(tree, chat_flag_text(cbuddy->flags), cbuddy->alias), NULL, NULL); | 1148 gnt_tree_create_row(tree, chat_flag_text(purple_conv_chat_cb_get_flags(cbuddy)), purple_conv_chat_cb_get_alias(cbuddy)), NULL, NULL); |
1107 } | 1149 } |
1108 } | 1150 } |
1109 | 1151 |
1110 static void | 1152 static void |
1111 finch_chat_rename_user(PurpleConversation *conv, const char *old, const char *new_n, const char *new_a) | 1153 finch_chat_rename_user(PurpleConversation *conv, const char *old, const char *new_n, const char *new_a) |
1112 { | 1154 { |
1113 /* Update the name for string completion */ | 1155 /* Update the name for string completion */ |
1114 FinchConv *ggc = FINCH_GET_DATA(conv); | 1156 FinchConv *ggc = FINCH_CONV(conv); |
1115 GntEntry *entry = GNT_ENTRY(ggc->entry); | 1157 GntEntry *entry = GNT_ENTRY(ggc->entry); |
1116 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); | 1158 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); |
1117 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), new_n); | 1159 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), new_n); |
1118 | 1160 |
1119 gnt_entry_remove_suggest(entry, old); | 1161 gnt_entry_remove_suggest(entry, old); |
1120 gnt_tree_remove(tree, (gpointer)old); | 1162 gnt_tree_remove(tree, (gpointer)old); |
1121 | 1163 |
1122 gnt_entry_add_suggest(entry, new_n); | 1164 gnt_entry_add_suggest(entry, new_n); |
1123 gnt_entry_add_suggest(entry, new_a); | 1165 gnt_entry_add_suggest(entry, new_a); |
1124 gnt_tree_add_row_after(tree, g_strdup(new_n), | 1166 gnt_tree_add_row_after(tree, g_strdup(new_n), |
1125 gnt_tree_create_row(tree, chat_flag_text(cb->flags), new_a), NULL, NULL); | 1167 gnt_tree_create_row(tree, chat_flag_text(purple_conv_chat_cb_get_flags(cb)), new_a), NULL, NULL); |
1126 } | 1168 } |
1127 | 1169 |
1128 static void | 1170 static void |
1129 finch_chat_remove_users(PurpleConversation *conv, GList *list) | 1171 finch_chat_remove_users(PurpleConversation *conv, GList *list) |
1130 { | 1172 { |
1131 /* Remove the name from string completion */ | 1173 /* Remove the name from string completion */ |
1132 FinchConv *ggc = FINCH_GET_DATA(conv); | 1174 FinchConv *ggc = FINCH_CONV(conv); |
1133 GntEntry *entry = GNT_ENTRY(ggc->entry); | 1175 GntEntry *entry = GNT_ENTRY(ggc->entry); |
1134 for (; list; list = list->next) { | 1176 for (; list; list = list->next) { |
1135 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); | 1177 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); |
1136 gnt_entry_remove_suggest(entry, list->data); | 1178 gnt_entry_remove_suggest(entry, list->data); |
1137 gnt_tree_remove(tree, list->data); | 1179 gnt_tree_remove(tree, list->data); |
1140 | 1182 |
1141 static void | 1183 static void |
1142 finch_chat_update_user(PurpleConversation *conv, const char *user) | 1184 finch_chat_update_user(PurpleConversation *conv, const char *user) |
1143 { | 1185 { |
1144 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), user); | 1186 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), user); |
1145 FinchConv *ggc = FINCH_GET_DATA(conv); | 1187 FinchConv *ggc = FINCH_CONV(conv); |
1146 gnt_tree_change_text(GNT_TREE(ggc->u.chat->userlist), (gpointer)user, 0, chat_flag_text(cb->flags)); | 1188 gnt_tree_change_text(GNT_TREE(ggc->u.chat->userlist), (gpointer)user, 0, chat_flag_text(purple_conv_chat_cb_get_flags(cb))); |
1147 } | 1189 } |
1148 | 1190 |
1149 static void | 1191 static void |
1150 finch_conv_present(PurpleConversation *conv) | 1192 finch_conv_present(PurpleConversation *conv) |
1151 { | 1193 { |
1366 } | 1408 } |
1367 | 1409 |
1368 static PurpleCmdRet | 1410 static PurpleCmdRet |
1369 users_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data) | 1411 users_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data) |
1370 { | 1412 { |
1371 FinchConv *fc = FINCH_GET_DATA(conv); | 1413 FinchConv *fc = FINCH_CONV(conv); |
1372 FinchConvChat *ch; | 1414 FinchConvChat *ch; |
1373 if (!fc) | 1415 if (!fc) |
1374 return PURPLE_CMD_RET_FAILED; | 1416 return PURPLE_CMD_RET_FAILED; |
1375 | 1417 |
1376 ch = fc->u.chat; | 1418 ch = fc->u.chat; |
1473 PURPLE_CALLBACK(update_buddy_typing), NULL); | 1515 PURPLE_CALLBACK(update_buddy_typing), NULL); |
1474 purple_signal_connect(purple_conversations_get_handle(), "chat-left", finch_conv_get_handle(), | 1516 purple_signal_connect(purple_conversations_get_handle(), "chat-left", finch_conv_get_handle(), |
1475 PURPLE_CALLBACK(chat_left_cb), NULL); | 1517 PURPLE_CALLBACK(chat_left_cb), NULL); |
1476 purple_signal_connect(purple_conversations_get_handle(), "cleared-message-history", finch_conv_get_handle(), | 1518 purple_signal_connect(purple_conversations_get_handle(), "cleared-message-history", finch_conv_get_handle(), |
1477 PURPLE_CALLBACK(cleared_message_history_cb), NULL); | 1519 PURPLE_CALLBACK(cleared_message_history_cb), NULL); |
1520 purple_signal_connect(purple_conversations_get_handle(), "conversation-updated", finch_conv_get_handle(), | |
1521 PURPLE_CALLBACK(conv_updated), NULL); | |
1478 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_conv_get_handle(), | 1522 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-on", finch_conv_get_handle(), |
1479 PURPLE_CALLBACK(buddy_signed_on_off), NULL); | 1523 PURPLE_CALLBACK(buddy_signed_on_off), NULL); |
1480 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_conv_get_handle(), | 1524 purple_signal_connect(purple_blist_get_handle(), "buddy-signed-off", finch_conv_get_handle(), |
1481 PURPLE_CALLBACK(buddy_signed_on_off), NULL); | 1525 PURPLE_CALLBACK(buddy_signed_on_off), NULL); |
1482 purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_conv_get_handle(), | 1526 purple_signal_connect(purple_connections_get_handle(), "signed-on", finch_conv_get_handle(), |
1492 purple_signals_disconnect_by_handle(finch_conv_get_handle()); | 1536 purple_signals_disconnect_by_handle(finch_conv_get_handle()); |
1493 } | 1537 } |
1494 | 1538 |
1495 void finch_conversation_set_active(PurpleConversation *conv) | 1539 void finch_conversation_set_active(PurpleConversation *conv) |
1496 { | 1540 { |
1497 FinchConv *ggconv = FINCH_GET_DATA(conv); | 1541 FinchConv *ggconv = FINCH_CONV(conv); |
1498 PurpleAccount *account; | 1542 PurpleAccount *account; |
1499 char *title; | 1543 char *title; |
1500 | 1544 |
1501 g_return_if_fail(ggconv); | 1545 g_return_if_fail(ggconv); |
1502 g_return_if_fail(g_list_find(ggconv->list, conv)); | 1546 g_return_if_fail(g_list_find(ggconv->list, conv)); |
1511 g_free(title); | 1555 g_free(title); |
1512 } | 1556 } |
1513 | 1557 |
1514 void finch_conversation_set_info_widget(PurpleConversation *conv, GntWidget *widget) | 1558 void finch_conversation_set_info_widget(PurpleConversation *conv, GntWidget *widget) |
1515 { | 1559 { |
1516 FinchConv *fc = FINCH_GET_DATA(conv); | 1560 FinchConv *fc = FINCH_CONV(conv); |
1517 int height, width; | 1561 int height, width; |
1518 | 1562 |
1519 gnt_box_remove_all(GNT_BOX(fc->info)); | 1563 gnt_box_remove_all(GNT_BOX(fc->info)); |
1520 | 1564 |
1521 if (widget) { | 1565 if (widget) { |