static void fl_add_chat(GntWidget *button, gpointer null) { char *name; PurpleRoomlistRoom *room = gnt_tree_get_selection_data(GNT_TREE(froomlist.tree)); PurpleConnection *gc = purple_account_get_connection(froomlist.account); PurplePluginProtocolInfo *prpl_info = NULL; if (gc == NULL || room == NULL) return; prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc)); if(prpl_info != NULL && prpl_info->roomlist_room_serialize) name = prpl_info->roomlist_room_serialize(room); else name = g_strdup(purple_roomlist_room_get_name(room)); purple_blist_request_add_chat(froomlist.account, NULL, NULL, name); g_free(name); }
void GeneralMenu::openAddChatRequest(CppConsUI::Button& /*activator*/) { purple_blist_request_add_chat(NULL, NULL, NULL, NULL); close(); }
void BuddyList::add_chat_ok_cb(PurpleRequestFields *fields) { PurpleAccount *account = purple_request_fields_get_account(fields, "account"); const char *name = purple_request_fields_get_string(fields, "name"); const char *alias = purple_request_fields_get_string(fields, "alias"); int selected = purple_request_fields_get_choice(fields, "group"); GList *list = purple_request_field_choice_get_labels( purple_request_fields_get_field(fields, "group")); const char *group = reinterpret_cast<const char*>(g_list_nth_data(list, selected)); bool autojoin = purple_request_fields_get_bool(fields, "autojoin"); bool err = false; if (!account) { LOG->Message(_("No account specified.")); err = true; } else if (!purple_account_is_connected(account)) { LOG->Message(_("Selected account is not connected.")); err = true; } else { PurpleConnection *gc = purple_account_get_connection(account); PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO( purple_connection_get_prpl(gc)); if (!info->join_chat) { LOG->Message(_("This protocol does not support chat rooms.")); account = NULL; err = true; } } if (!name || !name[0]) { LOG->Message(_("No buddy name specified.")); err = true; } if (!group || !group[0]) { LOG->Message(_("No group name specified.")); err = true; } if (err) { purple_blist_request_add_chat(account, purple_find_group(group), alias, name); return; } PurpleConnection *gc = purple_account_get_connection(account); PurplePluginProtocolInfo *info = PURPLE_PLUGIN_PROTOCOL_INFO( purple_connection_get_prpl(gc)); GHashTable *hash = NULL; if (info->chat_info_defaults) hash = info->chat_info_defaults(gc, name); PurpleChat *chat = purple_chat_new(account, name, hash); if (chat) { PurpleGroup* g = purple_find_group(group); if (!g) { g = purple_group_new(group); purple_blist_add_group(g, NULL); } purple_blist_add_chat(chat, g, NULL); if (alias && alias[0]) purple_blist_alias_chat(chat, alias); purple_blist_node_set_bool(reinterpret_cast<PurpleBlistNode*>(chat), PACKAGE_NAME "-autojoin", autojoin); } }