Tue, 07 Mar 2023 01:04:42 -0600
Convert PurpleRequestPage into a GObject
And rename it from `PurpleRequestFields`.
Also, implements `GListModel` for the groups, but nothing uses it that way get.
Testing Done:
Compiled, and opened Request Fields from Demo protocol.
Reviewed at https://reviews.imfreedom.org/r/2323/
--- a/ChangeLog.API Tue Mar 07 00:22:36 2023 -0600 +++ b/ChangeLog.API Tue Mar 07 01:04:42 2023 -0600 @@ -238,6 +238,8 @@ * PurpleRequestFieldGroup is now a GObject, and renamed to PurpleRequestGroup. Please see the documentation for details. + * PurpleRequestFields is now a GObject, and renamed to + PurpleRequestPage. Please see the documentation for details. * purple_request_field_get_field_type_hint renamed to purple_request_field_get_type_hint * purple_request_field_group_get_tab @@ -720,6 +722,7 @@ * purple_request_field_set_ui_data * purple_request_field_group_destroy. Use g_object_unref instead. + * purple_request_fields_destroy. Use g_object_unref instead. * purple_request_fields_get_autosensitive * PurpleRoomlistRoomType * purple_roomlist_expand_category
--- a/finch/gntblist.c Tue Mar 07 00:22:36 2023 -0600 +++ b/finch/gntblist.c Tue Mar 07 01:04:42 2023 -0600 @@ -530,13 +530,12 @@ } static void -add_buddy_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *allfields) -{ - const char *username = purple_request_fields_get_string(allfields, "screenname"); - const char *alias = purple_request_fields_get_string(allfields, "alias"); - const char *group = purple_request_fields_get_string(allfields, "group"); - const char *invite = purple_request_fields_get_string(allfields, "invite"); - PurpleAccount *account = purple_request_fields_get_account(allfields, "account"); +add_buddy_cb(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { + const char *username = purple_request_page_get_string(page, "screenname"); + const char *alias = purple_request_page_get_string(page, "alias"); + const char *group = purple_request_page_get_string(page, "group"); + const char *invite = purple_request_page_get_string(page, "invite"); + PurpleAccount *account = purple_request_page_get_account(page, "account"); const char *error = NULL; PurpleGroup *grp; PurpleBuddy *buddy; @@ -582,11 +581,11 @@ PurpleAccount *account, const char *username, const char *grp, const char *alias) { - PurpleRequestFields *fields = purple_request_fields_new(); + PurpleRequestPage *page = purple_request_page_new(); PurpleRequestGroup *group = purple_request_group_new(NULL); PurpleRequestField *field; - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("screenname", _("Username"), username, FALSE); purple_request_group_add_field(group, field); @@ -608,7 +607,7 @@ purple_request_group_add_field(group, field); purple_request_fields(NULL, _("Add Buddy"), NULL, _("Please enter buddy information."), - fields, + page, _("Add"), G_CALLBACK(add_buddy_cb), _("Cancel"), NULL, purple_request_cpar_from_account(account), @@ -636,8 +635,7 @@ } static void -add_chat_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *allfields) -{ +add_chat_cb(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { PurpleAccount *account; const char *alias, *name, *group; PurpleChat *chat; @@ -647,11 +645,11 @@ gboolean autojoin; PurpleProtocol *protocol; - account = purple_request_fields_get_account(allfields, "account"); - name = purple_request_fields_get_string(allfields, "name"); - alias = purple_request_fields_get_string(allfields, "alias"); - group = purple_request_fields_get_string(allfields, "group"); - autojoin = purple_request_fields_get_bool(allfields, "autojoin"); + account = purple_request_page_get_account(page, "account"); + name = purple_request_page_get_string(page, "name"); + alias = purple_request_page_get_string(page, "alias"); + group = purple_request_page_get_string(page, "group"); + autojoin = purple_request_page_get_bool(page, "autojoin"); if (!purple_account_is_connected(account) || !name || !*name) return; @@ -684,11 +682,11 @@ PurpleAccount *account, PurpleGroup *grp, const char *alias, const char *name) { - PurpleRequestFields *fields = purple_request_fields_new(); + PurpleRequestPage *page = purple_request_page_new(); PurpleRequestGroup *group = purple_request_group_new(NULL); PurpleRequestField *field; - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_account_new("account", _("Account"), NULL); purple_request_field_account_set_show_all(field, FALSE); @@ -711,7 +709,7 @@ purple_request_fields(NULL, _("Add Chat"), NULL, _("You can edit more information from the context menu later."), - fields, _("Add"), G_CALLBACK(add_chat_cb), _("Cancel"), NULL, + page, _("Add"), G_CALLBACK(add_chat_cb), _("Cancel"), NULL, NULL, NULL); } @@ -980,11 +978,13 @@ } static void -chat_components_edit_ok(PurpleChat *chat, PurpleRequestFields *allfields) +chat_components_edit_ok(PurpleChat *chat, PurpleRequestPage *page) { GList *groups, *fields; - for (groups = purple_request_fields_get_groups(allfields); groups; groups = groups->next) { + for(groups = purple_request_page_get_groups(page); groups; + groups = groups->next) + { fields = purple_request_group_get_fields(groups->data); for (; fields; fields = fields->next) { PurpleRequestField *field = fields->data; @@ -1009,7 +1009,7 @@ static void chat_components_edit(G_GNUC_UNUSED PurpleBlistNode *selected, PurpleChat *chat) { - PurpleRequestFields *fields = purple_request_fields_new(); + PurpleRequestPage *page = purple_request_page_new(); PurpleRequestGroup *group = purple_request_group_new(NULL); PurpleRequestField *field; GList *parts, *iter; @@ -1017,7 +1017,7 @@ PurpleProtocolChatEntry *pce; PurpleConnection *gc; - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); gc = purple_account_get_connection(purple_chat_get_account(chat)); protocol = purple_connection_get_protocol(gc); @@ -1048,7 +1048,7 @@ g_list_free(parts); purple_request_fields(NULL, _("Edit Chat"), NULL, _("Please Update the necessary fields."), - fields, _("Edit"), G_CALLBACK(chat_components_edit_ok), _("Cancel"), NULL, + page, _("Edit"), G_CALLBACK(chat_components_edit_ok), _("Cancel"), NULL, NULL, chat); } @@ -2518,14 +2518,13 @@ /* send_im_select* -- Xerox */ static void -send_im_select_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) -{ +send_im_select_cb(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { PurpleAccount *account; const char *username; PurpleConversation *im; - account = purple_request_fields_get_account(fields, "account"); - username = purple_request_fields_get_string(fields, "screenname"); + account = purple_request_page_get_account(page, "account"); + username = purple_request_page_get_string(page, "screenname"); im = purple_im_conversation_new(account, username); purple_conversation_present(im); @@ -2534,14 +2533,14 @@ static void send_im_select(G_GNUC_UNUSED GntMenuItem *item, G_GNUC_UNUSED gpointer n) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("screenname", _("Name"), NULL, FALSE); purple_request_field_set_type_hint(field, "screenname"); @@ -2560,13 +2559,12 @@ purple_blist_get_default(), _("New Instant Message"), NULL, _("Please enter the username or alias of the person " "you would like to IM."), - fields, _("OK"), G_CALLBACK(send_im_select_cb), _("Cancel"), + page, _("OK"), G_CALLBACK(send_im_select_cb), _("Cancel"), NULL, NULL, NULL); } static void -join_chat_select_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) -{ +join_chat_select_cb(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { PurpleAccount *account; const char *name; PurpleConnection *gc; @@ -2575,8 +2573,8 @@ GHashTable *hash = NULL; PurpleConversation *conv; - account = purple_request_fields_get_account(fields, "account"); - name = purple_request_fields_get_string(fields, "chat"); + account = purple_request_page_get_account(page, "account"); + name = purple_request_page_get_string(page, "chat"); if (!purple_account_is_connected(account)) return; @@ -2610,14 +2608,14 @@ static void join_chat_select(G_GNUC_UNUSED GntMenuItem *item, G_GNUC_UNUSED gpointer n) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("chat", _("Channel"), NULL, FALSE); purple_request_field_set_required(field, TRUE); @@ -2634,7 +2632,7 @@ purple_request_fields( purple_blist_get_default(), _("Join a Chat"), NULL, _("Please enter the name of the chat you want to join."), - fields, _("Join"), G_CALLBACK(join_chat_select_cb), _("Cancel"), + page, _("Join"), G_CALLBACK(join_chat_select_cb), _("Cancel"), NULL, NULL, NULL); }
--- a/finch/gntplugin.c Tue Mar 07 00:22:36 2023 -0600 +++ b/finch/gntplugin.c Tue Mar 07 01:04:42 2023 -0600 @@ -534,13 +534,13 @@ process_pref_frame(PurplePluginPrefFrame *frame) { PurpleRequestField *field; - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group = NULL; GList *prefs; GList *stringlist = NULL; GntWidget *ret = NULL; - fields = purple_request_fields_new(); + page = purple_request_page_new(); for (prefs = purple_plugin_pref_frame_get_prefs(frame); prefs; prefs = prefs->next) { PurplePluginPref *pref = prefs->data; @@ -556,7 +556,7 @@ purple_request_group_add_field(group, field); } else { group = purple_request_group_new(label); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); } continue; } @@ -624,13 +624,13 @@ if (field) { if (group == NULL) { group = purple_request_group_new(_("Preferences")); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); } purple_request_group_add_field(group, field); } } - ret = purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, + ret = purple_request_fields(NULL, _("Preferences"), NULL, NULL, page, _("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);
--- a/finch/gntprefs.c Tue Mar 07 00:22:36 2023 -0600 +++ b/finch/gntprefs.c Tue Mar 07 01:04:42 2023 -0600 @@ -230,21 +230,19 @@ } static void -save_cb(void *data, PurpleRequestFields *allfields) -{ - finch_request_save_in_prefs(data, allfields); +save_cb(void *data, PurpleRequestPage *page) { + finch_request_save_in_prefs(data, page); free_strings(); } static void -add_pref_group(PurpleRequestFields *fields, const char *title, Prefs *prefs) -{ +add_pref_group(PurpleRequestPage *page, const char *title, Prefs *prefs) { PurpleRequestField *field; PurpleRequestGroup *group; int i; group = purple_request_group_new(title); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); for (i = 0; prefs[i].pref; i++) { field = get_pref_field(prefs + i); @@ -256,22 +254,22 @@ void finch_prefs_show_all(void) { - PurpleRequestFields *fields; + PurpleRequestPage *page; if (pref_request.showing) { gnt_window_present(pref_request.window); return; } - fields = purple_request_fields_new(); + page = purple_request_page_new(); - add_pref_group(fields, _("Buddy List"), blist); - add_pref_group(fields, _("Conversations"), convs); - add_pref_group(fields, _("Idle"), idle); - add_pref_group(fields, _("Credentials"), credentials); + add_pref_group(page, _("Buddy List"), blist); + add_pref_group(page, _("Conversations"), convs); + add_pref_group(page, _("Idle"), idle); + add_pref_group(page, _("Credentials"), credentials); pref_request.showing = TRUE; - pref_request.window = purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, + pref_request.window = purple_request_fields(NULL, _("Preferences"), NULL, NULL, page, _("Save"), G_CALLBACK(save_cb), _("Cancel"), free_strings, NULL, NULL); }
--- a/finch/gntrequest.c Tue Mar 07 00:22:36 2023 -0600 +++ b/finch/gntrequest.c Tue Mar 07 01:04:42 2023 -0600 @@ -167,14 +167,8 @@ } static void -finch_close_request(PurpleRequestType type, gpointer ui_handle) -{ +finch_close_request(G_GNUC_UNUSED PurpleRequestType type, gpointer ui_handle) { GntWidget *widget = GNT_WIDGET(ui_handle); - if (type == PURPLE_REQUEST_FIELDS) { - PurpleRequestFields *fields = g_object_get_data(G_OBJECT(widget), "fields"); - purple_request_fields_destroy(fields); - } - widget = gnt_widget_get_toplevel(widget); gnt_widget_destroy(widget); } @@ -278,8 +272,7 @@ } static void -request_fields_cb(GntWidget *button, PurpleRequestFields *fields) -{ +request_fields_cb(GntWidget *button, PurpleRequestPage *page) { PurpleRequestFieldsCb callback = g_object_get_data(G_OBJECT(button), "activate-callback"); gpointer data = g_object_get_data(G_OBJECT(button), "activate-userdata"); GList *list; @@ -290,8 +283,7 @@ * instantly whenever a change is made. That allows it to make sure the * 'required' fields are entered before the user can hit OK. It's not the case * here, although it can be done. */ - for (list = purple_request_fields_get_groups(fields); list; list = list->next) - { + for(list = purple_request_page_get_groups(page); list; list = list->next) { PurpleRequestGroup *group = list->data; GList *fields = purple_request_group_get_fields(group); @@ -381,16 +373,17 @@ purple_notify_close_with_handle(button); if (!g_object_get_data(G_OBJECT(button), "cancellation-function") && - (!purple_request_fields_all_required_filled(fields) || - !purple_request_fields_all_valid(fields))) { + (!purple_request_page_all_required_filled(page) || + !purple_request_page_all_valid(page))) { purple_notify_error(button, _("Error"), _("You must properly fill all the required fields."), _("The required fields are underlined."), NULL); return; } - if (callback) - callback(data, fields); + if(callback) { + callback(data, page); + } window = gnt_widget_get_toplevel(button); purple_request_close(PURPLE_REQUEST_FIELDS, window); @@ -583,8 +576,7 @@ } static void -multifield_extra_cb(GntWidget *button, PurpleRequestFields *allfields) -{ +multifield_extra_cb(GntWidget *button, PurpleRequestPage *page) { PurpleRequestFieldsCb cb; gpointer cb_data; gpointer handle; @@ -593,8 +585,9 @@ cb = g_object_get_data(G_OBJECT(button), "extra-cb"); cb_data = g_object_get_data(G_OBJECT(button), "extra-cb-data"); - if (cb != NULL) - cb(cb_data, allfields); + if(cb != NULL) { + cb(cb_data, page); + } action_performed(button, handle); purple_request_close(PURPLE_REQUEST_FIELDS, handle); @@ -602,7 +595,7 @@ static void * finch_request_fields(const char *title, const char *primary, - const char *secondary, PurpleRequestFields *allfields, + const char *secondary, PurpleRequestPage *page, const char *ok, GCallback ok_cb, const char *cancel, GCallback cancel_cb, PurpleRequestCommonParameters *cpar, @@ -623,7 +616,8 @@ box = gnt_vbox_new(FALSE); gnt_box_set_pad(GNT_BOX(box), 0); gnt_box_set_fill(GNT_BOX(box), TRUE); - for (grlist = purple_request_fields_get_groups(allfields); grlist; grlist = grlist->next) + for(grlist = purple_request_page_get_groups(page); grlist; + grlist = grlist->next) { PurpleRequestGroup *group = grlist->data; GList *fields = purple_request_group_get_fields(group); @@ -684,8 +678,8 @@ } gnt_box_add_widget(GNT_BOX(window), box); - box = setup_button_box(window, userdata, request_fields_cb, allfields, - ok, ok_cb, cancel, cancel_cb, NULL); + box = setup_button_box(window, userdata, request_fields_cb, page, + ok, ok_cb, cancel, cancel_cb, NULL); extra_actions = purple_request_cpar_get_extra_actions(cpar); for (GSList *it = extra_actions; it; it = it->next) { @@ -697,7 +691,7 @@ g_object_set_data(G_OBJECT(button), "extra-cb", extra_action->value); g_object_set_data(G_OBJECT(button), "extra-cb-data", userdata); g_signal_connect(G_OBJECT(button), "activate", - G_CALLBACK(multifield_extra_cb), allfields); + G_CALLBACK(multifield_extra_cb), page); } help_cb = purple_request_cpar_get_help_cb(cpar, &help_data); @@ -717,7 +711,7 @@ g_signal_connect(username, "completion", G_CALLBACK(update_selected_account), accountlist); } - g_object_set_data(G_OBJECT(window), "fields", allfields); + g_object_set_data_full(G_OBJECT(window), "fields", page, g_object_unref); return window; } @@ -857,10 +851,10 @@ void finch_request_save_in_prefs(G_GNUC_UNUSED gpointer data, - PurpleRequestFields *allfields) + PurpleRequestPage *page) { GList *list; - for (list = purple_request_fields_get_groups(allfields); list; list = list->next) { + for(list = purple_request_page_get_groups(page); list; list = list->next) { PurpleRequestGroup *group = list->data; GList *fields = purple_request_group_get_fields(group);
--- a/finch/gntrequest.h Tue Mar 07 00:22:36 2023 -0600 +++ b/finch/gntrequest.h Tue Mar 07 01:04:42 2023 -0600 @@ -61,12 +61,12 @@ /** * finch_request_save_in_prefs: * @data: No longer used, set to %NULL. - * @fields: The #PurpleRequestFields to save. + * @page: The #PurpleRequestPage to save. * * Save the request fields in preferences where the id attribute of each field is the * id of a preference. */ -void finch_request_save_in_prefs(gpointer data, PurpleRequestFields *fields); +void finch_request_save_in_prefs(gpointer data, PurpleRequestPage *page); /** * finch_request_field_get_widget:
--- a/libpurple/account.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/account.c Tue Mar 07 01:04:42 2023 -0600 @@ -227,13 +227,12 @@ } static void -request_password_ok_cb(PurpleAccount *account, PurpleRequestFields *fields) -{ +request_password_ok_cb(PurpleAccount *account, PurpleRequestPage *page) { const char *entry; gboolean remember; - entry = purple_request_fields_get_string(fields, "password"); - remember = purple_request_fields_get_bool(fields, "remember"); + entry = purple_request_page_get_string(page, "password"); + remember = purple_request_page_get_bool(page, "remember"); if (!entry || !*entry) { @@ -266,7 +265,7 @@ static void request_password_cancel_cb(PurpleAccount *account, - G_GNUC_UNUSED PurpleRequestFields *fields) + G_GNUC_UNUSED PurpleRequestPage *page) { /* Disable the account as the user has cancelled connecting */ purple_account_set_enabled(account, FALSE); @@ -315,13 +314,12 @@ } static void -change_password_cb(PurpleAccount *account, PurpleRequestFields *fields) -{ +change_password_cb(PurpleAccount *account, PurpleRequestPage *page) { const char *orig_pass, *new_pass_1, *new_pass_2; - orig_pass = purple_request_fields_get_string(fields, "password"); - new_pass_1 = purple_request_fields_get_string(fields, "new_password_1"); - new_pass_2 = purple_request_fields_get_string(fields, "new_password_2"); + orig_pass = purple_request_page_get_string(page, "password"); + new_pass_1 = purple_request_page_get_string(page, "new_password_1"); + new_pass_2 = purple_request_page_get_string(page, "new_password_2"); if (g_utf8_collate(new_pass_1, new_pass_2)) { @@ -332,12 +330,12 @@ return; } - if ((purple_request_fields_is_field_required(fields, "password") && - (orig_pass == NULL || *orig_pass == '\0')) || - (purple_request_fields_is_field_required(fields, "new_password_1") && - (new_pass_1 == NULL || *new_pass_1 == '\0')) || - (purple_request_fields_is_field_required(fields, "new_password_2") && - (new_pass_2 == NULL || *new_pass_2 == '\0'))) + if((purple_request_page_is_field_required(page, "password") && + purple_strempty(orig_pass)) || + (purple_request_page_is_field_required(page, "new_password_1") && + purple_strempty(new_pass_1)) || + (purple_request_page_is_field_required(page, "new_password_2") && + purple_strempty(new_pass_2))) { purple_notify_error(account, NULL, _("Fill out all fields completely."), NULL, @@ -1065,7 +1063,7 @@ const gchar *username; PurpleRequestGroup *group; PurpleRequestField *field; - PurpleRequestFields *fields; + PurpleRequestPage *page; /* Close any previous password request windows */ purple_request_close_with_handle(account); @@ -1074,9 +1072,9 @@ primary = g_strdup_printf(_("Enter password for %s (%s)"), username, purple_account_get_protocol_name(account)); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("password", _("Enter Password"), NULL, FALSE); purple_request_field_string_set_masked(field, TRUE); @@ -1086,7 +1084,7 @@ field = purple_request_field_bool_new("remember", _("Save password"), FALSE); purple_request_group_add_field(group, field); - purple_request_fields(account, NULL, primary, NULL, fields, _("OK"), + purple_request_fields(account, NULL, primary, NULL, page, _("OK"), ok_cb, _("Cancel"), cancel_cb, purple_request_cpar_from_account(account), user_data); g_free(primary); @@ -1095,7 +1093,7 @@ void purple_account_request_change_password(PurpleAccount *account) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; PurpleConnection *gc; @@ -1109,10 +1107,10 @@ if (gc != NULL) protocol = purple_connection_get_protocol(gc); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("password", _("Original password"), NULL, FALSE); @@ -1144,7 +1142,7 @@ purple_request_fields(purple_account_get_connection(account), NULL, primary, _("Please enter your current password and your new " - "password."), fields, _("OK"), G_CALLBACK(change_password_cb), + "password."), page, _("OK"), G_CALLBACK(change_password_cb), _("Cancel"), NULL, purple_request_cpar_from_account(account), account); }
--- a/libpurple/plugins/idle/idle.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/plugins/idle/idle.c Tue Mar 07 01:04:42 2023 -0600 @@ -83,11 +83,10 @@ } static void -idle_action_ok(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) -{ - PurpleAccount *acct = purple_request_fields_get_account(fields, "acct"); +idle_action_ok(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { + PurpleAccount *acct = purple_request_page_get_account(page, "acct"); PurpleContactInfo *info = PURPLE_CONTACT_INFO(acct); - int tm = purple_request_fields_get_integer(fields, "mins"); + int tm = purple_request_page_get_integer(page, "mins"); /* only add the account to the GList if it's not already been idled */ if(!unidle_filter(acct)) { @@ -100,12 +99,11 @@ } static void -idle_all_action_ok(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) -{ +idle_all_action_ok(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { PurpleAccountManager *manager = NULL; PurpleAccount *acct = NULL; GList *list, *iter; - int tm = purple_request_fields_get_integer(fields, "mins"); + int tm = purple_request_page_get_integer(page, "mins"); manager = purple_account_manager_get_default(); list = purple_account_manager_get_enabled(manager); @@ -129,9 +127,8 @@ } static void -unidle_action_ok(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) -{ - PurpleAccount *acct = purple_request_fields_get_account(fields, "acct"); +unidle_action_ok(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { + PurpleAccount *acct = purple_request_page_get_account(page, "acct"); set_idle_time(acct, 0); /* unidle the account */ @@ -158,7 +155,7 @@ { /* Use the super fancy request API */ - PurpleRequestFields *request; + PurpleRequestPage *request; PurpleRequestGroup *group; PurpleRequestField *field; @@ -172,8 +169,8 @@ field = purple_request_field_int_new("mins", _("Minutes"), 10, 0, 9999); purple_request_group_add_field(group, field); - request = purple_request_fields_new(); - purple_request_fields_add_group(request, group); + request = purple_request_page_new(); + purple_request_page_add_group(request, group); purple_request_fields(data, N_("I'dle Mak'er"), @@ -190,7 +187,7 @@ G_GNUC_UNUSED GVariant *parameter, gpointer data) { - PurpleRequestFields *request; + PurpleRequestPage *request; PurpleRequestGroup *group; PurpleRequestField *field; @@ -207,8 +204,8 @@ purple_request_field_account_set_show_all(field, FALSE); purple_request_group_add_field(group, field); - request = purple_request_fields_new(); - purple_request_fields_add_group(request, group); + request = purple_request_page_new(); + purple_request_page_add_group(request, group); purple_request_fields(data, N_("I'dle Mak'er"), @@ -225,7 +222,7 @@ G_GNUC_UNUSED GVariant *parameter, gpointer data) { - PurpleRequestFields *request; + PurpleRequestPage *request; PurpleRequestGroup *group; PurpleRequestField *field; @@ -234,8 +231,8 @@ field = purple_request_field_int_new("mins", _("Minutes"), 10, 0, 9999); purple_request_group_add_field(group, field); - request = purple_request_fields_new(); - purple_request_fields_add_group(request, group); + request = purple_request_page_new(); + purple_request_page_add_group(request, group); purple_request_fields(data, N_("I'dle Mak'er"),
--- a/libpurple/protocols/demo/purpledemoprotocolactions.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/demo/purpledemoprotocolactions.c Tue Mar 07 01:04:42 2023 -0600 @@ -367,7 +367,7 @@ static void purple_demo_protocol_request_fields_ok_cb(G_GNUC_UNUSED gpointer data, - PurpleRequestFields *fields) + PurpleRequestPage *page) { PurpleAccount *account = NULL; PurpleRequestField *field = NULL; @@ -378,30 +378,30 @@ info = g_string_new(_("Basic group:\n")); g_string_append_printf(info, _("\tString: %s\n"), - purple_request_fields_get_string(fields, "string")); + purple_request_page_get_string(page, "string")); g_string_append_printf(info, _("\tMultiline string: %s\n"), - purple_request_fields_get_string(fields, - "multiline-string")); + purple_request_page_get_string(page, + "multiline-string")); g_string_append_printf(info, _("\tMasked string: %s\n"), - purple_request_fields_get_string(fields, - "masked-string")); + purple_request_page_get_string(page, + "masked-string")); g_string_append_printf(info, _("\tAlphanumeric string: %s\n"), - purple_request_fields_get_string(fields, - "alphanumeric")); + purple_request_page_get_string(page, + "alphanumeric")); g_string_append_printf(info, _("\tEmail string: %s\n"), - purple_request_fields_get_string(fields, "email")); + purple_request_page_get_string(page, "email")); g_string_append_printf(info, _("\tInteger: %d\n"), - purple_request_fields_get_integer(fields, "int")); + purple_request_page_get_integer(page, "int")); g_string_append_printf(info, _("\tBoolean: %s\n"), - purple_request_fields_get_bool(fields, "bool") ? + purple_request_page_get_bool(page, "bool") ? _("TRUE") : _("FALSE")); g_string_append(info, _("Multiple-choice group:\n")); - tmp = (const char *)purple_request_fields_get_choice(fields, "choice"); + tmp = (const char *)purple_request_page_get_choice(page, "choice"); g_string_append_printf(info, _("\tChoice: %s\n"), tmp); - field = purple_request_fields_get_field(fields, "list"); + field = purple_request_page_get_field(page, "list"); list = purple_request_field_list_get_selected(field); if(list != NULL) { tmp = (const char *)list->data; @@ -410,7 +410,7 @@ } g_string_append_printf(info, _("\tList: %s\n"), tmp); - field = purple_request_fields_get_field(fields, "multilist"); + field = purple_request_page_get_field(page, "multilist"); list = purple_request_field_list_get_selected(field); g_string_append(info, _("\tMulti-list: [")); while(list != NULL) { @@ -423,7 +423,7 @@ g_string_append(info, _("Special group:\n")); - account = purple_request_fields_get_account(fields, "account"); + account = purple_request_page_get_account(page, "account"); if(PURPLE_IS_ACCOUNT(account)) { tmp = purple_contact_info_get_name_for_display(PURPLE_CONTACT_INFO(account)); } else { @@ -438,7 +438,7 @@ static void purple_demo_protocol_request_fields_cancel_cb(G_GNUC_UNUSED gpointer data, - G_GNUC_UNUSED PurpleRequestFields *fields) + G_GNUC_UNUSED PurpleRequestPage *page) { g_message(_("UI cancelled field request")); } @@ -452,7 +452,7 @@ const gchar *account_id = NULL; PurpleAccountManager *manager = NULL; PurpleAccount *account = NULL; - PurpleRequestFields *fields = NULL; + PurpleRequestPage *page = NULL; PurpleRequestGroup *group = NULL; PurpleRequestField *field = NULL; GBytes *icon = NULL; @@ -470,11 +470,11 @@ account = purple_account_manager_find_by_id(manager, account_id); connection = purple_account_get_connection(account); - fields = purple_request_fields_new(); + page = purple_request_page_new(); /* This group will contain basic fields. */ group = purple_request_group_new(_("Basic")); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_label_new("basic-label", _("This group contains basic fields")); @@ -512,7 +512,7 @@ /* This group will contain fields with multiple options. */ group = purple_request_group_new(_("Multiple")); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_label_new("multiple-label", _("This group contains fields with multiple options")); @@ -542,7 +542,7 @@ /* This group will contain specialized fields. */ group = purple_request_group_new(_("Special")); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_label_new("special-label", _("This group contains specialized fields")); @@ -562,7 +562,7 @@ purple_request_group_add_field(group, field); purple_request_fields(connection, _("Request Fields Demo"), - _("Please fill out these fields…"), NULL, fields, + _("Please fill out these fields…"), NULL, page, _("OK"), G_CALLBACK(purple_demo_protocol_request_fields_ok_cb), _("Cancel"),
--- a/libpurple/protocols/facebook/util.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/facebook/util.c Tue Mar 07 01:04:42 2023 -0600 @@ -295,8 +295,7 @@ } static void -fb_util_request_buddy_ok(gpointer *request_data, PurpleRequestFields *fields) -{ +fb_util_request_buddy_ok(gpointer *request_data, PurpleRequestPage *page) { FbUtilRequestBuddyFunc func = request_data[0]; GList *l; GList *select; @@ -310,7 +309,7 @@ return; } - field = purple_request_fields_get_field(fields, "buddy"); + field = purple_request_page_get_field(page, "buddy"); select = purple_request_field_list_get_selected(field); for (l = select; l != NULL; l = l->next) { @@ -327,7 +326,7 @@ static void fb_util_request_buddy_cancel(gpointer *request_data, - G_GNUC_UNUSED PurpleRequestFields *fields) + G_GNUC_UNUSED PurpleRequestPage *page) { FbUtilRequestBuddyFunc func = request_data[1]; gpointer data = request_data[2]; @@ -382,7 +381,7 @@ PurpleRequestCommonParameters *cpar; PurpleRequestField *field; PurpleRequestGroup *group; - PurpleRequestFields *fields; + PurpleRequestPage *page; request_data = g_new0(gpointer, 3); request_data[0] = ok_cb; @@ -393,9 +392,9 @@ buddies = purple_blist_find_buddies(acct, NULL); buddies = g_slist_sort(buddies, fb_buddy_cmp); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_list_new("buddy", NULL); purple_request_field_list_set_multi_select(field, multi); @@ -422,7 +421,7 @@ g_list_free_full(items, g_free); cpar = purple_request_cpar_from_connection(gc); - return purple_request_fields(gc, title, primary, secondary, fields, + return purple_request_fields(gc, title, primary, secondary, page, _("Ok"), G_CALLBACK(fb_util_request_buddy_ok), _("Cancel"),
--- a/libpurple/protocols/gg/multilogon.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/gg/multilogon.c Tue Mar 07 01:04:42 2023 -0600 @@ -217,7 +217,7 @@ { ggp_multilogon_session_data *mldata = ggp_multilogon_get_mldata(gc); PurpleRequestField *field; - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestCommonParameters *cpar; PurpleRequestDatasheet *sheet; @@ -227,9 +227,9 @@ if (mldata->dialog_handle != NULL) return; - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); sheet = purple_request_datasheet_new(); purple_request_datasheet_add_column(sheet, @@ -253,7 +253,7 @@ purple_request_cpar_set_icon(cpar, PURPLE_REQUEST_ICON_DIALOG); dialog_handle = purple_request_fields(gc, - _("Other Gadu-Gadu sessions"), NULL, NULL, fields, + _("Other Gadu-Gadu sessions"), NULL, NULL, page, NULL, NULL, _("Close"), NULL, cpar, NULL); mldata->sheet_handle = sheet;
--- a/libpurple/protocols/gg/pubdir-prpl.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/gg/pubdir-prpl.c Tue Mar 07 01:04:42 2023 -0600 @@ -727,16 +727,15 @@ } static void -ggp_pubdir_search_request(PurpleConnection *gc, PurpleRequestFields *fields) -{ +ggp_pubdir_search_request(PurpleConnection *gc, PurpleRequestPage *page) { ggp_pubdir_search_form *form = g_new0(ggp_pubdir_search_form, 1); purple_debug_info("gg", "ggp_pubdir_search_request"); - form->nick = g_strdup(purple_request_fields_get_string(fields, "name")); - form->city = g_strdup(purple_request_fields_get_string(fields, "city")); + form->nick = g_strdup(purple_request_page_get_string(page, "name")); + form->city = g_strdup(purple_request_page_get_string(page, "city")); form->gender = - GPOINTER_TO_INT(purple_request_fields_get_choice(fields, "gender")); + GPOINTER_TO_INT(purple_request_page_get_choice(page, "gender")); form->offset = 0; form->limit = GGP_PUBDIR_SEARCH_PER_PAGE; @@ -747,15 +746,15 @@ void ggp_pubdir_search(PurpleConnection *gc, const ggp_pubdir_search_form *form) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; purple_debug_info("gg", "ggp_pubdir_search"); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("name", _("Name"), form ? form->nick : NULL, FALSE); @@ -775,7 +774,7 @@ purple_request_group_add_field(group, field); purple_request_fields(gc, _("Find buddies"), _("Find buddies"), - _("Please, enter your search criteria below"), fields, + _("Please, enter your search criteria below"), page, _("OK"), G_CALLBACK(ggp_pubdir_search_request), _("Cancel"), NULL, purple_request_cpar_from_connection(gc), gc); @@ -892,7 +891,7 @@ } static void -ggp_pubdir_set_info_request(PurpleConnection *gc, PurpleRequestFields *fields) +ggp_pubdir_set_info_request(PurpleConnection *gc, PurpleRequestPage *page) { PurpleAccount *account = purple_connection_get_account(gc); PurpleContactInfo *info = PURPLE_CONTACT_INFO(account); @@ -904,24 +903,23 @@ purple_debug_info("gg", "ggp_pubdir_set_info_request"); record->uin = uin; - record->first_name = - g_strdup(purple_request_fields_get_string(fields, "first_name")); - record->last_name = - g_strdup(purple_request_fields_get_string(fields, "last_name")); - record->gender = - GPOINTER_TO_INT(purple_request_fields_get_choice(fields, "gender")); - record->city = g_strdup(purple_request_fields_get_string(fields, "city")); - record->province = GPOINTER_TO_INT( - purple_request_fields_get_choice(fields, "province")); + record->first_name = g_strdup(purple_request_page_get_string(page, + "first_name")); + record->last_name = g_strdup(purple_request_page_get_string(page, + "last_name")); + record->gender = GPOINTER_TO_INT(purple_request_page_get_choice(page, + "gender")); + record->city = g_strdup(purple_request_page_get_string(page, "city")); + record->province = GPOINTER_TO_INT(purple_request_page_get_choice(page, + "province")); - birth_s = g_strdup_printf( - "%sT10:00:00+00:00", - purple_request_fields_get_string(fields, "birth_date")); + birth_s = g_strdup_printf("%sT10:00:00+00:00", + purple_request_page_get_string(page, "birth_date")); record->birth = g_date_time_new_from_iso8601(birth_s, NULL); g_free(birth_s); purple_debug_info("gg", "ggp_pubdir_set_info_request: birth [%lu][%s]", g_date_time_to_unix(record->birth), - purple_request_fields_get_string(fields, "birth_date")); + purple_request_page_get_string(page, "birth_date")); url = g_strdup_printf("http://api.gadu-gadu.pl/users/%u.xml", uin); ggp_oauth_request(gc, ggp_pubdir_set_info_got_token, record, "PUT", url); @@ -934,7 +932,7 @@ G_GNUC_UNUSED int next_offset, G_GNUC_UNUSED gpointer data) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; gchar *bday = NULL; @@ -946,9 +944,9 @@ record = (records_count == 1 ? &records[0] : NULL); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("first_name", _("First name"), record ? record->first_name : NULL, @@ -1005,7 +1003,7 @@ } purple_request_fields(gc, _("Set User Info"), _("Set User Info"), NULL, - fields, _("OK"), + page, _("OK"), G_CALLBACK(ggp_pubdir_set_info_request), _("Cancel"), NULL, purple_request_cpar_from_connection(gc), gc); }
--- a/libpurple/protocols/gg/status.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/gg/status.c Tue Mar 07 01:04:42 2023 -0600 @@ -204,11 +204,6 @@ * Own status. ******************************************************************************/ -static void ggp_status_broadcasting_dialog_ok(PurpleConnection *gc, - PurpleRequestFields *fields); - -/******************************************************************************/ - void ggp_status_set_initial(PurpleConnection *gc, struct gg_login_params *glp) { ggp_status_session_data *ssdata = ggp_status_get_ssdata(gc); @@ -339,15 +334,23 @@ purple_account_get_active_status(account)); } +static void +ggp_status_broadcasting_dialog_ok(PurpleConnection *gc, + PurpleRequestPage *page) +{ + gboolean buddies_only = purple_request_page_get_bool(page, "buddies_only"); + ggp_status_set_status_broadcasting(gc, !buddies_only); +} + void ggp_status_broadcasting_dialog(PurpleConnection *gc) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_bool_new("buddies_only", _("Show status only for buddies"), @@ -358,19 +361,12 @@ _("Change status broadcasting"), _("Please, select who can see your status"), NULL, - fields, + page, _("OK"), G_CALLBACK(ggp_status_broadcasting_dialog_ok), _("Cancel"), NULL, purple_request_cpar_from_connection(gc), gc); } -static void ggp_status_broadcasting_dialog_ok(PurpleConnection *gc, - PurpleRequestFields *fields) -{ - ggp_status_set_status_broadcasting(gc, - !purple_request_fields_get_bool(fields, "buddies_only")); -} - /******************************************************************************* * Buddy status. ******************************************************************************/
--- a/libpurple/protocols/jabber/auth.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/jabber/auth.c Tue Mar 07 01:04:42 2023 -0600 @@ -74,8 +74,7 @@ } static void -auth_old_pass_cb(PurpleConnection *gc, PurpleRequestFields *fields) -{ +auth_old_pass_cb(PurpleConnection *gc, PurpleRequestPage *page) { PurpleAccount *account; JabberStream *js; const char *entry; @@ -87,8 +86,8 @@ 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"); + entry = purple_request_page_get_string(page, "password"); + remember = purple_request_page_get_bool(page, "remember"); if (!entry || !*entry) { @@ -116,9 +115,7 @@ } static void -auth_no_pass_cb(PurpleConnection *gc, - G_GNUC_UNUSED PurpleRequestFields *fields) -{ +auth_no_pass_cb(PurpleConnection *gc, G_GNUC_UNUSED PurpleRequestPage *page) { /* TODO: the password prompt dialog doesn't get disposed if the account disconnects */ PURPLE_ASSERT_CONNECTION_IS_VALID(gc);
--- a/libpurple/protocols/jabber/buddy.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/jabber/buddy.c Tue Mar 07 01:04:42 2023 -0600 @@ -555,8 +555,7 @@ * Sets the vCard with data from PurpleRequestFields. */ static void -jabber_format_info(PurpleConnection *gc, PurpleRequestFields *fields) -{ +jabber_format_info(PurpleConnection *gc, PurpleRequestPage *page) { PurpleXmlNode *vc_node; PurpleRequestField *field; PurpleProtocol *protocol = NULL; @@ -574,7 +573,7 @@ if (*vc_tp->label == '\0') continue; - field = purple_request_fields_get_field(fields, vc_tp->tag); + field = purple_request_page_get_field(page, vc_tp->tag); text = purple_request_field_string_get_value(field); @@ -619,7 +618,7 @@ PurpleAccountManager *manager = NULL; PurpleAccount *account = NULL; PurpleConnection *connection = NULL; - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; const struct vcard_template *vc_tp; @@ -637,9 +636,9 @@ account = purple_account_manager_find_by_id(manager, account_id); connection = purple_account_get_connection(account); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); /* * Get existing, XML-formatted, user info @@ -691,7 +690,7 @@ _("Edit XMPP vCard"), _("All items below are optional. Enter only the " "information with which you feel comfortable."), - fields, + page, _("Save"), G_CALLBACK(jabber_format_info), _("Cancel"), NULL, purple_request_cpar_from_connection(connection),
--- a/libpurple/protocols/jabber/jabber.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/jabber/jabber.c Tue Mar 07 01:04:42 2023 -0600 @@ -1861,15 +1861,14 @@ g_free(data); } -static void jabber_password_change_cb(JabberStream *js, - PurpleRequestFields *fields) -{ +static void +jabber_password_change_cb(JabberStream *js, PurpleRequestPage *page) { const char *p1, *p2; JabberIq *iq; PurpleXmlNode *query, *y; - p1 = purple_request_fields_get_string(fields, "password1"); - p2 = purple_request_fields_get_string(fields, "password2"); + p1 = purple_request_page_get_string(page, "password1"); + p2 = purple_request_page_get_string(page, "password2"); if(!purple_strequal(p1, p2)) { purple_notify_error(js->gc, NULL, @@ -1903,7 +1902,7 @@ PurpleAccount *account = NULL; PurpleConnection *connection = NULL; JabberStream *js = NULL; - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; @@ -1918,9 +1917,9 @@ connection = purple_account_get_connection(account); js = purple_connection_get_protocol_data(connection); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("password1", _("Password"), "", FALSE); @@ -1937,7 +1936,7 @@ purple_request_fields(connection, _("Change XMPP Password"), _("Change XMPP Password"), _("Please enter your new password"), - fields, + page, _("OK"), G_CALLBACK(jabber_password_change_cb), _("Cancel"), NULL, purple_request_cpar_from_connection(connection), js); @@ -2613,17 +2612,15 @@ static void jabber_media_cancel_cb(JabberMediaRequest *request, - G_GNUC_UNUSED PurpleRequestFields *fields) + G_GNUC_UNUSED PurpleRequestPage *page) { g_free(request->who); g_free(request); } static void -jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestFields *fields) -{ - PurpleRequestField *field = - purple_request_fields_get_field(fields, "resource"); +jabber_media_ok_cb(JabberMediaRequest *request, PurpleRequestPage *page) { + PurpleRequestField *field = purple_request_page_get_field(page, "resource"); const gchar *selected = purple_request_field_choice_get_value(field); gchar *who = g_strdup_printf("%s/%s", request->who, selected); jabber_initiate_media(request->media, request->account, who, request->type); @@ -2697,12 +2694,12 @@ * we need to pick one to initiate with */ GList *l; char *msg; - PurpleRequestFields *fields; - PurpleRequestField *field = purple_request_field_choice_new( - "resource", _("Resource"), 0); - PurpleRequestGroup *group; + PurpleRequestPage *page = NULL; + PurpleRequestField *field = NULL; + PurpleRequestGroup *group = NULL; JabberMediaRequest *request; + field = purple_request_field_choice_new("resource", _("Resource"), 0); for(l = jb->resources; l; l = l->next) { JabberBuddyResource *ljbr = l->data; @@ -2750,7 +2747,7 @@ } msg = g_strdup_printf(_("Please select the resource of %s with which you would like to start a media session."), who); - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); request = g_new0(JabberMediaRequest, 1); request->media = media; @@ -2759,9 +2756,9 @@ request->type = type; purple_request_group_add_field(group, field); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); purple_request_fields(account, _("Select a Resource"), msg, - NULL, fields, _("Initiate Media"), + NULL, page, _("Initiate Media"), G_CALLBACK(jabber_media_ok_cb), _("Cancel"), G_CALLBACK(jabber_media_cancel_cb), purple_request_cpar_from_account(account),
--- a/libpurple/protocols/jabber/si.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/jabber/si.c Tue Mar 07 01:04:42 2023 -0600 @@ -1469,7 +1469,7 @@ static void resource_select_cancel_cb(PurpleXfer *xfer, - G_GNUC_UNUSED PurpleRequestFields *fields) + G_GNUC_UNUSED PurpleRequestPage *page) { purple_xfer_cancel_local(xfer); } @@ -1516,9 +1516,10 @@ g_free(who); } -static void resource_select_ok_cb(PurpleXfer *xfer, PurpleRequestFields *fields) +static void +resource_select_ok_cb(PurpleXfer *xfer, PurpleRequestPage *page) { - PurpleRequestField *field = purple_request_fields_get_field(fields, "resource"); + PurpleRequestField *field = purple_request_page_get_field(page, "resource"); const char *selected_label = purple_request_field_choice_get_value(field); do_transfer_send(xfer, selected_label); @@ -1587,7 +1588,7 @@ /* we've got multiple resources, we need to pick one to send to */ GList *l; char *msg = g_strdup_printf(_("Please select the resource of %s to which you would like to send a file"), purple_xfer_get_remote_user(xfer)); - PurpleRequestFields *fields = purple_request_fields_new(); + PurpleRequestPage *page = purple_request_page_new(); PurpleRequestField *field = purple_request_field_choice_new("resource", _("Resource"), 0); PurpleRequestGroup *group = purple_request_group_new(NULL); @@ -1598,9 +1599,9 @@ purple_request_group_add_field(group, field); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); - purple_request_fields(jsx->js->gc, _("Select a Resource"), msg, NULL, fields, + purple_request_fields(jsx->js->gc, _("Select a Resource"), msg, NULL, page, _("Send File"), G_CALLBACK(resource_select_ok_cb), _("Cancel"), G_CALLBACK(resource_select_cancel_cb), purple_request_cpar_from_connection(jsx->js->gc), xfer);
--- a/libpurple/protocols/jabber/xdata.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/protocols/jabber/xdata.c Tue Mar 07 01:04:42 2023 -0600 @@ -47,7 +47,8 @@ PurpleRequestGroup *actiongroup; }; -static void jabber_x_data_ok_cb(struct jabber_x_data_data *data, PurpleRequestFields *fields) { +static void +jabber_x_data_ok_cb(struct jabber_x_data_data *data, PurpleRequestPage *page) { PurpleXmlNode *result = purple_xmlnode_new("x"); GCallback cb = data->cb; gpointer user_data = data->user_data; @@ -59,7 +60,7 @@ purple_xmlnode_set_namespace(result, "jabber:x:data"); purple_xmlnode_set_attrib(result, "type", "submit"); - for(groups = purple_request_fields_get_groups(fields); groups; groups = groups->next) { + for(groups = purple_request_page_get_groups(page); groups; groups = groups->next) { if(groups->data == data->actiongroup) { for(flds = purple_request_group_get_fields(groups->data); flds; flds = flds->next) { PurpleRequestField *field = flds->data; @@ -157,7 +158,7 @@ static void jabber_x_data_cancel_cb(struct jabber_x_data_data *data, - G_GNUC_UNUSED PurpleRequestFields *fields) + G_GNUC_UNUSED PurpleRequestPage *page) { PurpleXmlNode *result = purple_xmlnode_new("x"); GCallback cb = data->cb; @@ -190,7 +191,7 @@ { void *handle; PurpleXmlNode *fn, *x; - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field = NULL; @@ -204,9 +205,9 @@ data->cb = G_CALLBACK(cb); data->js = js; - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); for(fn = purple_xmlnode_get_child(packet, "field"); fn; fn = purple_xmlnode_get_next_twin(fn)) { PurpleXmlNode *valuenode; @@ -366,7 +367,7 @@ int i; data->actiongroup = group = purple_request_group_new(_("Actions")); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); actionfield = purple_request_field_choice_new("libpurple:jabber:xdata:actions", _("Select an action"), GINT_TO_POINTER(defaultaction)); for(i = 0, action = actions; action; action = g_list_next(action), i++) { @@ -385,7 +386,7 @@ if((x = purple_xmlnode_get_child(packet, "instructions"))) instructions = purple_xmlnode_get_data(x); - handle = purple_request_fields(js->gc, title, title, instructions, fields, + handle = purple_request_fields(js->gc, title, title, instructions, page, _("OK"), G_CALLBACK(jabber_x_data_ok_cb), _("Cancel"), G_CALLBACK(jabber_x_data_cancel_cb), purple_request_cpar_from_connection(js->gc),
--- a/libpurple/purplechatconversation.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/purplechatconversation.c Tue Mar 07 01:04:42 2023 -0600 @@ -1035,7 +1035,7 @@ } static void -invite_user_to_chat(gpointer data, PurpleRequestFields *fields) { +invite_user_to_chat(gpointer data, PurpleRequestPage *page) { PurpleChatConversation *chat; PurpleChatConversationPrivate *priv; PurpleConnection *pc; @@ -1044,8 +1044,8 @@ chat = PURPLE_CHAT_CONVERSATION(data); priv = purple_chat_conversation_get_instance_private(chat); - user = purple_request_fields_get_string(fields, "screenname"); - message = purple_request_fields_get_string(fields, "message"); + user = purple_request_page_get_string(page, "screenname"); + message = purple_request_page_get_string(page, "message"); pc = purple_conversation_get_connection(PURPLE_CONVERSATION(chat)); purple_serv_chat_invite(pc, priv->id, message, user); @@ -1057,7 +1057,7 @@ gboolean confirm) { PurpleAccount *account; - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; @@ -1076,9 +1076,9 @@ return; } - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(_("Invite to chat")); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("screenname", _("Buddy"), user, FALSE); @@ -1093,7 +1093,7 @@ purple_request_fields(chat, _("Invite to chat"), NULL, _("Please enter the name of the user you wish to " "invite, along with an optional invite message."), - fields, + page, _("Invite"), G_CALLBACK(invite_user_to_chat), _("Cancel"), NULL, purple_request_cpar_from_conversation(PURPLE_CONVERSATION(chat)),
--- a/libpurple/purpleprivate.h Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/purpleprivate.h Tue Mar 07 01:04:42 2023 -0600 @@ -338,10 +338,10 @@ */ G_GNUC_INTERNAL void purple_account_set_enabled_plain(PurpleAccount *account, gboolean enabled); -G_GNUC_INTERNAL void _purple_request_field_list_add_field(PurpleRequestFields *fields, PurpleRequestField *field); -G_GNUC_INTERNAL void _purple_request_field_list_set_field_required(PurpleRequestFields *fields, PurpleRequestField *field, gboolean required); -G_GNUC_INTERNAL void _purple_request_field_list_set_field_validator(PurpleRequestFields *fields, PurpleRequestField *field, gboolean validator); -G_GNUC_INTERNAL void _purple_request_group_set_field_list(PurpleRequestGroup *group, PurpleRequestFields *fields); +G_GNUC_INTERNAL void _purple_request_page_add_field(PurpleRequestPage *fields, PurpleRequestField *field); +G_GNUC_INTERNAL void _purple_request_page_set_field_required(PurpleRequestPage *fields, PurpleRequestField *field, gboolean required); +G_GNUC_INTERNAL void _purple_request_page_set_field_validator(PurpleRequestPage *fields, PurpleRequestField *field, gboolean validator); +G_GNUC_INTERNAL void _purple_request_group_set_page(PurpleRequestGroup *group, PurpleRequestPage *fields); G_GNUC_INTERNAL void _purple_request_group_set_field_required(PurpleRequestGroup *group, PurpleRequestField *field, gboolean required); G_GNUC_INTERNAL void _purple_request_group_set_field_validator(PurpleRequestGroup *group, PurpleRequestField *field, gboolean validator); G_GNUC_INTERNAL void _purple_request_field_set_group(PurpleRequestField *field, PurpleRequestGroup *group);
--- a/libpurple/purplerequestgroup.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/purplerequestgroup.c Tue Mar 07 01:04:42 2023 -0600 @@ -28,7 +28,7 @@ struct _PurpleRequestGroup { GObject parent; - PurpleRequestFields *fields_list; + PurpleRequestPage *page; char *title; @@ -171,12 +171,12 @@ } void -_purple_request_group_set_field_list(PurpleRequestGroup *group, - PurpleRequestFields *fields) +_purple_request_group_set_page(PurpleRequestGroup *group, + PurpleRequestPage *page) { g_return_if_fail(PURPLE_IS_REQUEST_GROUP(group)); - group->fields_list = fields; + group->page = page; } void @@ -186,8 +186,7 @@ { g_return_if_fail(PURPLE_IS_REQUEST_GROUP(group)); - _purple_request_field_list_set_field_required(group->fields_list, field, - required); + _purple_request_page_set_field_required(group->page, field, required); } void @@ -197,8 +196,7 @@ { g_return_if_fail(PURPLE_IS_REQUEST_GROUP(group)); - _purple_request_field_list_set_field_validator(group->fields_list, field, - validator); + _purple_request_page_set_field_validator(group->page, field, validator); } void @@ -213,8 +211,8 @@ position = g_list_length(group->fields); group->fields = g_list_append(group->fields, field); - if(group->fields_list != NULL) { - _purple_request_field_list_add_field(group->fields_list, field); + if(PURPLE_IS_REQUEST_PAGE(group->page)) { + _purple_request_page_add_field(group->page, field); } _purple_request_field_set_group(field, group); @@ -238,10 +236,10 @@ return group->fields; } -PurpleRequestFields * -purple_request_group_get_fields_list(PurpleRequestGroup *group) +PurpleRequestPage * +purple_request_group_get_page(PurpleRequestGroup *group) { g_return_val_if_fail(PURPLE_IS_REQUEST_GROUP(group), NULL); - return group->fields_list; + return group->page; }
--- a/libpurple/purplerequestgroup.h Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/purplerequestgroup.h Tue Mar 07 01:04:42 2023 -0600 @@ -87,14 +87,14 @@ GList *purple_request_group_get_fields(PurpleRequestGroup *group); /** - * purple_request_group_get_fields_list: + * purple_request_group_get_page: * @group: The group. * * Returns a list of all fields in a group. * * Returns: (transfer none): The list of fields in the group. */ -PurpleRequestFields *purple_request_group_get_fields_list(PurpleRequestGroup *group); +PurpleRequestPage *purple_request_group_get_page(PurpleRequestGroup *group); G_END_DECLS
--- a/libpurple/purplerequestpage.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/purplerequestpage.c Tue Mar 07 01:04:42 2023 -0600 @@ -25,8 +25,9 @@ #include "purplerequestpage.h" #include "purpleprivate.h" -struct _PurpleRequestFields -{ +struct _PurpleRequestPage { + GObject parent; + GList *groups; GHashTable *fields; @@ -38,92 +39,134 @@ void *ui_data; }; -PurpleRequestFields * -purple_request_fields_new(void) -{ - PurpleRequestFields *fields; +/****************************************************************************** + * GListModel Implementation + *****************************************************************************/ +static GType +purple_request_page_get_item_type(G_GNUC_UNUSED GListModel *model) { + return PURPLE_TYPE_REQUEST_GROUP; +} + +static guint +purple_request_page_get_n_items(GListModel *model) { + PurpleRequestPage *page = PURPLE_REQUEST_PAGE(model); + + return g_list_length(page->groups); +} + +static gpointer +purple_request_page_get_item(GListModel *model, guint index) { + PurpleRequestPage *page = PURPLE_REQUEST_PAGE(model); + + return g_list_nth_data(page->groups, index); +} + +static void +purple_request_page_list_model_init(GListModelInterface *iface) { + iface->get_item_type = purple_request_page_get_item_type; + iface->get_item = purple_request_page_get_item; + iface->get_n_items = purple_request_page_get_n_items; +} - fields = g_new0(PurpleRequestFields, 1); +/****************************************************************************** + * GObject Implementation + *****************************************************************************/ +G_DEFINE_TYPE_WITH_CODE(PurpleRequestPage, purple_request_page, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE(G_TYPE_LIST_MODEL, + purple_request_page_list_model_init)) + +static void +purple_request_page_finalize(GObject *obj) { + PurpleRequestPage *page = PURPLE_REQUEST_PAGE(obj); + + g_list_free_full(page->groups, g_object_unref); + g_list_free(page->required_fields); + g_list_free(page->validated_fields); + g_hash_table_destroy(page->fields); + + G_OBJECT_CLASS(purple_request_page_parent_class)->finalize(obj); +} - fields->fields = g_hash_table_new_full(g_str_hash, g_str_equal, - g_free, NULL); +static void +purple_request_page_init(PurpleRequestPage *page) { + page->fields = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); +} + +static void +purple_request_page_class_init(PurpleRequestPageClass *klass) { + GObjectClass *obj_class = G_OBJECT_CLASS(klass); - return fields; + obj_class->finalize = purple_request_page_finalize; +} + +/****************************************************************************** + * Public API + *****************************************************************************/ +PurpleRequestPage * +purple_request_page_new(void) { + return g_object_new(PURPLE_TYPE_REQUEST_PAGE, NULL); } void -purple_request_fields_destroy(PurpleRequestFields *fields) +_purple_request_page_set_field_required(PurpleRequestPage *page, + PurpleRequestField *field, + gboolean required) { - g_return_if_fail(fields != NULL); - - g_list_free_full(fields->groups, g_object_unref); - g_list_free(fields->required_fields); - g_list_free(fields->validated_fields); - g_hash_table_destroy(fields->fields); - g_free(fields); -} - -void -_purple_request_field_list_set_field_required(PurpleRequestFields *fields, - PurpleRequestField *field, - gboolean required) -{ - g_return_if_fail(fields != NULL); + g_return_if_fail(PURPLE_IS_REQUEST_PAGE(page)); if(required) { - fields->required_fields = g_list_append(fields->required_fields, field); + page->required_fields = g_list_append(page->required_fields, field); } else { - fields->required_fields = g_list_remove(fields->required_fields, field); + page->required_fields = g_list_remove(page->required_fields, field); } } void -_purple_request_field_list_set_field_validator(PurpleRequestFields *fields, - PurpleRequestField *field, - gboolean validator) +_purple_request_page_set_field_validator(PurpleRequestPage *page, + PurpleRequestField *field, + gboolean validator) { - g_return_if_fail(fields != NULL); + g_return_if_fail(PURPLE_IS_REQUEST_PAGE(page)); - fields->validated_fields = g_list_remove(fields->validated_fields, field); + page->validated_fields = g_list_remove(page->validated_fields, field); if(validator) { - fields->validated_fields = g_list_append(fields->validated_fields, - field); + page->validated_fields = g_list_append(page->validated_fields, field); } } void -_purple_request_field_list_add_field(PurpleRequestFields *fields, - PurpleRequestField *field) +_purple_request_page_add_field(PurpleRequestPage *page, + PurpleRequestField *field) { - g_return_if_fail(fields != NULL); + g_return_if_fail(PURPLE_IS_REQUEST_PAGE(page)); - g_hash_table_insert(fields->fields, + g_hash_table_insert(page->fields, g_strdup(purple_request_field_get_id(field)), field); if(purple_request_field_is_required(field)) { - fields->required_fields = g_list_append(fields->required_fields, - field); + page->required_fields = g_list_append(page->required_fields, field); } if(purple_request_field_is_validatable(field)) { - fields->validated_fields = g_list_append(fields->validated_fields, - field); + page->validated_fields = g_list_append(page->validated_fields, field); } } void -purple_request_fields_add_group(PurpleRequestFields *fields, - PurpleRequestGroup *group) +purple_request_page_add_group(PurpleRequestPage *page, + PurpleRequestGroup *group) { + guint position; GList *l; PurpleRequestField *field; - g_return_if_fail(fields != NULL); + g_return_if_fail(PURPLE_IS_REQUEST_PAGE(page)); g_return_if_fail(PURPLE_IS_REQUEST_GROUP(group)); - fields->groups = g_list_append(fields->groups, group); + position = g_list_length(page->groups); + page->groups = g_list_append(page->groups, group); - _purple_request_group_set_field_list(group, fields); + _purple_request_group_set_page(group, page); for (l = purple_request_group_get_fields(group); l != NULL; @@ -131,78 +174,75 @@ field = l->data; - g_hash_table_insert(fields->fields, - g_strdup(purple_request_field_get_id(field)), field); + g_hash_table_insert(page->fields, + g_strdup(purple_request_field_get_id(field)), + field); if (purple_request_field_is_required(field)) { - fields->required_fields = - g_list_append(fields->required_fields, field); + page->required_fields = g_list_append(page->required_fields, + field); } if (purple_request_field_is_validatable(field)) { - fields->validated_fields = - g_list_append(fields->validated_fields, field); + page->validated_fields = g_list_append(page->validated_fields, + field); } } + + g_list_model_items_changed(G_LIST_MODEL(page), position, 0, 1); } GList * -purple_request_fields_get_groups(const PurpleRequestFields *fields) -{ - g_return_val_if_fail(fields != NULL, NULL); +purple_request_page_get_groups(PurpleRequestPage *page) { + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); - return fields->groups; + return page->groups; } gboolean -purple_request_fields_exists(const PurpleRequestFields *fields, const char *id) -{ - g_return_val_if_fail(fields != NULL, FALSE); +purple_request_page_exists(PurpleRequestPage *page, const char *id) { + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), FALSE); g_return_val_if_fail(id != NULL, FALSE); - return (g_hash_table_lookup(fields->fields, id) != NULL); + return (g_hash_table_lookup(page->fields, id) != NULL); } const GList * -purple_request_fields_get_required(const PurpleRequestFields *fields) -{ - g_return_val_if_fail(fields != NULL, NULL); +purple_request_page_get_required(PurpleRequestPage *page) { + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); - return fields->required_fields; + return page->required_fields; } const GList * -purple_request_fields_get_validatable(const PurpleRequestFields *fields) -{ - g_return_val_if_fail(fields != NULL, NULL); +purple_request_page_get_validatable(PurpleRequestPage *page) { + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); - return fields->validated_fields; + return page->validated_fields; } gboolean -purple_request_fields_is_field_required(const PurpleRequestFields *fields, - const char *id) +purple_request_page_is_field_required(PurpleRequestPage *page, const char *id) { PurpleRequestField *field; - g_return_val_if_fail(fields != NULL, FALSE); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), FALSE); g_return_val_if_fail(id != NULL, FALSE); - if ((field = purple_request_fields_get_field(fields, id)) == NULL) + if((field = purple_request_page_get_field(page, id)) == NULL) { return FALSE; + } return purple_request_field_is_required(field); } gboolean -purple_request_fields_all_required_filled(const PurpleRequestFields *fields) -{ +purple_request_page_all_required_filled(PurpleRequestPage *page) { GList *l; - g_return_val_if_fail(fields != NULL, FALSE); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), FALSE); - for (l = fields->required_fields; l != NULL; l = l->next) - { + for(l = page->required_fields; l != NULL; l = l->next) { PurpleRequestField *field = PURPLE_REQUEST_FIELD(l->data); if (!purple_request_field_is_filled(field)) @@ -213,14 +253,12 @@ } gboolean -purple_request_fields_all_valid(const PurpleRequestFields *fields) -{ +purple_request_page_all_valid(PurpleRequestPage *page) { GList *l; - g_return_val_if_fail(fields != NULL, FALSE); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), FALSE); - for (l = fields->validated_fields; l != NULL; l = l->next) - { + for(l = page->validated_fields; l != NULL; l = l->next) { PurpleRequestField *field = PURPLE_REQUEST_FIELD(l->data); if (!purple_request_field_is_valid(field, NULL)) @@ -231,14 +269,13 @@ } PurpleRequestField * -purple_request_fields_get_field(const PurpleRequestFields *fields, const char *id) -{ +purple_request_page_get_field(PurpleRequestPage *page, const char *id) { PurpleRequestField *field; - g_return_val_if_fail(fields != NULL, NULL); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); g_return_val_if_fail(id != NULL, NULL); - field = g_hash_table_lookup(fields->fields, id); + field = g_hash_table_lookup(page->fields, id); g_return_val_if_fail(PURPLE_IS_REQUEST_FIELD(field), NULL); @@ -246,88 +283,85 @@ } const char * -purple_request_fields_get_string(const PurpleRequestFields *fields, const char *id) -{ +purple_request_page_get_string(PurpleRequestPage *page, const char *id) { PurpleRequestField *field; - g_return_val_if_fail(fields != NULL, NULL); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); g_return_val_if_fail(id != NULL, NULL); - if ((field = purple_request_fields_get_field(fields, id)) == NULL) + if((field = purple_request_page_get_field(page, id)) == NULL) { return NULL; + } return purple_request_field_string_get_value(field); } int -purple_request_fields_get_integer(const PurpleRequestFields *fields, - const char *id) -{ +purple_request_page_get_integer(PurpleRequestPage *page, const char *id) { PurpleRequestField *field; - g_return_val_if_fail(fields != NULL, 0); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), 0); g_return_val_if_fail(id != NULL, 0); - if ((field = purple_request_fields_get_field(fields, id)) == NULL) + if((field = purple_request_page_get_field(page, id)) == NULL) { return 0; + } return purple_request_field_int_get_value(field); } gboolean -purple_request_fields_get_bool(const PurpleRequestFields *fields, const char *id) -{ +purple_request_page_get_bool(PurpleRequestPage *page, const char *id) { PurpleRequestField *field; - g_return_val_if_fail(fields != NULL, FALSE); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), FALSE); g_return_val_if_fail(id != NULL, FALSE); - if ((field = purple_request_fields_get_field(fields, id)) == NULL) + if((field = purple_request_page_get_field(page, id)) == NULL) { return FALSE; + } return purple_request_field_bool_get_value(field); } gpointer -purple_request_fields_get_choice(const PurpleRequestFields *fields, - const char *id) -{ +purple_request_page_get_choice(PurpleRequestPage *page, const char *id) { PurpleRequestField *field; - g_return_val_if_fail(fields != NULL, NULL); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); g_return_val_if_fail(id != NULL, NULL); - if ((field = purple_request_fields_get_field(fields, id)) == NULL) + if((field = purple_request_page_get_field(page, id)) == NULL) { return NULL; + } return purple_request_field_choice_get_value(field); } PurpleAccount * -purple_request_fields_get_account(const PurpleRequestFields *fields, - const char *id) -{ +purple_request_page_get_account(PurpleRequestPage *page, const char *id) { PurpleRequestField *field; - g_return_val_if_fail(fields != NULL, NULL); + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); g_return_val_if_fail(id != NULL, NULL); - if ((field = purple_request_fields_get_field(fields, id)) == NULL) + if((field = purple_request_page_get_field(page, id)) == NULL) { return NULL; + } return purple_request_field_account_get_value(field); } -gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields) -{ - g_return_val_if_fail(fields != NULL, NULL); +gpointer +purple_request_page_get_ui_data(PurpleRequestPage *page) { + g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), NULL); - return fields->ui_data; + return page->ui_data; } -void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data) -{ - g_return_if_fail(fields != NULL); +void +purple_request_page_set_ui_data(PurpleRequestPage *page, gpointer ui_data) { + g_return_if_fail(PURPLE_IS_REQUEST_PAGE(page)); - fields->ui_data = ui_data; + page->ui_data = ui_data; }
--- a/libpurple/purplerequestpage.h Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/purplerequestpage.h Tue Mar 07 01:04:42 2023 -0600 @@ -33,11 +33,11 @@ #include <glib-object.h> /** - * PurpleRequestFields: + * PurpleRequestPage: * * Multiple fields request data. */ -typedef struct _PurpleRequestFields PurpleRequestFields; +typedef struct _PurpleRequestPage PurpleRequestPage; #include "account.h" #include "purplerequestgroup.h" @@ -45,185 +45,169 @@ G_BEGIN_DECLS -/** - * purple_request_fields_new: - * - * Creates a list of fields to pass to purple_request_fields(). - * - * Returns: (transfer full): A PurpleRequestFields structure. - */ -PurpleRequestFields *purple_request_fields_new(void); +#define PURPLE_TYPE_REQUEST_PAGE (purple_request_page_get_type()) +G_DECLARE_FINAL_TYPE(PurpleRequestPage, purple_request_page, + PURPLE, REQUEST_PAGE, GObject) /** - * purple_request_fields_destroy: - * @fields: The list of fields to destroy. + * purple_request_page_new: + * + * Creates a page of fields to pass to [func@Purple.request_fields]. * - * Destroys a list of fields. + * Returns: (transfer full): The new request page. */ -void purple_request_fields_destroy(PurpleRequestFields *fields); +PurpleRequestPage *purple_request_page_new(void); /** - * purple_request_fields_add_group: - * @fields: The fields list. - * @group: The group to add. + * purple_request_page_add_group: + * @page: The fields page. + * @group: (transfer full): The group to add. * * Adds a group of fields to the list. */ -void purple_request_fields_add_group(PurpleRequestFields *fields, PurpleRequestGroup *group); +void purple_request_page_add_group(PurpleRequestPage *page, PurpleRequestGroup *group); /** - * purple_request_fields_get_groups: - * @fields: The fields list. + * purple_request_page_get_groups: + * @page: The fields page. * * Returns a list of all groups in a field list. * * Returns: (element-type PurpleRequestGroup) (transfer none): A list of groups. */ -GList *purple_request_fields_get_groups(const PurpleRequestFields *fields); +GList *purple_request_page_get_groups(PurpleRequestPage *page); /** - * purple_request_fields_exists: - * @fields: The fields list. - * @id: The ID of the field. + * purple_request_page_exists: + * @page: The fields page. + * @id: The ID of the field. * * Returns whether or not the field with the specified ID exists. * * Returns: TRUE if the field exists, or FALSE. */ -gboolean purple_request_fields_exists(const PurpleRequestFields *fields, - const char *id); +gboolean purple_request_page_exists(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_get_required: - * @fields: The fields list. + * purple_request_page_get_required: + * @page: The fields page. * * Returns a list of all required fields. * * Returns: (element-type PurpleRequestField) (transfer none): The list of required fields. */ -const GList *purple_request_fields_get_required( - const PurpleRequestFields *fields); +const GList *purple_request_page_get_required(PurpleRequestPage *page); /** - * purple_request_fields_get_validatable: - * @fields: The fields list. + * purple_request_page_get_validatable: + * @page: The fields page. * * Returns a list of all validated fields. * * Returns: (element-type PurpleRequestField) (transfer none): The list of validated fields. */ -const GList *purple_request_fields_get_validatable( - const PurpleRequestFields *fields); +const GList *purple_request_page_get_validatable(PurpleRequestPage *page); /** - * purple_request_fields_is_field_required: - * @fields: The fields list. - * @id: The field ID. + * purple_request_page_is_field_required: + * @page: The fields page. + * @id: The field ID. * * Returns whether or not a field with the specified ID is required. * * Returns: TRUE if the specified field is required, or FALSE. */ -gboolean purple_request_fields_is_field_required(const PurpleRequestFields *fields, - const char *id); +gboolean purple_request_page_is_field_required(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_all_required_filled: - * @fields: The fields list. + * purple_request_page_all_required_filled: + * @page: The fields page. * * Returns whether or not all required fields have values. * * Returns: TRUE if all required fields have values, or FALSE. */ -gboolean purple_request_fields_all_required_filled( - const PurpleRequestFields *fields); +gboolean purple_request_page_all_required_filled(PurpleRequestPage *page); /** - * purple_request_fields_all_valid: - * @fields: The fields list. + * purple_request_page_all_valid: + * @page: The fields page. * * Returns whether or not all fields are valid. * * Returns: TRUE if all fields are valid, or FALSE. */ -gboolean purple_request_fields_all_valid(const PurpleRequestFields *fields); +gboolean purple_request_page_all_valid(PurpleRequestPage *page); /** - * purple_request_fields_get_field: - * @fields: The fields list. - * @id: The ID of the field. + * purple_request_page_get_field: + * @page: The fields page. + * @id: The ID of the field. * * Return the field with the specified ID. * * Returns: (transfer none): The field, if found. */ -PurpleRequestField *purple_request_fields_get_field( - const PurpleRequestFields *fields, const char *id); +PurpleRequestField *purple_request_page_get_field(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_get_string: - * @fields: The fields list. - * @id: The ID of the field. + * purple_request_page_get_string: + * @page: The fields page. + * @id: The ID of the field. * * Returns the string value of a field with the specified ID. * * Returns: The string value, if found, or %NULL otherwise. */ -const char *purple_request_fields_get_string(const PurpleRequestFields *fields, - const char *id); +const char *purple_request_page_get_string(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_get_integer: - * @fields: The fields list. - * @id: The ID of the field. + * purple_request_page_get_integer: + * @page: The fields page. + * @id: The ID of the field. * * Returns the integer value of a field with the specified ID. * * Returns: The integer value, if found, or 0 otherwise. */ -int purple_request_fields_get_integer(const PurpleRequestFields *fields, - const char *id); +int purple_request_page_get_integer(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_get_bool: - * @fields: The fields list. - * @id: The ID of the field. + * purple_request_page_get_bool: + * @page: The fields page. + * @id: The ID of the field. * * Returns the boolean value of a field with the specified ID. * * Returns: The boolean value, if found, or %FALSE otherwise. */ -gboolean purple_request_fields_get_bool(const PurpleRequestFields *fields, - const char *id); +gboolean purple_request_page_get_bool(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_get_choice: - * @fields: The fields list. + * purple_request_page_get_choice: + * @page: The fields page. * @id: The ID of the field. * * Returns the choice index of a field with the specified ID. * * Returns: The choice value, if found, or NULL otherwise. */ -gpointer -purple_request_fields_get_choice(const PurpleRequestFields *fields, - const char *id); +gpointer purple_request_page_get_choice(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_get_account: - * @fields: The fields list. + * purple_request_page_get_account: + * @page: The fields page. * @id: The ID of the field. * * Returns the account of a field with the specified ID. * * Returns: (transfer none): The account value, if found, or %NULL otherwise. */ -PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields, - const char *id); +PurpleAccount *purple_request_page_get_account(PurpleRequestPage *page, const char *id); /** - * purple_request_fields_get_ui_data: - * @fields: The fields list. + * purple_request_page_get_ui_data: + * @page: The fields page. * * Returns the UI data associated with this object. * @@ -231,16 +215,16 @@ * convenience field provided to the UIs--it is not * used by the libpurple core. */ -gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields); +gpointer purple_request_page_get_ui_data(PurpleRequestPage *page); /** - * purple_request_fields_set_ui_data: - * @fields: The fields list. + * purple_request_page_set_ui_data: + * @page: The fields page. * @ui_data: A pointer to associate with this object. * * Set the UI data associated with this object. */ -void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data); +void purple_request_page_set_ui_data(PurpleRequestPage *page, gpointer ui_data); G_END_DECLS
--- a/libpurple/request.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/request.c Tue Mar 07 01:04:42 2023 -0600 @@ -621,11 +621,11 @@ } static void -purple_request_fields_strip_html(PurpleRequestFields *fields) +purple_request_fields_strip_html(PurpleRequestPage *page) { GList *itg; - for (itg = purple_request_fields_get_groups(fields); + for (itg = purple_request_page_get_groups(page); itg != NULL; itg = g_list_next(itg)) { @@ -652,18 +652,18 @@ void * purple_request_fields(void *handle, const char *title, const char *primary, - const char *secondary, PurpleRequestFields *fields, const char *ok_text, + const char *secondary, PurpleRequestPage *page, const char *ok_text, GCallback ok_cb, const char *cancel_text, GCallback cancel_cb, PurpleRequestCommonParameters *cpar, void *user_data) { PurpleRequestUiOps *ops; - if (G_UNLIKELY(fields == NULL || + if(G_UNLIKELY(!PURPLE_IS_REQUEST_PAGE(page) || ((ok_text == NULL) != (ok_cb == NULL)) || cancel_text == NULL)) { purple_request_cpar_unref(cpar); - g_warn_if_fail(fields != NULL); + g_warn_if_fail(PURPLE_IS_REQUEST_PAGE(page)); g_warn_if_fail((ok_text == NULL) != (ok_cb == NULL)); g_warn_if_fail(cancel_text != NULL); g_return_val_if_reached(NULL); @@ -674,7 +674,7 @@ if (purple_request_cpar_is_html(cpar) && !((ops->features & PURPLE_REQUEST_FEATURE_HTML))) { - purple_request_fields_strip_html(fields); + purple_request_fields_strip_html(page); } if (ops != NULL && ops->request_fields != NULL) { @@ -687,8 +687,9 @@ info->type = PURPLE_REQUEST_FIELDS; info->handle = handle; info->ui_handle = ops->request_fields(title, primary, secondary, - fields, ok_text, ok_cb, cancel_text, cancel_cb, - cpar, user_data); + page, ok_text, ok_cb, + cancel_text, cancel_cb, cpar, + user_data); handles = g_list_append(handles, info);
--- a/libpurple/request.h Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/request.h Tue Mar 07 01:04:42 2023 -0600 @@ -165,7 +165,7 @@ gfloat fraction); void *(*request_fields)(const char *title, const char *primary, - const char *secondary, PurpleRequestFields *fields, + const char *secondary, PurpleRequestPage *page, const char *ok_text, GCallback ok_cb, const char *cancel_text, GCallback cancel_cb, PurpleRequestCommonParameters *cpar, void *user_data); @@ -210,7 +210,7 @@ * values of those choice. */ typedef void (*PurpleRequestChoiceCb)(void *data, gpointer value); -typedef void (*PurpleRequestFieldsCb)(void *data, PurpleRequestFields *fields); +typedef void (*PurpleRequestFieldsCb)(void *data, PurpleRequestPage *page); typedef void (*PurpleRequestFileCb)(void *data, const char *filename); typedef void (*PurpleRequestHelpCb)(gpointer data); @@ -461,7 +461,7 @@ * #PurpleRequestFieldsCb function to use when the button is clicked. * Should be terminated with the NULL label. * - * Sets extra actions for the PurpleRequestFields dialog. + * Sets extra actions for the PurpleRequestPage dialog. */ void purple_request_cpar_set_extra_actions(PurpleRequestCommonParameters *cpar, ...); @@ -470,7 +470,7 @@ * purple_request_cpar_get_extra_actions: * @cpar: The parameters set (may be %NULL). * - * Gets extra actions for the PurpleRequestFields dialog. + * Gets extra actions for the PurpleRequestPage dialog. * * Returns: (element-type PurpleKeyValuePair) (transfer none): A list of actions (pairs of arguments, as in * setter). @@ -763,7 +763,7 @@ * @primary: The main point of the message, or %NULL if you're * feeling enigmatic. * @secondary: Secondary information, or %NULL if there is none. - * @fields: The list of fields. + * @page: The page of fields. * @ok_text: The text for the <literal>OK</literal> button, which may not be * %NULL. * @ok_cb: (scope notified): The callback for the <literal>OK</literal> button, which may @@ -783,7 +783,7 @@ */ void * purple_request_fields(void *handle, const char *title, const char *primary, - const char *secondary, PurpleRequestFields *fields, + const char *secondary, PurpleRequestPage *page, const char *ok_text, GCallback ok_cb, const char *cancel_text, GCallback cancel_cb, PurpleRequestCommonParameters *cpar,
--- a/libpurple/tests/test_credential_manager.c Tue Mar 07 00:22:36 2023 -0600 +++ b/libpurple/tests/test_credential_manager.c Tue Mar 07 01:04:42 2023 -0600 @@ -54,8 +54,6 @@ struct _TestPurpleCredentialProvider { PurpleCredentialProvider parent; - - PurpleRequestFields *fields; }; G_DEFINE_TYPE(TestPurpleCredentialProvider,
--- a/pidgin/gtkdialogs.c Tue Mar 07 00:22:36 2023 -0600 +++ b/pidgin/gtkdialogs.c Tue Mar 07 01:04:42 2023 -0600 @@ -47,30 +47,29 @@ }; static void -pidgin_dialogs_im_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) -{ +pidgin_dialogs_im_cb(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { PurpleAccount *account; const char *username; - account = purple_request_fields_get_account(fields, "account"); - username = purple_request_fields_get_string(fields, "screenname"); + account = purple_request_page_get_account(page, "account"); + username = purple_request_page_get_string(page, "screenname"); pidgin_dialogs_im_with_user(account, username); } static gboolean pidgin_dialogs_im_name_validator(G_GNUC_UNUSED PurpleRequestField *field, - char **errmsg, gpointer _fields) + char **errmsg, gpointer data) { - PurpleRequestFields *fields = _fields; + PurpleRequestPage *page = data; PurpleAccount *account; PurpleProtocol *protocol; const char *username; gboolean valid = FALSE; - account = purple_request_fields_get_account(fields, "account"); + account = purple_request_page_get_account(page, "account"); protocol = purple_account_get_protocol(account); - username = purple_request_fields_get_string(fields, "screenname"); + username = purple_request_page_get_string(page, "screenname"); if (username) { valid = purple_validate(protocol, username); @@ -85,19 +84,19 @@ void pidgin_dialogs_im(void) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE); purple_request_field_set_type_hint(field, "screenname"); purple_request_field_set_required(field, TRUE); - purple_request_field_set_validator(field, pidgin_dialogs_im_name_validator, fields); + purple_request_field_set_validator(field, pidgin_dialogs_im_name_validator, page); purple_request_group_add_field(group, field); field = purple_request_field_account_new("account", _("_Account"), NULL); @@ -112,7 +111,7 @@ purple_blist_get_default(), _("New Instant Message"), NULL, _("Please enter the username or alias of the person " "you would like to IM."), - fields, _("OK"), G_CALLBACK(pidgin_dialogs_im_cb), _("Cancel"), + page, _("OK"), G_CALLBACK(pidgin_dialogs_im_cb), _("Cancel"), NULL, NULL, NULL); } @@ -137,16 +136,14 @@ } static void -pidgin_dialogs_info_cb(G_GNUC_UNUSED gpointer data, - PurpleRequestFields *fields) -{ +pidgin_dialogs_info_cb(G_GNUC_UNUSED gpointer data, PurpleRequestPage *page) { char *username; PurpleAccount *account; const gchar *screenname = NULL; - account = purple_request_fields_get_account(fields, "account"); + account = purple_request_page_get_account(page, "account"); - screenname = purple_request_fields_get_string(fields, "screenname"); + screenname = purple_request_page_get_string(page, "screenname"); username = g_strdup(purple_normalize(account, screenname)); if(username != NULL && *username != '\0' && account != NULL) { @@ -160,14 +157,14 @@ void pidgin_dialogs_info(void) { - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *group; PurpleRequestField *field; - fields = purple_request_fields_new(); + page = purple_request_page_new(); group = purple_request_group_new(NULL); - purple_request_fields_add_group(fields, group); + purple_request_page_add_group(page, group); field = purple_request_field_string_new("screenname", _("_Name"), NULL, FALSE); purple_request_field_set_type_hint(field, "screenname"); @@ -186,7 +183,7 @@ purple_blist_get_default(), _("Get User Info"), NULL, _("Please enter the username or alias of the person " "whose info you would like to view."), - fields, _("OK"), G_CALLBACK(pidgin_dialogs_info_cb), + page, _("OK"), G_CALLBACK(pidgin_dialogs_info_cb), _("Cancel"), NULL, NULL, NULL); }
--- a/pidgin/gtkrequest.c Tue Mar 07 00:22:36 2023 -0600 +++ b/pidgin/gtkrequest.c Tue Mar 07 01:04:42 2023 -0600 @@ -65,7 +65,7 @@ struct { - PurpleRequestFields *fields; + PurpleRequestPage *page; } multifield; @@ -226,16 +226,16 @@ PurpleRequestField *field) { PurpleRequestGroup *group; - PurpleRequestFields *fields; + PurpleRequestPage *page; PidginRequestData *req_data; group = purple_request_field_get_group(field); - fields = purple_request_group_get_fields_list(group); - req_data = purple_request_fields_get_ui_data(fields); + page = purple_request_group_get_page(group); + req_data = purple_request_page_get_ui_data(page); gtk_widget_set_sensitive(req_data->ok_button, - purple_request_fields_all_required_filled(fields) && - purple_request_fields_all_valid(fields)); + purple_request_page_all_required_filled(page) && + purple_request_page_all_valid(page)); } static void @@ -283,7 +283,7 @@ if (data->cbs[0] != NULL) ((PurpleRequestFieldsCb)data->cbs[0])(data->user_data, - data->u.multifield.fields); + data->u.multifield.page); purple_request_close(PURPLE_REQUEST_FIELDS, data); } @@ -295,7 +295,7 @@ if (data->cbs[1] != NULL) ((PurpleRequestFieldsCb)data->cbs[1])(data->user_data, - data->u.multifield.fields); + data->u.multifield.page); purple_request_close(PURPLE_REQUEST_FIELDS, data); } @@ -310,7 +310,7 @@ cb = g_object_get_data(G_OBJECT(button), "extra-cb"); if (cb != NULL) - cb(data->user_data, data->u.multifield.fields); + cb(data->user_data, data->u.multifield.page); purple_request_close(PURPLE_REQUEST_FIELDS, data); } @@ -1879,7 +1879,7 @@ static void * pidgin_request_fields(const char *title, const char *primary, - const char *secondary, PurpleRequestFields *fields, const char *ok_text, + const char *secondary, PurpleRequestPage *page, const char *ok_text, GCallback ok_cb, const char *cancel_text, GCallback cancel_cb, PurpleRequestCommonParameters *cpar, void *user_data) { @@ -1905,9 +1905,9 @@ data = g_new0(PidginRequestData, 1); data->type = PURPLE_REQUEST_FIELDS; data->user_data = user_data; - data->u.multifield.fields = fields; - - purple_request_fields_set_ui_data(fields, data); + data->u.multifield.page = page; + + purple_request_page_set_ui_data(page, data); extra_actions = purple_request_cpar_get_extra_actions(cpar); @@ -2005,10 +2005,7 @@ gtk_box_append(GTK_BOX(vbox), label); } - for (gl = purple_request_fields_get_groups(fields); - gl != NULL; - gl = gl->next) - { + for(gl = purple_request_page_get_groups(page); gl != NULL; gl = gl->next) { GList *field_list; size_t field_count = 0; size_t cols = 1; @@ -2199,11 +2196,13 @@ g_object_unref(sg); g_object_unref(datasheet_buttons_sg); - if (!purple_request_fields_all_required_filled(fields)) + if(!purple_request_page_all_required_filled(page)) { gtk_widget_set_sensitive(data->ok_button, FALSE); - - if (!purple_request_fields_all_valid(fields)) + } + + if(!purple_request_page_all_valid(page)) { gtk_widget_set_sensitive(data->ok_button, FALSE); + } pidgin_auto_parent_window(win); @@ -2424,8 +2423,9 @@ gtk_window_destroy(GTK_WINDOW(data->dialog)); } - if (type == PURPLE_REQUEST_FIELDS) - purple_request_fields_destroy(data->u.multifield.fields); + if(type == PURPLE_REQUEST_FIELDS) { + g_clear_object(&data->u.multifield.page); + } g_free(data); }
--- a/pidgin/pidginmooddialog.c Tue Mar 07 00:22:36 2023 -0600 +++ b/pidgin/pidginmooddialog.c Tue Mar 07 01:04:42 2023 -0600 @@ -57,19 +57,19 @@ /*< private * pidgin_mood_edit_cb: * @connection: The #PurpleConnection instance. - * @fields: The #PurpleRequestFields + * @page: The #PurpleRequestPage * * This a callback function for when the request dialog has been accepted. */ static void pidgin_mood_dialog_edit_cb(PurpleConnection *connection, - PurpleRequestFields *fields) + PurpleRequestPage *page) { PurpleRequestField *mood_field = NULL; GList *l = NULL; const gchar *mood = NULL; - mood_field = purple_request_fields_get_field(fields, "mood"); + mood_field = purple_request_page_get_field(page, "mood"); l = purple_request_field_list_get_selected(mood_field); if(l == NULL) { @@ -87,7 +87,7 @@ if (flags & PURPLE_CONNECTION_FLAG_SUPPORT_MOOD_MESSAGES) { PurpleRequestField *text_field = NULL; - text_field = purple_request_fields_get_field(fields, "text"); + text_field = purple_request_page_get_field(page, "text"); text = purple_request_field_string_get_value(text_field); } else { text = NULL; @@ -245,7 +245,7 @@ void pidgin_mood_dialog_show(PurpleAccount *account) { const gchar *current_mood; - PurpleRequestFields *fields; + PurpleRequestPage *page; PurpleRequestGroup *g; PurpleRequestField *f; PurpleConnection *gc = NULL; @@ -264,7 +264,7 @@ current_mood = pidgin_mood_get_global_status(); } - fields = purple_request_fields_new(); + page = purple_request_page_new(); g = purple_request_group_new(NULL); f = purple_request_field_list_new("mood", _("Please select your mood from the list")); @@ -299,7 +299,7 @@ } purple_request_group_add_field(g, f); - purple_request_fields_add_group(fields, g); + purple_request_page_add_group(page, g); /* if the connection allows setting a mood message */ if (gc && (purple_connection_get_flags(gc) & PURPLE_CONNECTION_FLAG_SUPPORT_MOOD_MESSAGES)) { @@ -307,11 +307,11 @@ f = purple_request_field_string_new("text", _("Message (optional)"), NULL, FALSE); purple_request_group_add_field(g, f); - purple_request_fields_add_group(fields, g); + purple_request_page_add_group(page, g); } purple_request_fields(gc, _("Edit User Mood"), _("Edit User Mood"), - NULL, fields, + NULL, page, _("OK"), G_CALLBACK(pidgin_mood_dialog_edit_cb), _("Cancel"), NULL, purple_request_cpar_from_connection(gc), gc);