void GeneralMenu::openRequestFieldsTest(CppConsUI::Button& /*activator*/) { PurpleRequestFields *fields = purple_request_fields_new(); PurpleRequestFieldGroup *g = purple_request_field_group_new("Group 0"); purple_request_fields_add_group(fields, g); PurpleRequestField *f; f = purple_request_field_string_new("text0", "String field 0", "def0", FALSE); purple_request_field_group_add_field(g, f); f = purple_request_field_string_new("text1", "String field 1", NULL, FALSE); purple_request_field_group_add_field(g, f); f = purple_request_field_int_new("int0", "Int field 0", INT_MAX); purple_request_field_group_add_field(g, f); f = purple_request_field_bool_new("bool0", "Bool field 0", FALSE); purple_request_field_group_add_field(g, f); f = purple_request_field_choice_new("choice0", "Choice field 0", 2); purple_request_field_choice_add(f, "One"); purple_request_field_choice_add(f, "Two"); purple_request_field_choice_add(f, "Three"); purple_request_field_choice_add(f, "Four"); purple_request_field_group_add_field(g, f); f = purple_request_field_list_new("list0", "List field 0, multiple"); purple_request_field_list_set_multi_select(f, TRUE); purple_request_field_list_add(f, "One", this); purple_request_field_list_add(f, "Two", this); purple_request_field_list_add(f, "Three", this); purple_request_field_list_add(f, "Four", this); purple_request_field_list_add_selected(f, "Three"); purple_request_field_group_add_field(g, f); f = purple_request_field_list_new("list1", "List field 1, single"); purple_request_field_list_set_multi_select(f, FALSE); purple_request_field_list_add(f, "One", this); purple_request_field_list_add(f, "Two", this); purple_request_field_list_add(f, "Three", this); purple_request_field_list_add(f, "Four", this); purple_request_field_list_add_selected(f, "Three"); purple_request_field_group_add_field(g, f); f = purple_request_field_account_new("account0", "Account field 0", NULL); purple_request_field_account_set_show_all(f, TRUE); purple_request_field_group_add_field(g, f); purple_request_fields(NULL, "Title", "Primary", "Secondary", fields, "Ok", G_CALLBACK(fields_ok_cb_), "Cancel", NULL, NULL, NULL, NULL, this); close(); }
static void field_request_new(PurpleRequestFieldGroup *group, gint index, gchar **segments) { PurpleRequestField *field; gchar *utf8_value; int choice_num; int i; g_return_if_fail(index >=0 && segments[index] != NULL && index < QQ_INFO_LAST); switch (field_infos[index].type) { case QQ_FIELD_STRING: case QQ_FIELD_MULTI: utf8_value = qq_to_utf8(segments[index], QQ_CHARSET_DEFAULT); if (field_infos[index].type == QQ_FIELD_STRING) { field = purple_request_field_string_new( field_infos[index].id, field_infos[index].text, utf8_value, FALSE); } else { field = purple_request_field_string_new( field_infos[index].id, field_infos[index].text, utf8_value, TRUE); } purple_request_field_group_add_field(group, field); g_free(utf8_value); break; case QQ_FIELD_BOOL: field = purple_request_field_bool_new( field_infos[index].id, field_infos[index].text, strtol(segments[index], NULL, 10) ? TRUE : FALSE); purple_request_field_group_add_field(group, field); break; case QQ_FIELD_CHOICE: choice_num = strtol(segments[index], NULL, 10); if (choice_num < 0 || choice_num >= field_infos[index].choice_size) choice_num = 0; if (index == QQ_INFO_GENDER && strlen(segments[index]) != 0) { for (i = 0; i < QQ_GENDER_SIZE; i++) { if (strcmp(segments[index], genders_zh[i]) == 0) { choice_num = i; } } } field = purple_request_field_choice_new( field_infos[index].id, field_infos[index].text, choice_num); for (i = 0; i < field_infos[index].choice_size; i++) { purple_request_field_choice_add(field, field_infos[index].choice[i]); } purple_request_field_group_add_field(group, field); break; case QQ_FIELD_LABEL: default: field = purple_request_field_label_new(field_infos[index].id, segments[index]); purple_request_field_group_add_field(group, field); break; } }
static void history_prefs_check(PurplePlugin *plugin) { if (!purple_prefs_get_bool("/purple/logging/log_ims") && !purple_prefs_get_bool("/purple/logging/log_chats")) { PurpleRequestFields *fields = purple_request_fields_new(); PurpleRequestFieldGroup *group; PurpleRequestField *field; struct { const char *pref; const char *label; } prefs[] = { {"/purple/logging/log_ims", N_("Log IMs")}, {"/purple/logging/log_chats", N_("Log chats")}, {NULL, NULL} }; int iter; GList *list = purple_log_logger_get_options(); const char *system = purple_prefs_get_string("/purple/logging/format"); group = purple_request_field_group_new(_("Logging")); field = purple_request_field_list_new("/purple/logging/format", _("Log format")); while (list) { const char *label = _(list->data); list = g_list_delete_link(list, list); purple_request_field_list_add_icon(field, label, NULL, list->data); if (system && strcmp(system, list->data) == 0) purple_request_field_list_add_selected(field, label); list = g_list_delete_link(list, list); } purple_request_field_group_add_field(group, field); for (iter = 0; prefs[iter].pref; iter++) { field = purple_request_field_bool_new(prefs[iter].pref, _(prefs[iter].label), purple_prefs_get_bool(prefs[iter].pref)); purple_request_field_group_add_field(group, field); } purple_request_fields_add_group(fields, group); purple_request_fields(plugin, NULL, _("History Plugin Requires Logging"), _("Logging can be enabled from Tools -> Preferences -> Logging.\n\n" "Enabling logs for instant messages and/or chats will activate " "history for the same conversation type(s)."), fields, _("OK"), G_CALLBACK(finch_request_save_in_prefs), _("Cancel"), NULL, NULL, NULL, NULL, plugin); } }
static void _purple_events_ui_events_selection_dialog(PurpleBlistNode *node, PurpleEventsContext *context) { node = _purple_events_ui_get_good_node(node); if ( node == NULL ) return; PurpleRequestFields *request; PurpleRequestFieldGroup *group; PurpleRequestField *field; group = purple_request_field_group_new(NULL); gint current; guint i; gboolean v; for ( i = 0 ; _purple_events_ui_events[i] != NULL ; ++i ) { current = purple_blist_node_get_int(node, _purple_events_ui_events[i]); if ( current != 0 ) v = ( current > 0 ); else { gchar *pref_name; pref_name = g_strconcat("/plugins/core/events/", _purple_events_ui_events[i], NULL); v = purple_prefs_get_bool(pref_name); g_free(pref_name); } field = purple_request_field_bool_new(_purple_events_ui_events[i], _(_purple_events_ui_events_labels[i]), v); purple_request_field_group_add_field(group, field); } request = purple_request_fields_new(); purple_request_fields_add_group(request, group); purple_request_fields(context->plugin, _("Events selection"), PURPLE_BLIST_NODE_IS_CONTACT(node) ? _("Select events for contact") : _("Select events for group"), NULL, request, PURPLE_BLIST_NODE_IS_CONTACT(node) ? _("_Set events for contact") : _("_Set events for group"), G_CALLBACK(_purple_events_ui_events_selection), _("_Cancel"), NULL, NULL, PURPLE_BLIST_NODE_IS_CONTACT(node) ? purple_buddy_get_name(purple_contact_get_priority_buddy(PURPLE_CONTACT(node))) : NULL, NULL, node); }
static GntWidget* process_pref_frame(PurplePluginPrefFrame *frame) { PurpleRequestField *field; PurpleRequestFields *fields; PurpleRequestFieldGroup *group = NULL; GList *prefs; GList *stringlist = NULL; GntWidget *ret = NULL; fields = purple_request_fields_new(); for (prefs = purple_plugin_pref_frame_get_prefs(frame); prefs; prefs = prefs->next) { PurplePluginPref *pref = prefs->data; PurplePrefType type; const char *name = purple_plugin_pref_get_name(pref); const char *label = purple_plugin_pref_get_label(pref); if(name == NULL) { if(label == NULL) continue; if(purple_plugin_pref_get_pref_type(pref) == PURPLE_PLUGIN_PREF_INFO) { field = purple_request_field_label_new("*", purple_plugin_pref_get_label(pref)); purple_request_field_group_add_field(group, field); } else { group = purple_request_field_group_new(label); purple_request_fields_add_group(fields, group); } continue; } field = NULL; type = purple_prefs_get_pref_type(name); if(purple_plugin_pref_get_pref_type(pref) == PURPLE_PLUGIN_PREF_CHOICE) { GList *list = purple_plugin_pref_get_choices(pref); gpointer current_value = NULL; switch(type) { case PURPLE_PREF_BOOLEAN: current_value = g_strdup_printf("%d", (int)purple_prefs_get_bool(name)); break; case PURPLE_PREF_INT: current_value = g_strdup_printf("%d", (int)purple_prefs_get_int(name)); break; case PURPLE_PREF_STRING: current_value = g_strdup(purple_prefs_get_string(name)); break; default: continue; } field = purple_request_field_list_new(name, label); purple_request_field_list_set_multi_select(field, FALSE); while (list && list->next) { const char *label = list->data; char *value = NULL; switch(type) { case PURPLE_PREF_BOOLEAN: value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data)); break; case PURPLE_PREF_INT: value = g_strdup_printf("%d", GPOINTER_TO_INT(list->next->data)); break; case PURPLE_PREF_STRING: value = g_strdup(list->next->data); break; default: break; } stringlist = g_list_prepend(stringlist, value); purple_request_field_list_add_icon(field, label, NULL, value); if (strcmp(value, current_value) == 0) purple_request_field_list_add_selected(field, label); list = list->next->next; } g_free(current_value); } else { switch(type) { case PURPLE_PREF_BOOLEAN: field = purple_request_field_bool_new(name, label, purple_prefs_get_bool(name)); break; case PURPLE_PREF_INT: field = purple_request_field_int_new(name, label, purple_prefs_get_int(name), INT_MIN, INT_MAX); break; case PURPLE_PREF_STRING: field = purple_request_field_string_new(name, label, purple_prefs_get_string(name), purple_plugin_pref_get_format_type(pref) & PURPLE_STRING_FORMAT_TYPE_MULTILINE); break; default: break; } } if (field) { if (group == NULL) { group = purple_request_field_group_new(_("Preferences")); purple_request_fields_add_group(fields, group); } purple_request_field_group_add_field(group, field); } } ret = purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, _("Save"), G_CALLBACK(finch_request_save_in_prefs), _("Cancel"), NULL, NULL, NULL); g_signal_connect_swapped(G_OBJECT(ret), "destroy", G_CALLBACK(free_stringlist), stringlist); return ret; }
static PurpleRequestField * get_pref_field(Prefs *prefs) { PurpleRequestField *field = NULL; if (prefs->lv == NULL) { switch (prefs->type) { case PURPLE_PREF_BOOLEAN: field = purple_request_field_bool_new(prefs->pref, _(prefs->label), purple_prefs_get_bool(prefs->pref)); break; case PURPLE_PREF_INT: field = purple_request_field_int_new(prefs->pref, _(prefs->label), purple_prefs_get_int(prefs->pref)); break; case PURPLE_PREF_STRING: field = purple_request_field_string_new(prefs->pref, _(prefs->label), purple_prefs_get_string(prefs->pref), FALSE); break; default: break; } } else { GList *list = prefs->lv(), *iter; if (list) field = purple_request_field_list_new(prefs->pref, _(prefs->label)); for (iter = list; iter; iter = iter->next) { gboolean select = FALSE; const char *data = iter->data; int idata; iter = iter->next; switch (prefs->type) { case PURPLE_PREF_BOOLEAN: sscanf(iter->data, "%d", &idata); if (purple_prefs_get_bool(prefs->pref) == idata) select = TRUE; break; case PURPLE_PREF_INT: sscanf(iter->data, "%d", &idata); if (purple_prefs_get_int(prefs->pref) == idata) select = TRUE; break; case PURPLE_PREF_STRING: if (strcmp(purple_prefs_get_string(prefs->pref), iter->data) == 0) select = TRUE; break; default: break; } purple_request_field_list_add(field, data, iter->data); if (select) purple_request_field_list_add_selected(field, data); } g_list_free(list); } return field; }
/*------------------------------------------------------------------------ * Display and update the user's profile. * * @param action The action object */ static void mxit_profile_action( PurplePluginAction* action ) { PurpleConnection* gc = (PurpleConnection*) action->context; struct MXitSession* session = purple_connection_get_protocol_data( gc ); struct MXitProfile* profile = session->profile; PurpleRequestFields* fields = NULL; PurpleRequestField* field = NULL; purple_debug_info( MXIT_PLUGIN_ID, "mxit_profile_action\n" ); /* ensure that we actually have the user's profile information */ if ( !profile ) { /* no profile information yet, so we cannot update */ mxit_popup( PURPLE_NOTIFY_MSG_WARNING, _( "Profile" ), _( "Your profile information is not yet retrieved. Please try again later." ) ); return; } fields = purple_request_fields_new(); /* Public information - what other users can see */ { PurpleRequestFieldGroup* public_group = purple_request_field_group_new( "Public information" ); /* display name */ field = purple_request_field_string_new( "name", _( "Display Name" ), profile->nickname, FALSE ); purple_request_field_group_add_field( public_group, field ); /* birthday */ field = purple_request_field_string_new( "bday", _( "Birthday" ), profile->birthday, FALSE ); purple_request_field_group_add_field( public_group, field ); if ( profile->flags & CP_PROF_DOBLOCKED ) purple_request_field_set_sensitive( field, FALSE ); /* gender */ field = purple_request_field_choice_new( "male", _( "Gender" ), GINT_TO_POINTER(profile->male ? 1 : 0)); purple_request_field_choice_add( field, _( "Female" ), GINT_TO_POINTER(0)); purple_request_field_choice_add( field, _( "Male" ), GINT_TO_POINTER(1)); purple_request_field_group_add_field( public_group, field ); /* first name */ field = purple_request_field_string_new( "firstname", _( "First Name" ), profile->firstname, FALSE ); purple_request_field_group_add_field( public_group, field ); /* last name */ field = purple_request_field_string_new( "lastname", _( "Last Name" ), profile->lastname, FALSE ); purple_request_field_group_add_field( public_group, field ); /* about me */ field = purple_request_field_string_new( "aboutme", _( "About Me" ), profile->aboutme, FALSE); purple_request_field_group_add_field( public_group, field ); /* where I live */ field = purple_request_field_string_new( "whereami", _( "Where I Live" ), profile->whereami, FALSE); purple_request_field_group_add_field( public_group, field ); /* relationship status */ field = purple_request_field_list_new( "relationship", _( "Relationship Status" ) ); purple_request_field_list_set_multi_select( field, FALSE ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_UNKNOWN ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_UNKNOWN ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_DONTSAY ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_DONTSAY ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_SINGLE ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_SINGLE ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_INVOLVED ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_INVOLVED ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_ENGAGED ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_ENGAGED ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_MARRIED ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_MARRIED ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_COMPLICATED ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_COMPLICATED ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_WIDOWED ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_WIDOWED ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_SEPARATED ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_SEPARATED ) ); purple_request_field_list_add_icon( field, mxit_relationship_to_name( MXIT_RELATIONSHIP_DIVORCED ), NULL, g_strdup_printf( "%i", MXIT_RELATIONSHIP_DIVORCED ) ); purple_request_field_list_add_selected( field, mxit_relationship_to_name( profile->relationship ) ); purple_request_field_group_add_field( public_group, field ); purple_request_fields_add_group( fields, public_group ); } /* Private information - what only MXit can see */ { PurpleRequestFieldGroup* private_group = purple_request_field_group_new( "Private information" ); /* title */ field = purple_request_field_string_new( "title", _( "Title" ), profile->title, FALSE ); purple_request_field_group_add_field( private_group, field ); /* email */ field = purple_request_field_string_new( "email", _( "Email" ), profile->email, FALSE ); purple_request_field_group_add_field( private_group, field ); /* mobile number */ field = purple_request_field_string_new( "mobilenumber", _( "Mobile Number" ), profile->mobilenr, FALSE ); purple_request_field_group_add_field( private_group, field ); /* is searchable */ field = purple_request_field_bool_new( "searchable", _( "Can be searched" ), ( ( profile->flags & CP_PROF_NOT_SEARCHABLE ) == 0) ); purple_request_field_group_add_field( private_group, field ); /* is suggestable */ field = purple_request_field_bool_new( "suggestable", _( "Can be suggested" ), ( ( profile->flags & CP_PROF_NOT_SUGGESTABLE ) == 0 ) ); purple_request_field_group_add_field( private_group, field ); purple_request_fields_add_group( fields, private_group ); } /* (reference: "libpurple/request.h") */ purple_request_fields( gc, _( "Profile" ), _( "Update your MXit Profile" ), NULL, fields, _( "Set" ), G_CALLBACK( mxit_profile_cb ), _( "Cancel" ), NULL, purple_request_cpar_from_connection(gc), gc ); }
void BuddyList::request_add_chat(PurpleAccount *account, PurpleGroup *group, const char *alias, const char *name) { if (!CheckAnyAccountConnected()) return; if (account) { PurpleConnection *gc = purple_account_get_connection(account); if (!PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat) { LOG->Message(_("This protocol does not support chat rooms.")); return; } } else { // find an account with chat capabilities for (GList *l = purple_connections_get_all(); l; l = l->next) { PurpleConnection *gc = reinterpret_cast<PurpleConnection*>(l->data); if (PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl)->join_chat) { account = purple_connection_get_account(gc); break; } } if (!account) { LOG->Message(_("You are not currently signed on with any " "protocols that have the ability to chat.")); return; } } PurpleRequestFields *fields = purple_request_fields_new(); PurpleRequestFieldGroup *g = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, g); PurpleRequestField *f; f = purple_request_field_account_new("account", _("Account"), account); purple_request_field_group_add_field(g, f); f = purple_request_field_string_new("name", _("Chat name"), NULL, FALSE); purple_request_field_group_add_field(g, f); f = purple_request_field_string_new("alias", _("Alias"), NULL, FALSE); purple_request_field_group_add_field(g, f); f = purple_request_field_choice_new("group", _("Group"), 0); bool add_default_group = true; int dval = 0; bool dval_set = false; for (PurpleBlistNode *i = purple_blist_get_root(); i; i = i->next) if (PURPLE_BLIST_NODE_IS_GROUP(i)) { PurpleGroup *cur_group = reinterpret_cast<PurpleGroup*>(i); const char *cur_name = purple_group_get_name(cur_group); purple_request_field_choice_add(f, cur_name); if (!dval_set) { if (group == cur_group) { purple_request_field_choice_set_default_value(f, dval); dval_set = true; } dval++; } add_default_group = false; } if (add_default_group) purple_request_field_choice_add(f, _("Chats")); purple_request_field_group_add_field(g, f); f = purple_request_field_bool_new("autojoin", _("Auto-join"), FALSE); purple_request_field_group_add_field(g, f); purple_request_fields(NULL, _("Add chat"), NULL, NULL, fields, _("Add"), G_CALLBACK(add_chat_ok_cb_), CANCEL_BUTTON_TEXT, NULL, NULL, NULL, NULL, this); }