summaryrefslogtreecommitdiff
path: root/finch
diff options
context:
space:
mode:
authorElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-10 01:16:40 -0600
committerElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-10 01:16:40 -0600
commit5714a480d0e39787a006e05395d5fddd8e6625a4 (patch)
tree6abdad04f799a8132e8172f98b37a73b63a7e8c3 /finch
parent33dea489fea7bca54847b5c4275017676fcd2c5b (diff)
downloadpidgin-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.c11
-rw-r--r--finch/gntrequest.c32
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;