diff options
author | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2023-03-10 17:17:53 -0600 |
---|---|---|
committer | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2023-03-10 17:17:53 -0600 |
commit | ccbb2c5906dbec65954745ae50fc6dcf32a66151 (patch) | |
tree | f93da8908f05e811b6612c63c086b414da32b936 /libpurple/protocols | |
parent | 376b58e87bd054fb09c73edcc31661110d7a2d97 (diff) | |
download | pidgin-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.c | 29 | ||||
-rw-r--r-- | libpurple/protocols/facebook/util.c | 13 | ||||
-rw-r--r-- | libpurple/protocols/jabber/xdata.c | 16 |
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); |