void GeneralMenu::fields_ok_cb(PurpleRequestFields *fields) { LOG->debug( "fields_ok_cb: text0=%s, text1=%s, int0=%d, bool0=%d, choice0=%d\n", purple_request_fields_get_string(fields, "text0"), purple_request_fields_get_string(fields, "text1"), purple_request_fields_get_integer(fields, "int0"), purple_request_fields_get_bool(fields, "bool0"), purple_request_fields_get_choice(fields, "choice0")); for (GList *list = purple_request_field_list_get_selected( purple_request_fields_get_field(fields, "list0")); list; list = list->next) LOG->debug("fields_ok_cb: list0=%s", reinterpret_cast<const char*>(list->data)); for (GList *list = purple_request_field_list_get_selected( purple_request_fields_get_field(fields, "list1")); list; list = list->next) LOG->debug("fields_ok_cb: list1=%s", reinterpret_cast<const char*>(list->data)); PurpleAccount *account = purple_request_fields_get_account(fields, "account0"); LOG->debug("fields_ok_cb: account0=[%s] %s", purple_account_get_protocol_name(account), purple_account_get_username(account)); }
static void lh_migrate_target_request_cb(void *ignored, PurpleRequestFields *fields) { /* grab the target account from the request field */ target_account = purple_request_fields_get_account(fields, "migrate_target_acct"); /* now build GLists of the buddies and corresponding groups */ lh_migrate_build_lists(); /* add the buddies to the Purple buddy list */ lh_util_add_to_blist(buddies, groups); /* add the buddies to the server-side list */ #if PURPLE_VERSION_CHECK(3,0,0) purple_account_add_buddies(target_account, buddies, NULL); #else purple_account_add_buddies(target_account, buddies); #endif /* now free the lists that were created */ g_list_free(buddies); g_list_free(groups); return; }
void BuddyList::add_buddy_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 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; } 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_buddy(account, name, group, alias); return; } PurpleGroup *g = purple_find_group(group); if (!g) { g = purple_group_new(group); purple_blist_add_group(g, NULL); } PurpleBuddy *b = purple_find_buddy_in_group(account, name, g); if (b) { LOG->Message(_("Specified buddy is already in the list.")); return; } if (alias && !alias[0]) alias = NULL; b = purple_buddy_new(account, name, alias); purple_blist_add_buddy(b, NULL, g, NULL); purple_account_add_buddy(account, b); }
static void lh_migrate_source_request_cb(void *ignored, PurpleRequestFields *fields) { PurpleRequestFields *request; PurpleRequestFieldGroup *group; PurpleRequestField *field; source_account = purple_request_fields_get_account(fields, "migrate_source_acct"); valid_target_prpl_id = purple_account_get_protocol_id(source_account); /* It seems Purple is super-picky about the order of these first three calls */ /* create a request */ request = purple_request_fields_new(); /* now create a field group */ group = purple_request_field_group_new(NULL); /* and add that group to the request created above */ purple_request_fields_add_group(request, group); /* create a field */ field = purple_request_field_account_new("migrate_target_acct", _("Account"), NULL); /* mark the field as required */ purple_request_field_set_required(field, TRUE); /* filter this list so that only accounts with the same prpl as the * source account can be chosen as a destination */ purple_request_field_account_set_filter(field, lh_migrate_filter); /* add the field to the group created above */ purple_request_field_group_add_field(group, field); /* and finally we can create the request */ purple_request_fields(purple_get_blist(), _("Listhandler - Copying"), _("Choose the account to add buddies to:"), NULL, request, _("_Add"), G_CALLBACK(lh_migrate_target_request_cb), _("_Cancel"), NULL, NULL, NULL, NULL, NULL); return; }
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); } }