summaryrefslogtreecommitdiff
path: root/finch
diff options
context:
space:
mode:
authorElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-10 01:15:41 -0600
committerElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-10 01:15:41 -0600
commit33dea489fea7bca54847b5c4275017676fcd2c5b (patch)
treea01ee35485a78a6694fa65d1e461447e965694ab /finch
parent36dee2d7f7b622d9e1ecf873b4bfa4779179e13d (diff)
downloadpidgin-33dea489fea7bca54847b5c4275017676fcd2c5b.tar.gz
Make PurpleRequestFieldAccount into a GObject
This also does an `hg cp`, though with all the renaming of the parameter names, maybe that wasn't as useful for tracking the diff, and I should just make these new files entirely? Note, I didn't bother re-indenting some of the blocks, because they'll all eventually be moved when everything is subclassed. Testing Done: Compiled, and opened Request Fields from the Demo protocol. Reviewed at https://reviews.imfreedom.org/r/2331/
Diffstat (limited to 'finch')
-rw-r--r--finch/gntblist.c18
-rw-r--r--finch/gntrequest.c34
2 files changed, 32 insertions, 20 deletions
diff --git a/finch/gntblist.c b/finch/gntblist.c
index 7fdd79a0ee..8536671adc 100644
--- a/finch/gntblist.c
+++ b/finch/gntblist.c
@@ -601,9 +601,12 @@ finch_request_add_buddy(G_GNUC_UNUSED PurpleBuddyList *list,
purple_request_field_set_type_hint(field, "group");
field = purple_request_field_account_new("account", _("Account"), NULL);
- purple_request_field_account_set_show_all(field, FALSE);
- if (account)
- purple_request_field_account_set_value(field, account);
+ purple_request_field_account_set_show_all(PURPLE_REQUEST_FIELD_ACCOUNT(field),
+ FALSE);
+ if(account) {
+ purple_request_field_account_set_value(PURPLE_REQUEST_FIELD_ACCOUNT(field),
+ account);
+ }
purple_request_group_add_field(group, field);
purple_request_fields(NULL, _("Add Buddy"), NULL, _("Please enter buddy information."),
@@ -689,9 +692,12 @@ finch_request_add_chat(G_GNUC_UNUSED PurpleBuddyList *list,
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);
- if (account)
- purple_request_field_account_set_value(field, account);
+ purple_request_field_account_set_show_all(PURPLE_REQUEST_FIELD_ACCOUNT(field),
+ FALSE);
+ if(account) {
+ purple_request_field_account_set_value(PURPLE_REQUEST_FIELD_ACCOUNT(field),
+ account);
+ }
purple_request_group_add_field(group, field);
field = purple_request_field_string_new("name", _("Name"), name, FALSE);
diff --git a/finch/gntrequest.c b/finch/gntrequest.c
index 9385574657..224be0f40d 100644
--- a/finch/gntrequest.c
+++ b/finch/gntrequest.c
@@ -360,12 +360,16 @@ request_fields_cb(GntWidget *button, PurpleRequestPage *page) {
purple_request_field_list_set_selected(field, selected);
g_list_free(selected);
- }
- else if (type == PURPLE_REQUEST_FIELD_ACCOUNT)
- {
- GntWidget *combo = g_object_get_data(G_OBJECT(field), "finch-ui-data");
- PurpleAccount *acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo));
- purple_request_field_account_set_value(field, acc);
+
+ } else if (PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
+ GntWidget *combo = NULL;
+ PurpleAccount *acc = NULL;
+ PurpleRequestFieldAccount *afield = NULL;
+
+ combo = g_object_get_data(G_OBJECT(field), "finch-ui-data");
+ acc = gnt_combo_box_get_selected_data(GNT_COMBO_BOX(combo));
+ afield = PURPLE_REQUEST_FIELD_ACCOUNT(field);
+ purple_request_field_account_set_value(afield, acc);
}
}
}
@@ -529,14 +533,15 @@ add_account_to_combo(GntWidget *combo, PurpleAccount *account) {
static GntWidget*
create_account_field(PurpleRequestField *field)
{
+ PurpleRequestFieldAccount *afield = PURPLE_REQUEST_FIELD_ACCOUNT(field);
gboolean all;
PurpleAccount *def;
GntWidget *combo = gnt_combo_box_new();
- all = purple_request_field_account_get_show_all(field);
- def = purple_request_field_account_get_value(field);
- if (!def) {
- def = purple_request_field_account_get_default_value(field);
+ all = purple_request_field_account_get_show_all(afield);
+ def = purple_request_field_account_get_value(afield);
+ if(!PURPLE_IS_ACCOUNT(def)) {
+ def = purple_request_field_account_get_default_value(afield);
}
if(all) {
@@ -662,7 +667,7 @@ finch_request_fields(const char *title, const char *primary,
widget = create_choice_field(field);
} else if (type == PURPLE_REQUEST_FIELD_LIST) {
widget = create_list_field(field);
- } else if (type == PURPLE_REQUEST_FIELD_ACCOUNT) {
+ } else if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
accountlist = create_account_field(field);
widget = accountlist;
} else {
@@ -912,6 +917,9 @@ finch_request_save_in_prefs(G_GNUC_UNUSED gpointer data,
GntWidget *finch_request_field_get_widget(PurpleRequestField *field)
{
GntWidget *ret = NULL;
+ if(PURPLE_IS_REQUEST_FIELD_ACCOUNT(field)) {
+ ret = create_account_field(field);
+ } else {
switch (purple_request_field_get_field_type(field)) {
case PURPLE_REQUEST_FIELD_BOOLEAN:
ret = create_boolean_field(field);
@@ -928,14 +936,12 @@ GntWidget *finch_request_field_get_widget(PurpleRequestField *field)
case PURPLE_REQUEST_FIELD_LIST:
ret = create_list_field(field);
break;
- case PURPLE_REQUEST_FIELD_ACCOUNT:
- ret = create_account_field(field);
- break;
default:
purple_debug_error("GntRequest", "Unimplemented request-field %d\n",
purple_request_field_get_field_type(field));
break;
}
+ }
return ret;
}