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 auth_pass_cb(PurpleConnection *gc, PurpleRequestFields *fields) { PurpleAccount *account; JabberStream *js; const char *entry; gboolean remember; /* The password prompt dialog doesn't get disposed if the account disconnects */ if (!PURPLE_CONNECTION_IS_VALID(gc)) return; account = purple_connection_get_account(gc); js = purple_connection_get_protocol_data(gc); entry = purple_request_fields_get_string(fields, "password"); remember = purple_request_fields_get_bool(fields, "remember"); if (!entry || !*entry) { purple_notify_error(account, NULL, _("Password is required to sign on."), NULL); return; } if (remember) purple_account_set_remember_password(account, TRUE); purple_account_set_password(account, entry); /* Rebuild our callbacks as we now have a password to offer */ jabber_sasl_build_callbacks(js); /* Restart our negotiation */ start_cyrus_wrapper(js); }
static void auth_old_pass_cb(PurpleConnection *gc, PurpleRequestFields *fields) { PurpleAccount *account; JabberStream *js; const char *entry; gboolean remember; /* TODO: the password prompt dialog doesn't get disposed if the account disconnects */ PURPLE_ASSERT_CONNECTION_IS_VALID(gc); account = purple_connection_get_account(gc); js = purple_connection_get_protocol_data(gc); entry = purple_request_fields_get_string(fields, "password"); remember = purple_request_fields_get_bool(fields, "remember"); if (!entry || !*entry) { purple_notify_error(account, NULL, _("Password is required to sign on."), NULL, purple_request_cpar_from_connection(gc)); return; } if (remember) purple_account_set_remember_password(account, TRUE); purple_account_set_password(account, entry, NULL, NULL); /* Restart our connection */ jabber_auth_start_old(js); }
static void _purple_events_ui_events_selection(PurpleBlistNode *node, PurpleRequestFields *request) { guint i; gboolean v; for ( i = 0 ; _purple_events_ui_events[i] != NULL ; ++i ) { v = purple_request_fields_get_bool(request, _purple_events_ui_events[i]); purple_blist_node_set_int(node, _purple_events_ui_events[i], v ? 1 : -1); } purple_blist_node_set_int(node, "events", 1); }
/* parse fields and send info packet */ static void info_modify_ok_cb(modify_info_request *info_request, PurpleRequestFields *fields) { PurpleConnection *gc; qq_data *qd; gchar **segments; int index; const char *utf8_str; gchar *value; int choice_num; gc = info_request->gc; g_return_if_fail(gc != NULL && info_request->gc); qd = (qq_data *) gc->proto_data; segments = info_request->segments; g_return_if_fail(segments != NULL); for (index = 1; segments[index] != NULL && index < QQ_INFO_LAST; index++) { if (field_infos[index].iclass == QQ_FIELD_UNUSED) { continue; } if (!purple_request_fields_exists(fields, field_infos[index].id)) { continue; } switch (field_infos[index].type) { case QQ_FIELD_BOOL: value = purple_request_fields_get_bool(fields, field_infos[index].id) ? g_strdup("1") : g_strdup("0"); g_free(segments[index]); segments[index] = value; break; case QQ_FIELD_CHOICE: choice_num = purple_request_fields_get_choice(fields, field_infos[index].id); if (choice_num < 0 || choice_num >= field_infos[index].choice_size) choice_num = 0; if (index == QQ_INFO_GENDER) { /* QQ Server only recept gender in Chinese */ value = g_strdup(genders_zh[choice_num]); } else { value = g_strdup_printf("%d", choice_num); } g_free(segments[index]); segments[index] = value; break; case QQ_FIELD_LABEL: case QQ_FIELD_STRING: case QQ_FIELD_MULTI: default: utf8_str = purple_request_fields_get_string(fields, field_infos[index].id); if (utf8_str == NULL) { value = g_strdup("-"); } else { value = utf8_to_qq(utf8_str, QQ_CHARSET_DEFAULT); if (value == NULL) value = g_strdup("-"); } g_free(segments[index]); segments[index] = value; break; } } request_change_info(gc, segments); g_strfreev(segments); g_free(info_request); }
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); } }