/* Show privacy settings */ static void waprpl_show_privacy(PurplePluginAction * action) { PurpleConnection *gc = (PurpleConnection *) action->context; whatsapp_connection *wconn = purple_connection_get_protocol_data(gc); if (!wconn) return; char priv[3][30]; waAPI_queryprivacy(wconn->waAPI, priv[0], priv[1], priv[2]); PurpleRequestField *field; PurpleRequestFields *fields = purple_request_fields_new(); PurpleRequestFieldGroup *group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); int i,j; for (j = 0; j < 3; j++) { field = purple_request_field_list_new(priv_type[j], priv_type_nice[j]); for (i = 0; i < 3; i++) { purple_request_field_list_add(field, priv_opt_nice[i], g_strdup(priv_opt[i])); if (strcmp(priv_opt[i], priv[j]) == 0) purple_request_field_list_add_selected(field, priv_opt_nice[i]); } purple_request_field_group_add_field(group, field); } purple_request_fields(gc, "Edit privacy settings", "Edit privacy settings", NULL, fields, "Save", G_CALLBACK(waprpl_update_privacy), "Cancel", NULL, purple_connection_get_account(gc), NULL, NULL, gc); }
static int buddy_add_timezone_cb(char *filename, void *data) { PurpleRequestField *field = (PurpleRequestField *) data; if (isupper(filename[0])) purple_request_field_list_add(field, filename, TIMEZONE_FLAG); return 0; }
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(); }
void fchat_select_buddies_list(FChatConnection *fchat_conn, const gchar *msg_text, GHashTable *buddies, FChatSelectBuddiesListCb *ok_cb, FChatSelectBuddiesListCb *cancel_cb, void *user_data) { PurpleRequestFields *fields; PurpleRequestFieldGroup *group; PurpleRequestField *field; fields = purple_request_fields_new(); group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); field = purple_request_field_list_new("buddies", _("Buddies")); purple_request_field_list_set_multi_select(field, TRUE); GHashTableIter iter; gchar *buddy_host; FChatBuddy *buddy; g_hash_table_iter_init (&iter, buddies); while (g_hash_table_iter_next (&iter, (gpointer *)&buddy_host, (gpointer *)&buddy)) { gchar *item = g_strdup_printf("%s (%s)", buddy->host, buddy->alias ? buddy->alias : ""); purple_request_field_list_add(field, item, buddy); g_free(item); /* purple_request_field_list_add_selected(field, item, buddy); */ } purple_request_field_group_add_field(group, field); FChatSelectBuddiesListCbData *fchat_select_buddies_list_cb_data = g_new(FChatSelectBuddiesListCbData, 1); fchat_select_buddies_list_cb_data->fchat_conn = fchat_conn; fchat_select_buddies_list_cb_data->ok_cb = ok_cb; fchat_select_buddies_list_cb_data->cancel_cb = cancel_cb; fchat_select_buddies_list_cb_data->user_data = user_data; purple_request_fields(fchat_conn->gc, _("Select buddies"), msg_text, _("Use Ctrl or Shift keys for multiply select"), fields, _("Ok"), G_CALLBACK(fchat_select_buddies_list_ok_cb), _("Cancel"), G_CALLBACK(fchat_select_buddies_list_cancel_cb), fchat_conn->gc->account, NULL, NULL, fchat_select_buddies_list_cb_data); }
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; }
static void buddytimezone_createfields_cb(PurpleRequestFields * fields, PurpleBlistNode * data) { purple_debug(PURPLE_DEBUG_INFO, PLUGIN_STATIC_NAME, "buddytimezone_createfields_cb(%p,%p)\n", fields, data); PurpleRequestField *field; PurpleRequestFieldGroup *group; const char *timezone; gboolean is_default; switch (data->type) { case PURPLE_BLIST_BUDDY_NODE: case PURPLE_BLIST_CONTACT_NODE: is_default = FALSE; break; case PURPLE_BLIST_GROUP_NODE: is_default = TRUE; break; case PURPLE_BLIST_CHAT_NODE: case PURPLE_BLIST_OTHER_NODE: default: /* Not applicable */ return; } group = purple_request_field_group_new(NULL); purple_request_fields_add_group(fields, group); timezone = buddy_get_timezone(data, FALSE, NULL); if (ui_ops != NULL && ui_ops->create_menu) { field = purple_request_field_new(CONTROL_NAME, is_default ? "Default timezone for group" : "Timezone of contact", PURPLE_REQUEST_FIELD_LIST); field->ui_data = ui_ops->create_menu(timezone); } else { field = purple_request_field_list_new(CONTROL_NAME, is_default ? "Default timezone for group" : "Timezone of contact (type to select)"); purple_request_field_list_set_multi_select(field, FALSE); purple_request_field_list_add(field, "<Default>", ""); purple_request_field_list_add(field, "<Disabled>", DISABLED_FLAG); recurse_directory("/usr/share/zoneinfo/", buddy_add_timezone_cb, field); if (timezone) { if (strcmp(timezone, "none") == 0) purple_request_field_list_add_selected(field, "<Disabled>"); else purple_request_field_list_add_selected(field, timezone); } else purple_request_field_list_add_selected(field, "<Default>"); } purple_request_field_group_add_field(group, field); }
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_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_type(name); if(purple_plugin_pref_get_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(field, label, 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)); 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, NULL, NULL); g_signal_connect_swapped(G_OBJECT(ret), "destroy", G_CALLBACK(free_stringlist), stringlist); return ret; }