Mercurial > pidgin
comparison finch/gntconv.c @ 22217:ad357ca94de9
We will probably eventually use purple_object_[get|set]_ui_data. Until then, this will do.
| author | Sadrul Habib Chowdhury <imadil@gmail.com> |
|---|---|
| date | Sat, 26 Jan 2008 22:33:08 +0000 |
| parents | 07c2b8fa7bb4 |
| children | 797230b3e48e |
comparison
equal
deleted
inserted
replaced
| 22216:b99d6d21cd79 | 22217:ad357ca94de9 |
|---|---|
| 280 | 280 |
| 281 if (!conv) | 281 if (!conv) |
| 282 return; | 282 return; |
| 283 | 283 |
| 284 im = PURPLE_CONV_IM(conv); | 284 im = PURPLE_CONV_IM(conv); |
| 285 ggc = conv->ui_data; | 285 ggc = FINCH_GET_DATA(conv); |
| 286 | 286 |
| 287 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { | 287 if (purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
| 288 int scroll; | 288 int scroll; |
| 289 str = get_conversation_title(conv, account); | 289 str = get_conversation_title(conv, account); |
| 290 title = g_strdup_printf(_("%s [%s]"), str, | 290 title = g_strdup_printf(_("%s [%s]"), str, |
| 319 buddy_signed_on_off(PurpleBuddy *buddy, gpointer null) | 319 buddy_signed_on_off(PurpleBuddy *buddy, gpointer null) |
| 320 { | 320 { |
| 321 PurpleConversation *conv = find_conv_with_contact(buddy->account, buddy->name); | 321 PurpleConversation *conv = find_conv_with_contact(buddy->account, buddy->name); |
| 322 if (conv == NULL) | 322 if (conv == NULL) |
| 323 return; | 323 return; |
| 324 generate_send_to_menu(conv->ui_data); | 324 generate_send_to_menu(FINCH_GET_DATA(conv)); |
| 325 } | 325 } |
| 326 | 326 |
| 327 static void | 327 static void |
| 328 account_signed_on_off(PurpleConnection *gc, gpointer null) | 328 account_signed_on_off(PurpleConnection *gc, gpointer null) |
| 329 { | 329 { |
| 331 while (list) { | 331 while (list) { |
| 332 PurpleConversation *conv = list->data; | 332 PurpleConversation *conv = list->data; |
| 333 PurpleConversation *cc = find_conv_with_contact( | 333 PurpleConversation *cc = find_conv_with_contact( |
| 334 purple_conversation_get_account(conv), purple_conversation_get_name(conv)); | 334 purple_conversation_get_account(conv), purple_conversation_get_name(conv)); |
| 335 if (cc) | 335 if (cc) |
| 336 generate_send_to_menu(cc->ui_data); | 336 generate_send_to_menu(FINCH_GET_DATA(cc)); |
| 337 list = list->next; | 337 list = list->next; |
| 338 } | 338 } |
| 339 | 339 |
| 340 if (PURPLE_CONNECTION_IS_CONNECTED(gc)) { | 340 if (PURPLE_CONNECTION_IS_CONNECTED(gc)) { |
| 341 /* We just signed on. Let's see if there's any chat that we have open, | 341 /* We just signed on. Let's see if there's any chat that we have open, |
| 608 } | 608 } |
| 609 | 609 |
| 610 static void | 610 static void |
| 611 finch_create_conversation(PurpleConversation *conv) | 611 finch_create_conversation(PurpleConversation *conv) |
| 612 { | 612 { |
| 613 FinchConv *ggc = conv->ui_data; | 613 FinchConv *ggc = FINCH_GET_DATA(conv); |
| 614 char *title; | 614 char *title; |
| 615 PurpleConversationType type; | 615 PurpleConversationType type; |
| 616 PurpleConversation *cc; | 616 PurpleConversation *cc; |
| 617 PurpleAccount *account; | 617 PurpleAccount *account; |
| 618 PurpleBlistNode *convnode = NULL; | 618 PurpleBlistNode *convnode = NULL; |
| 620 if (ggc) | 620 if (ggc) |
| 621 return; | 621 return; |
| 622 | 622 |
| 623 account = purple_conversation_get_account(conv); | 623 account = purple_conversation_get_account(conv); |
| 624 cc = find_conv_with_contact(account, purple_conversation_get_name(conv)); | 624 cc = find_conv_with_contact(account, purple_conversation_get_name(conv)); |
| 625 if (cc && cc->ui_data) | 625 if (cc && FINCH_GET_DATA(cc)) |
| 626 ggc = cc->ui_data; | 626 ggc = FINCH_GET_DATA(cc); |
| 627 else | 627 else |
| 628 ggc = g_new0(FinchConv, 1); | 628 ggc = g_new0(FinchConv, 1); |
| 629 | 629 |
| 630 /* Each conversation with the same person will have the same logging setting */ | 630 /* Each conversation with the same person will have the same logging setting */ |
| 631 if (ggc->list) { | 631 if (ggc->list) { |
| 633 purple_conversation_is_logging(ggc->list->data)); | 633 purple_conversation_is_logging(ggc->list->data)); |
| 634 } | 634 } |
| 635 | 635 |
| 636 ggc->list = g_list_prepend(ggc->list, conv); | 636 ggc->list = g_list_prepend(ggc->list, conv); |
| 637 ggc->active_conv = conv; | 637 ggc->active_conv = conv; |
| 638 conv->ui_data = ggc; | 638 FINCH_SET_DATA(conv, ggc); |
| 639 | 639 |
| 640 if (cc && cc->ui_data) { | 640 if (cc && FINCH_GET_DATA(cc)) { |
| 641 finch_conversation_set_active(conv); | 641 finch_conversation_set_active(conv); |
| 642 return; | 642 return; |
| 643 } | 643 } |
| 644 | 644 |
| 645 type = purple_conversation_get_type(conv); | 645 type = purple_conversation_get_type(conv); |
| 736 | 736 |
| 737 static void | 737 static void |
| 738 finch_destroy_conversation(PurpleConversation *conv) | 738 finch_destroy_conversation(PurpleConversation *conv) |
| 739 { | 739 { |
| 740 /* do stuff here */ | 740 /* do stuff here */ |
| 741 FinchConv *ggc = conv->ui_data; | 741 FinchConv *ggc = FINCH_GET_DATA(conv); |
| 742 ggc->list = g_list_remove(ggc->list, conv); | 742 ggc->list = g_list_remove(ggc->list, conv); |
| 743 if (ggc->list && conv == ggc->active_conv) | 743 if (ggc->list && conv == ggc->active_conv) |
| 744 ggc->active_conv = ggc->list->data; | 744 ggc->active_conv = ggc->list->data; |
| 745 | 745 |
| 746 if (ggc->list == NULL) { | 746 if (ggc->list == NULL) { |
| 753 | 753 |
| 754 static void | 754 static void |
| 755 finch_write_common(PurpleConversation *conv, const char *who, const char *message, | 755 finch_write_common(PurpleConversation *conv, const char *who, const char *message, |
| 756 PurpleMessageFlags flags, time_t mtime) | 756 PurpleMessageFlags flags, time_t mtime) |
| 757 { | 757 { |
| 758 FinchConv *ggconv = conv->ui_data; | 758 FinchConv *ggconv = FINCH_GET_DATA(conv); |
| 759 char *strip, *newline; | 759 char *strip, *newline; |
| 760 GntTextFormatFlags fl = 0; | 760 GntTextFormatFlags fl = 0; |
| 761 int pos; | 761 int pos; |
| 762 | 762 |
| 763 g_return_if_fail(ggconv != NULL); | 763 g_return_if_fail(ggconv != NULL); |
| 906 } | 906 } |
| 907 | 907 |
| 908 static void | 908 static void |
| 909 finch_chat_add_users(PurpleConversation *conv, GList *users, gboolean new_arrivals) | 909 finch_chat_add_users(PurpleConversation *conv, GList *users, gboolean new_arrivals) |
| 910 { | 910 { |
| 911 FinchConv *ggc = conv->ui_data; | 911 FinchConv *ggc = FINCH_GET_DATA(conv); |
| 912 GntEntry *entry = GNT_ENTRY(ggc->entry); | 912 GntEntry *entry = GNT_ENTRY(ggc->entry); |
| 913 | 913 |
| 914 if (!new_arrivals) | 914 if (!new_arrivals) |
| 915 { | 915 { |
| 916 /* Print the list of users in the room */ | 916 /* Print the list of users in the room */ |
| 945 | 945 |
| 946 static void | 946 static void |
| 947 finch_chat_rename_user(PurpleConversation *conv, const char *old, const char *new_n, const char *new_a) | 947 finch_chat_rename_user(PurpleConversation *conv, const char *old, const char *new_n, const char *new_a) |
| 948 { | 948 { |
| 949 /* Update the name for string completion */ | 949 /* Update the name for string completion */ |
| 950 FinchConv *ggc = conv->ui_data; | 950 FinchConv *ggc = FINCH_GET_DATA(conv); |
| 951 GntEntry *entry = GNT_ENTRY(ggc->entry); | 951 GntEntry *entry = GNT_ENTRY(ggc->entry); |
| 952 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); | 952 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); |
| 953 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), new_n); | 953 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), new_n); |
| 954 | 954 |
| 955 gnt_entry_remove_suggest(entry, old); | 955 gnt_entry_remove_suggest(entry, old); |
| 963 | 963 |
| 964 static void | 964 static void |
| 965 finch_chat_remove_users(PurpleConversation *conv, GList *list) | 965 finch_chat_remove_users(PurpleConversation *conv, GList *list) |
| 966 { | 966 { |
| 967 /* Remove the name from string completion */ | 967 /* Remove the name from string completion */ |
| 968 FinchConv *ggc = conv->ui_data; | 968 FinchConv *ggc = FINCH_GET_DATA(conv); |
| 969 GntEntry *entry = GNT_ENTRY(ggc->entry); | 969 GntEntry *entry = GNT_ENTRY(ggc->entry); |
| 970 for (; list; list = list->next) { | 970 for (; list; list = list->next) { |
| 971 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); | 971 GntTree *tree = GNT_TREE(ggc->u.chat->userlist); |
| 972 gnt_entry_remove_suggest(entry, list->data); | 972 gnt_entry_remove_suggest(entry, list->data); |
| 973 gnt_tree_remove(tree, list->data); | 973 gnt_tree_remove(tree, list->data); |
| 976 | 976 |
| 977 static void | 977 static void |
| 978 finch_chat_update_user(PurpleConversation *conv, const char *user) | 978 finch_chat_update_user(PurpleConversation *conv, const char *user) |
| 979 { | 979 { |
| 980 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), user); | 980 PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), user); |
| 981 FinchConv *ggc = conv->ui_data; | 981 FinchConv *ggc = FINCH_GET_DATA(conv); |
| 982 gnt_tree_change_text(GNT_TREE(ggc->u.chat->userlist), (gpointer)user, 0, chat_flag_text(cb->flags)); | 982 gnt_tree_change_text(GNT_TREE(ggc->u.chat->userlist), (gpointer)user, 0, chat_flag_text(cb->flags)); |
| 983 } | 983 } |
| 984 | 984 |
| 985 static void | 985 static void |
| 986 finch_conv_present(PurpleConversation *conv) | 986 finch_conv_present(PurpleConversation *conv) |
| 1085 /* Xerox */ | 1085 /* Xerox */ |
| 1086 static PurpleCmdRet | 1086 static PurpleCmdRet |
| 1087 clear_command_cb(PurpleConversation *conv, | 1087 clear_command_cb(PurpleConversation *conv, |
| 1088 const char *cmd, char **args, char **error, void *data) | 1088 const char *cmd, char **args, char **error, void *data) |
| 1089 { | 1089 { |
| 1090 FinchConv *ggconv = conv->ui_data; | 1090 FinchConv *ggconv = FINCH_GET_DATA(conv); |
| 1091 gnt_text_view_clear(GNT_TEXT_VIEW(ggconv->tv)); | 1091 gnt_text_view_clear(GNT_TEXT_VIEW(ggconv->tv)); |
| 1092 purple_conversation_clear_message_history(conv); | 1092 purple_conversation_clear_message_history(conv); |
| 1093 return PURPLE_CMD_STATUS_OK; | 1093 return PURPLE_CMD_STATUS_OK; |
| 1094 } | 1094 } |
| 1095 | 1095 |
| 1142 } | 1142 } |
| 1143 | 1143 |
| 1144 static PurpleCmdRet | 1144 static PurpleCmdRet |
| 1145 users_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data) | 1145 users_command_cb(PurpleConversation *conv, const char *cmd, char **args, char **error, gpointer data) |
| 1146 { | 1146 { |
| 1147 FinchConv *fc = conv->ui_data; | 1147 FinchConv *fc = FINCH_GET_DATA(conv); |
| 1148 FinchConvChat *ch; | 1148 FinchConvChat *ch; |
| 1149 if (!fc) | 1149 if (!fc) |
| 1150 return PURPLE_CMD_STATUS_FAILED; | 1150 return PURPLE_CMD_STATUS_FAILED; |
| 1151 | 1151 |
| 1152 ch = fc->u.chat; | 1152 ch = fc->u.chat; |
| 1246 purple_signals_disconnect_by_handle(finch_conv_get_handle()); | 1246 purple_signals_disconnect_by_handle(finch_conv_get_handle()); |
| 1247 } | 1247 } |
| 1248 | 1248 |
| 1249 void finch_conversation_set_active(PurpleConversation *conv) | 1249 void finch_conversation_set_active(PurpleConversation *conv) |
| 1250 { | 1250 { |
| 1251 FinchConv *ggconv = conv->ui_data; | 1251 FinchConv *ggconv = FINCH_GET_DATA(conv); |
| 1252 PurpleAccount *account; | 1252 PurpleAccount *account; |
| 1253 char *title; | 1253 char *title; |
| 1254 | 1254 |
| 1255 g_return_if_fail(ggconv); | 1255 g_return_if_fail(ggconv); |
| 1256 g_return_if_fail(g_list_find(ggconv->list, conv)); | 1256 g_return_if_fail(g_list_find(ggconv->list, conv)); |
| 1262 g_free(title); | 1262 g_free(title); |
| 1263 } | 1263 } |
| 1264 | 1264 |
| 1265 void finch_conversation_set_info_widget(PurpleConversation *conv, GntWidget *widget) | 1265 void finch_conversation_set_info_widget(PurpleConversation *conv, GntWidget *widget) |
| 1266 { | 1266 { |
| 1267 FinchConv *fc = conv->ui_data; | 1267 FinchConv *fc = FINCH_GET_DATA(conv); |
| 1268 int height, width; | 1268 int height, width; |
| 1269 | 1269 |
| 1270 gnt_box_remove_all(GNT_BOX(fc->info)); | 1270 gnt_box_remove_all(GNT_BOX(fc->info)); |
| 1271 | 1271 |
| 1272 if (widget) { | 1272 if (widget) { |
