diff options
author | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2023-03-07 01:04:42 -0600 |
---|---|---|
committer | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2023-03-07 01:04:42 -0600 |
commit | a82fc1d0f0e040d201d31e12b1352329b6b6e0b8 (patch) | |
tree | 9ad482b2e8742f748895fbc29e3245ca582ae387 /finch | |
parent | 66dc29947dff7a229eee65749dafa6c6d314a0b2 (diff) | |
download | pidgin-a82fc1d0f0e040d201d31e12b1352329b6b6e0b8.tar.gz |
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/
Diffstat (limited to 'finch')
-rw-r--r-- | finch/gntblist.c | 80 | ||||
-rw-r--r-- | finch/gntplugin.c | 10 | ||||
-rw-r--r-- | finch/gntprefs.c | 24 | ||||
-rw-r--r-- | finch/gntrequest.c | 48 | ||||
-rw-r--r-- | finch/gntrequest.h | 4 |
5 files changed, 78 insertions, 88 deletions
diff --git a/finch/gntblist.c b/finch/gntblist.c index 6d703fa3e7..7fdd79a0ee 100644 --- a/finch/gntblist.c +++ b/finch/gntblist.c @@ -530,13 +530,12 @@ remove_new_empty_group(G_GNUC_UNUSED gpointer data) } 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 @@ finch_request_add_buddy(G_GNUC_UNUSED PurpleBuddyList *list, 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 @@ finch_request_add_buddy(G_GNUC_UNUSED PurpleBuddyList *list, 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 @@ join_chat(PurpleChat *chat) } 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 @@ add_chat_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *allfields) 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 @@ finch_request_add_chat(G_GNUC_UNUSED PurpleBuddyList *list, 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 @@ finch_request_add_chat(G_GNUC_UNUSED PurpleBuddyList *list, 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 @@ add_custom_action(GntMenu *menu, const char *label, GCallback callback, } 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 @@ chat_components_edit_ok(PurpleChat *chat, PurpleRequestFields *allfields) 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 @@ chat_components_edit(G_GNUC_UNUSED PurpleBlistNode *selected, PurpleChat *chat) 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 @@ chat_components_edit(G_GNUC_UNUSED PurpleBlistNode *selected, PurpleChat *chat) 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 @@ static void sort_blist_change_cb(G_GNUC_UNUSED GntMenuItem *item, gpointer n) /* 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 @@ send_im_select_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) 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 @@ send_im_select(G_GNUC_UNUSED GntMenuItem *item, G_GNUC_UNUSED gpointer n) 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 @@ join_chat_select_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) 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 @@ join_chat_select_cb(G_GNUC_UNUSED gpointer data, PurpleRequestFields *fields) 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 @@ join_chat_select(G_GNUC_UNUSED GntMenuItem *item, G_GNUC_UNUSED gpointer n) 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); } diff --git a/finch/gntplugin.c b/finch/gntplugin.c index 1f54f8ca93..05930acc75 100644 --- a/finch/gntplugin.c +++ b/finch/gntplugin.c @@ -534,13 +534,13 @@ static GntWidget* 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 @@ process_pref_frame(PurplePluginPrefFrame *frame) 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 @@ process_pref_frame(PurplePluginPrefFrame *frame) 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); diff --git a/finch/gntprefs.c b/finch/gntprefs.c index ca6f2e2ee5..bf1aafb8e5 100644 --- a/finch/gntprefs.c +++ b/finch/gntprefs.c @@ -230,21 +230,19 @@ free_strings(void) } 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 @@ add_pref_group(PurpleRequestFields *fields, const char *title, Prefs *prefs) 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); } diff --git a/finch/gntrequest.c b/finch/gntrequest.c index 5fb26f90da..9385574657 100644 --- a/finch/gntrequest.c +++ b/finch/gntrequest.c @@ -167,14 +167,8 @@ finch_request_input(const char *title, const char *primary, } 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 @@ finch_request_action(const char *title, const char *primary, } 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 @@ request_fields_cb(GntWidget *button, PurpleRequestFields *fields) * 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 @@ request_fields_cb(GntWidget *button, PurpleRequestFields *fields) 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 @@ create_account_field(PurpleRequestField *field) } 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 @@ multifield_extra_cb(GntWidget *button, PurpleRequestFields *allfields) 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 @@ multifield_extra_cb(GntWidget *button, PurpleRequestFields *allfields) 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 @@ finch_request_fields(const char *title, const char *primary, 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 @@ finch_request_fields(const char *title, const char *primary, } 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 @@ finch_request_fields(const char *title, const char *primary, 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 @@ finch_request_fields(const char *title, const char *primary, 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 @@ finch_request_uninit(void) 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); diff --git a/finch/gntrequest.h b/finch/gntrequest.h index 9af380f2cc..bc30598ca3 100644 --- a/finch/gntrequest.h +++ b/finch/gntrequest.h @@ -61,12 +61,12 @@ void finch_request_uninit(void); /** * 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: |