summaryrefslogtreecommitdiff
path: root/libpurple/protocols
diff options
context:
space:
mode:
authorElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-10 17:17:53 -0600
committerElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-10 17:17:53 -0600
commitccbb2c5906dbec65954745ae50fc6dcf32a66151 (patch)
treef93da8908f05e811b6612c63c086b414da32b936 /libpurple/protocols
parent376b58e87bd054fb09c73edcc31661110d7a2d97 (diff)
downloadpidgin-ccbb2c5906dbec65954745ae50fc6dcf32a66151.tar.gz
Convert PurpleRequestFieldList 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. Also could implement `GListModel`, but it takes arbitrary pointers too, so not right now. Testing Done: Compiled, and opened Request Fields from the Demo protocol. Reviewed at https://reviews.imfreedom.org/r/2336/
Diffstat (limited to 'libpurple/protocols')
-rw-r--r--libpurple/protocols/demo/purpledemoprotocolactions.c29
-rw-r--r--libpurple/protocols/facebook/util.c13
-rw-r--r--libpurple/protocols/jabber/xdata.c16
3 files changed, 35 insertions, 23 deletions
diff --git a/libpurple/protocols/demo/purpledemoprotocolactions.c b/libpurple/protocols/demo/purpledemoprotocolactions.c
index a3471eeb24..7ab29b5014 100644
--- a/libpurple/protocols/demo/purpledemoprotocolactions.c
+++ b/libpurple/protocols/demo/purpledemoprotocolactions.c
@@ -370,7 +370,7 @@ purple_demo_protocol_request_fields_ok_cb(G_GNUC_UNUSED gpointer data,
PurpleRequestPage *page)
{
PurpleAccount *account = NULL;
- PurpleRequestField *field = NULL;
+ PurpleRequestFieldList *field = NULL;
GList *list = NULL;
const char *tmp = NULL;
GString *info = NULL;
@@ -401,7 +401,8 @@ purple_demo_protocol_request_fields_ok_cb(G_GNUC_UNUSED gpointer data,
tmp = (const char *)purple_request_page_get_choice(page, "choice");
g_string_append_printf(info, _("\tChoice: %s\n"), tmp);
- field = purple_request_page_get_field(page, "list");
+ field = PURPLE_REQUEST_FIELD_LIST(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 +411,8 @@ purple_demo_protocol_request_fields_ok_cb(G_GNUC_UNUSED gpointer data,
}
g_string_append_printf(info, _("\tList: %s\n"), tmp);
- field = purple_request_page_get_field(page, "multilist");
+ field = PURPLE_REQUEST_FIELD_LIST(purple_request_page_get_field(page,
+ "multilist"));
list = purple_request_field_list_get_selected(field);
g_string_append(info, _("\tMulti-list: ["));
while(list != NULL) {
@@ -456,6 +458,7 @@ purple_demo_protocol_request_fields_activate(G_GNUC_UNUSED GSimpleAction *action
PurpleRequestGroup *group = NULL;
PurpleRequestField *field = NULL;
PurpleRequestFieldChoice *choice_field = NULL;
+ PurpleRequestFieldList *list_field = NULL;
GBytes *icon = NULL;
gconstpointer icon_data = NULL;
gsize icon_len = 0;
@@ -529,18 +532,20 @@ purple_demo_protocol_request_fields_activate(G_GNUC_UNUSED GSimpleAction *action
purple_request_group_add_field(group, field);
field = purple_request_field_list_new("list", _("A list"));
- purple_request_field_list_add_icon(field, _("foo"), NULL, "foo");
- purple_request_field_list_add_icon(field, _("bar"), NULL, "bar");
- purple_request_field_list_add_icon(field, _("baz"), NULL, "baz");
- purple_request_field_list_add_icon(field, _("quux"), NULL, "quux");
+ list_field = PURPLE_REQUEST_FIELD_LIST(field);
+ purple_request_field_list_add_icon(list_field, _("foo"), NULL, "foo");
+ purple_request_field_list_add_icon(list_field, _("bar"), NULL, "bar");
+ purple_request_field_list_add_icon(list_field, _("baz"), NULL, "baz");
+ purple_request_field_list_add_icon(list_field, _("quux"), NULL, "quux");
purple_request_group_add_field(group, field);
field = purple_request_field_list_new("multilist", _("A multi-select list"));
- purple_request_field_list_set_multi_select(field, TRUE);
- purple_request_field_list_add_icon(field, _("foo"), NULL, "foo");
- purple_request_field_list_add_icon(field, _("bar"), NULL, "bar");
- purple_request_field_list_add_icon(field, _("baz"), NULL, "baz");
- purple_request_field_list_add_icon(field, _("quux"), NULL, "quux");
+ list_field = PURPLE_REQUEST_FIELD_LIST(field);
+ purple_request_field_list_set_multi_select(list_field, TRUE);
+ purple_request_field_list_add_icon(list_field, _("foo"), NULL, "foo");
+ purple_request_field_list_add_icon(list_field, _("bar"), NULL, "bar");
+ purple_request_field_list_add_icon(list_field, _("baz"), NULL, "baz");
+ purple_request_field_list_add_icon(list_field, _("quux"), NULL, "quux");
purple_request_group_add_field(group, field);
/* This group will contain specialized fields. */
diff --git a/libpurple/protocols/facebook/util.c b/libpurple/protocols/facebook/util.c
index 9eb99271e1..4590e746dc 100644
--- a/libpurple/protocols/facebook/util.c
+++ b/libpurple/protocols/facebook/util.c
@@ -302,14 +302,15 @@ fb_util_request_buddy_ok(gpointer *request_data, PurpleRequestPage *page) {
gpointer data = request_data[2];
GSList *ret = NULL;
PurpleBuddy *bdy;
- PurpleRequestField *field;
+ PurpleRequestFieldList *field;
if (func == NULL) {
g_free(request_data);
return;
}
- field = purple_request_page_get_field(page, "buddy");
+ field = PURPLE_REQUEST_FIELD_LIST(purple_request_page_get_field(page,
+ "buddy"));
select = purple_request_field_list_get_selected(field);
for (l = select; l != NULL; l = l->next) {
@@ -380,6 +381,7 @@ fb_util_request_buddy(PurpleConnection *gc, const gchar *title,
PurpleAccount *acct;
PurpleRequestCommonParameters *cpar;
PurpleRequestField *field;
+ PurpleRequestFieldList *list;
PurpleRequestGroup *group;
PurpleRequestPage *page;
@@ -397,7 +399,8 @@ fb_util_request_buddy(PurpleConnection *gc, const gchar *title,
purple_request_page_add_group(page, group);
field = purple_request_field_list_new("buddy", NULL);
- purple_request_field_list_set_multi_select(field, multi);
+ list = PURPLE_REQUEST_FIELD_LIST(field);
+ purple_request_field_list_set_multi_select(list, multi);
purple_request_field_set_required(field, TRUE);
purple_request_group_add_field(group, field);
@@ -405,7 +408,7 @@ fb_util_request_buddy(PurpleConnection *gc, const gchar *title,
name = purple_buddy_get_name(l->data);
alias = purple_buddy_get_alias(l->data);
str = g_strdup_printf("%s (%s)", alias, name);
- purple_request_field_list_add_icon(field, str, NULL, l->data);
+ purple_request_field_list_add_icon(list, str, NULL, l->data);
g_free(str);
}
@@ -416,7 +419,7 @@ fb_util_request_buddy(PurpleConnection *gc, const gchar *title,
items = g_list_append(items, str);
}
- purple_request_field_list_set_selected(field, items);
+ purple_request_field_list_set_selected(list, items);
g_slist_free(buddies);
g_list_free_full(items, g_free);
diff --git a/libpurple/protocols/jabber/xdata.c b/libpurple/protocols/jabber/xdata.c
index 1cc3c78ed9..db1f1a536f 100644
--- a/libpurple/protocols/jabber/xdata.c
+++ b/libpurple/protocols/jabber/xdata.c
@@ -116,13 +116,14 @@ jabber_x_data_ok_cb(struct jabber_x_data_data *data, PurpleRequestPage *page) {
case JABBER_X_DATA_LIST_SINGLE:
case JABBER_X_DATA_LIST_MULTI:
{
- GList *selected = purple_request_field_list_get_selected(field);
+ PurpleRequestFieldList *lfield = PURPLE_REQUEST_FIELD_LIST(field);
+ GList *selected = purple_request_field_list_get_selected(lfield);
char *value;
fieldnode = purple_xmlnode_new_child(result, "field");
purple_xmlnode_set_attrib(fieldnode, "var", id);
while(selected) {
- value = purple_request_field_list_get_data(field, selected->data);
+ value = purple_request_field_list_get_data(lfield, selected->data);
valuenode = purple_xmlnode_new_child(fieldnode, "value");
if(value)
purple_xmlnode_insert_data(valuenode, value, -1);
@@ -265,13 +266,15 @@ void *jabber_x_data_request_with_actions(JabberStream *js, PurpleXmlNode *packet
g_string_free(str, TRUE);
} else if(purple_strequal(type, "list-single") || purple_strequal(type, "list-multi")) {
+ PurpleRequestFieldList *list_field = NULL;
PurpleXmlNode *optnode;
GList *selected = NULL;
field = purple_request_field_list_new(var, label);
+ list_field = PURPLE_REQUEST_FIELD_LIST(field);
if(purple_strequal(type, "list-multi")) {
- purple_request_field_list_set_multi_select(field, TRUE);
+ purple_request_field_list_set_multi_select(list_field, TRUE);
g_hash_table_replace(data->fields, g_strdup(var),
GINT_TO_POINTER(JABBER_X_DATA_LIST_MULTI));
} else {
@@ -302,9 +305,10 @@ void *jabber_x_data_request_with_actions(JabberStream *js, PurpleXmlNode *packet
data->values = g_slist_prepend(data->values, value);
- purple_request_field_list_add_icon(field, lbl, NULL, value);
- if(g_list_find_custom(selected, value, (GCompareFunc)strcmp))
- purple_request_field_list_add_selected(field, lbl);
+ purple_request_field_list_add_icon(list_field, lbl, NULL, value);
+ if(g_list_find_custom(selected, value, (GCompareFunc)strcmp)) {
+ purple_request_field_list_add_selected(list_field, lbl);
+ }
}
purple_request_group_add_field(group, field);