summaryrefslogtreecommitdiff
path: root/finch
diff options
context:
space:
mode:
authorElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-07 01:04:42 -0600
committerElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-07 01:04:42 -0600
commita82fc1d0f0e040d201d31e12b1352329b6b6e0b8 (patch)
tree9ad482b2e8742f748895fbc29e3245ca582ae387 /finch
parent66dc29947dff7a229eee65749dafa6c6d314a0b2 (diff)
downloadpidgin-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.c80
-rw-r--r--finch/gntplugin.c10
-rw-r--r--finch/gntprefs.c24
-rw-r--r--finch/gntrequest.c48
-rw-r--r--finch/gntrequest.h4
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: