comparison finch/gntblist.c @ 22214:2b426862ffbf

Add accessor and update finch to not touch the internals of PurpleConnection.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sat, 26 Jan 2008 21:13:46 +0000
parents 16ff37f64e29
children ad357ca94de9
comparison
equal deleted inserted replaced
22213:16ff37f64e29 22214:2b426862ffbf
627 PurpleChat *chat; 627 PurpleChat *chat;
628 PurpleGroup *grp; 628 PurpleGroup *grp;
629 GHashTable *hash = NULL; 629 GHashTable *hash = NULL;
630 PurpleConnection *gc; 630 PurpleConnection *gc;
631 gboolean autojoin; 631 gboolean autojoin;
632 PurplePluginProtocolInfo *info;
632 633
633 account = purple_request_fields_get_account(allfields, "account"); 634 account = purple_request_fields_get_account(allfields, "account");
634 name = purple_request_fields_get_string(allfields, "name"); 635 name = purple_request_fields_get_string(allfields, "name");
635 alias = purple_request_fields_get_string(allfields, "alias"); 636 alias = purple_request_fields_get_string(allfields, "alias");
636 group = purple_request_fields_get_string(allfields, "group"); 637 group = purple_request_fields_get_string(allfields, "group");
637 autojoin = purple_request_fields_get_bool(allfields, "autojoin"); 638 autojoin = purple_request_fields_get_bool(allfields, "autojoin");
638 639
639 if (!purple_account_is_connected(account) || !name || !*name) 640 if (!purple_account_is_connected(account) || !name || !*name)
640 return; 641 return;
641 642
642 if (!group || !*group) 643 if (!group || !*group)
643 group = _("Chats"); 644 group = _("Chats");
644 645
645 gc = purple_account_get_connection(account); 646 gc = purple_account_get_connection(account);
646 647 info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
647 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) 648 if (info->chat_info_defaults != NULL)
648 hash = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, name); 649 hash = info->chat_info_defaults(gc, name);
649 650
650 chat = purple_chat_new(account, name, hash); 651 chat = purple_chat_new(account, name, hash);
651 652
652 if (chat != NULL) { 653 if (chat != NULL) {
653 if ((grp = purple_find_group(group)) == NULL) { 654 if ((grp = purple_find_group(group)) == NULL) {
654 grp = purple_group_new(group); 655 grp = purple_group_new(group);
986 987
987 static void 988 static void
988 append_proto_menu(GntMenu *menu, PurpleConnection *gc, PurpleBlistNode *node) 989 append_proto_menu(GntMenu *menu, PurpleConnection *gc, PurpleBlistNode *node)
989 { 990 {
990 GList *list; 991 GList *list;
991 PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); 992 PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
992 993
993 if(!prpl_info || !prpl_info->blist_node_menu) 994 if(!prpl_info || !prpl_info->blist_node_menu)
994 return; 995 return;
995 996
996 for(list = prpl_info->blist_node_menu(node); list; 997 for(list = prpl_info->blist_node_menu(node); list;
1046 PurpleConnection *gc; 1047 PurpleConnection *gc;
1047 1048
1048 purple_request_fields_add_group(fields, group); 1049 purple_request_fields_add_group(fields, group);
1049 1050
1050 gc = purple_account_get_connection(chat->account); 1051 gc = purple_account_get_connection(chat->account);
1051 parts = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info(gc); 1052 parts = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc))->chat_info(gc);
1052 1053
1053 for (iter = parts; iter; iter = iter->next) { 1054 for (iter = parts; iter; iter = iter->next) {
1054 pce = iter->data; 1055 pce = iter->data;
1055 if (pce->is_int) { 1056 if (pce->is_int) {
1056 int val; 1057 int val;
1167 create_buddy_menu(GntMenu *menu, PurpleBuddy *buddy) 1168 create_buddy_menu(GntMenu *menu, PurpleBuddy *buddy)
1168 { 1169 {
1169 PurplePluginProtocolInfo *prpl_info; 1170 PurplePluginProtocolInfo *prpl_info;
1170 PurpleConnection *gc = purple_account_get_connection(buddy->account); 1171 PurpleConnection *gc = purple_account_get_connection(buddy->account);
1171 1172
1172 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); 1173 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
1173 if (prpl_info && prpl_info->get_info) 1174 if (prpl_info && prpl_info->get_info)
1174 { 1175 {
1175 add_custom_action(menu, _("Get Info"), 1176 add_custom_action(menu, _("Get Info"),
1176 PURPLE_CALLBACK(finch_blist_get_buddy_info_cb), buddy); 1177 PURPLE_CALLBACK(finch_blist_get_buddy_info_cb), buddy);
1177 } 1178 }
2417 PurpleConnection *gc = purple_account_get_connection(account); 2418 PurpleConnection *gc = purple_account_get_connection(account);
2418 PurplePlugin *prpl; 2419 PurplePlugin *prpl;
2419 2420
2420 if (!gc || !PURPLE_CONNECTION_IS_CONNECTED(gc)) 2421 if (!gc || !PURPLE_CONNECTION_IS_CONNECTED(gc))
2421 continue; 2422 continue;
2422 prpl = gc->prpl; 2423 prpl = purple_connection_get_prpl(gc);
2423 2424
2424 if (PURPLE_PLUGIN_HAS_ACTIONS(prpl)) { 2425 if (PURPLE_PLUGIN_HAS_ACTIONS(prpl)) {
2425 item = gnt_menuitem_new(purple_account_get_username(account)); 2426 item = gnt_menuitem_new(purple_account_get_username(account));
2426 gnt_menu_add_item(GNT_MENU(sub), item); 2427 gnt_menu_add_item(GNT_MENU(sub), item);
2427 build_plugin_actions(item, prpl, gc); 2428 build_plugin_actions(item, prpl, gc);
2550 name = purple_request_fields_get_string(fields, "chat"); 2551 name = purple_request_fields_get_string(fields, "chat");
2551 2552
2552 if (!purple_account_is_connected(account)) 2553 if (!purple_account_is_connected(account))
2553 return; 2554 return;
2554 2555
2555 gc = purple_account_get_connection(account); 2556 gc = purple_account_get_connection(account);
2556 purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name); 2557 purple_conversation_new(PURPLE_CONV_TYPE_CHAT, account, name);
2557 chat = purple_blist_find_chat(account, name); 2558 chat = purple_blist_find_chat(account, name);
2558 if (chat == NULL) { 2559 if (chat == NULL) {
2559 if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults != NULL) 2560 PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
2560 hash = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->chat_info_defaults(gc, name); 2561 if (info->chat_info_defaults != NULL)
2562 hash = info->chat_info_defaults(gc, name);
2561 } else { 2563 } else {
2562 hash = chat->components; 2564 hash = chat->components;
2563 } 2565 }
2564 serv_join_chat(gc, hash); 2566 serv_join_chat(gc, hash);
2565 if (chat == NULL && hash != NULL) 2567 if (chat == NULL && hash != NULL)