diff options
author | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2023-03-10 01:16:40 -0600 |
---|---|---|
committer | Elliott Sales de Andrade <quantum.analyst@gmail.com> | 2023-03-10 01:16:40 -0600 |
commit | 5714a480d0e39787a006e05395d5fddd8e6625a4 (patch) | |
tree | 6abdad04f799a8132e8172f98b37a73b63a7e8c3 /finch | |
parent | 33dea489fea7bca54847b5c4275017676fcd2c5b (diff) | |
download | pidgin-5714a480d0e39787a006e05395d5fddd8e6625a4.tar.gz |
Add a PurpleRequestFieldString subclass
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.
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/2324/
Diffstat (limited to 'finch')
-rw-r--r-- | finch/gntblist.c | 11 | ||||
-rw-r--r-- | finch/gntrequest.c | 32 |
2 files changed, 25 insertions, 18 deletions
diff --git a/finch/gntblist.c b/finch/gntblist.c index 8536671adc..d2e79e3c77 100644 --- a/finch/gntblist.c +++ b/finch/gntblist.c @@ -1000,8 +1000,9 @@ chat_components_edit_ok(PurpleChat *chat, PurpleRequestPage *page) id = purple_request_field_get_id(field); if (purple_request_field_get_field_type(field) == PURPLE_REQUEST_FIELD_INTEGER) val = g_strdup_printf("%d", purple_request_field_int_get_value(field)); - else - val = g_strdup(purple_request_field_string_get_value(field)); + else { + val = g_strdup(purple_request_field_string_get_value(PURPLE_REQUEST_FIELD_STRING(field))); + } if (!val) { g_hash_table_remove(purple_chat_get_components(chat), id); @@ -1040,8 +1041,10 @@ chat_components_edit(G_GNUC_UNUSED PurpleBlistNode *selected, PurpleChat *chat) } else { field = purple_request_field_string_new(pce->identifier, pce->label, g_hash_table_lookup(purple_chat_get_components(chat), pce->identifier), FALSE); - if (pce->secret) - purple_request_field_string_set_masked(field, TRUE); + if(pce->secret) { + purple_request_field_string_set_masked(PURPLE_REQUEST_FIELD_STRING(field), + TRUE); + } } if (pce->required) diff --git a/finch/gntrequest.c b/finch/gntrequest.c index 224be0f40d..3a78eb690d 100644 --- a/finch/gntrequest.c +++ b/finch/gntrequest.c @@ -299,13 +299,15 @@ request_fields_cb(GntWidget *button, PurpleRequestPage *page) { "finch-ui-data"); gboolean value = gnt_check_box_get_checked(GNT_CHECK_BOX(check)); purple_request_field_bool_set_value(field, value); - } - else if (type == PURPLE_REQUEST_FIELD_STRING) - { + } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { GntWidget *entry = g_object_get_data(G_OBJECT(field), "finch-ui-data"); const char *text = gnt_entry_get_text(GNT_ENTRY(entry)); - purple_request_field_string_set_value(field, (text && *text) ? text : NULL); + if(purple_strempty(text)) { + text = NULL; + } + purple_request_field_string_set_value(PURPLE_REQUEST_FIELD_STRING(field), + text); } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { @@ -424,11 +426,12 @@ create_boolean_field(PurpleRequestField *field) static GntWidget* create_string_field(PurpleRequestField *field, GntWidget **username) { + PurpleRequestFieldString *strfield = PURPLE_REQUEST_FIELD_STRING(field); const char *hint = purple_request_field_get_type_hint(field); GntWidget *entry = gnt_entry_new( - purple_request_field_string_get_default_value(field)); + purple_request_field_string_get_default_value(strfield)); gnt_entry_set_masked(GNT_ENTRY(entry), - purple_request_field_string_is_masked(field)); + purple_request_field_string_is_masked(strfield)); if (hint && g_str_has_prefix(hint, "screenname")) { PurpleBlistNode *node = purple_blist_get_default_root(); gboolean offline = g_str_has_suffix(hint, "all"); @@ -659,7 +662,7 @@ finch_request_fields(const char *title, const char *primary, if (type == PURPLE_REQUEST_FIELD_BOOLEAN) { widget = create_boolean_field(field); - } else if (type == PURPLE_REQUEST_FIELD_STRING) { + } else if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { widget = create_string_field(field, &username); } else if (type == PURPLE_REQUEST_FIELD_INTEGER) { widget = create_integer_field(field); @@ -870,6 +873,10 @@ finch_request_save_in_prefs(G_GNUC_UNUSED gpointer data, gpointer val = NULL; const char *id = purple_request_field_get_id(field); + if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { + PurpleRequestFieldString *sfield = PURPLE_REQUEST_FIELD_STRING(field); + val = (gpointer)purple_request_field_string_get_value(sfield); + } else { switch (type) { case PURPLE_REQUEST_FIELD_LIST: val = purple_request_field_list_get_selected(field)->data; @@ -881,12 +888,10 @@ finch_request_save_in_prefs(G_GNUC_UNUSED gpointer data, case PURPLE_REQUEST_FIELD_INTEGER: val = GINT_TO_POINTER(purple_request_field_int_get_value(field)); break; - case PURPLE_REQUEST_FIELD_STRING: - val = (gpointer)purple_request_field_string_get_value(field); - break; default: break; } + } pt = purple_prefs_get_pref_type(id); switch (pt) { @@ -917,16 +922,15 @@ 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)) { + if(PURPLE_IS_REQUEST_FIELD_STRING(field)) { + ret = create_string_field(field, NULL); + } else 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); break; - case PURPLE_REQUEST_FIELD_STRING: - ret = create_string_field(field, NULL); - break; case PURPLE_REQUEST_FIELD_INTEGER: ret = create_integer_field(field); break; |