summaryrefslogtreecommitdiff
path: root/libpurple
diff options
context:
space:
mode:
authorElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-17 00:47:16 -0500
committerElliott Sales de Andrade <quantum.analyst@gmail.com>2023-03-17 00:47:16 -0500
commitf107009d2649a96a3b93994bb197c2f2637c08a1 (patch)
tree7284403b6ecc447f99e0130f7457f5d839b4e833 /libpurple
parentd492e84c03fe66bd8f2466b0fa176c179261d831 (diff)
downloadpidgin-f107009d2649a96a3b93994bb197c2f2637c08a1.tar.gz
Remove tracking of required fields
The field required&filled status is now encapsulated in the valid property due to /r/2351. This means that UIs no longer need to check that all required fields are filled. So the page no longer needs to track required fields either. Testing Done: Compiled and ran `ninja test`. Also opened Request Fields from Demo protocol, removed the required string or entered an invalid email, and confirmed the OK button disabled correctly. Reviewed at https://reviews.imfreedom.org/r/2352/
Diffstat (limited to 'libpurple')
-rw-r--r--libpurple/protocols/demo/purpledemoprotocolactions.c1
-rw-r--r--libpurple/purpleprivate.h2
-rw-r--r--libpurple/purplerequestfield.c5
-rw-r--r--libpurple/purplerequestgroup.c10
-rw-r--r--libpurple/purplerequestpage.c42
-rw-r--r--libpurple/purplerequestpage.h12
6 files changed, 1 insertions, 71 deletions
diff --git a/libpurple/protocols/demo/purpledemoprotocolactions.c b/libpurple/protocols/demo/purpledemoprotocolactions.c
index 097e3539f7..ab3e9bbcda 100644
--- a/libpurple/protocols/demo/purpledemoprotocolactions.c
+++ b/libpurple/protocols/demo/purpledemoprotocolactions.c
@@ -486,6 +486,7 @@ purple_demo_protocol_request_fields_activate(G_GNUC_UNUSED GSimpleAction *action
field = purple_request_field_string_new("string", _("A string"),
_("default"), FALSE);
+ purple_request_field_set_required(field, TRUE);
purple_request_group_add_field(group, field);
field = purple_request_field_string_new("multiline-string",
_("A multiline string"),
diff --git a/libpurple/purpleprivate.h b/libpurple/purpleprivate.h
index 8db11650a2..33f89e490b 100644
--- a/libpurple/purpleprivate.h
+++ b/libpurple/purpleprivate.h
@@ -339,9 +339,7 @@ void purple_whiteboard_manager_shutdown(void);
G_GNUC_INTERNAL void purple_account_set_enabled_plain(PurpleAccount *account, gboolean enabled);
G_GNUC_INTERNAL void _purple_request_page_add_field(PurpleRequestPage *fields, PurpleRequestField *field);
-G_GNUC_INTERNAL void _purple_request_page_set_field_required(PurpleRequestPage *fields, PurpleRequestField *field, gboolean required);
G_GNUC_INTERNAL void _purple_request_group_set_page(PurpleRequestGroup *group, PurpleRequestPage *fields);
-G_GNUC_INTERNAL void _purple_request_group_set_field_required(PurpleRequestGroup *group, PurpleRequestField *field, gboolean required);
G_GNUC_INTERNAL void _purple_request_field_set_group(PurpleRequestField *field, PurpleRequestGroup *group);
G_END_DECLS
diff --git a/libpurple/purplerequestfield.c b/libpurple/purplerequestfield.c
index dd35db5aa2..3e95068137 100644
--- a/libpurple/purplerequestfield.c
+++ b/libpurple/purplerequestfield.c
@@ -403,11 +403,6 @@ purple_request_field_set_required(PurpleRequestField *field, gboolean required)
priv->required = required;
- if(PURPLE_IS_REQUEST_GROUP(priv->group)) {
- _purple_request_group_set_field_required(priv->group, field,
- required);
- }
-
g_object_freeze_notify(G_OBJECT(field));
g_object_notify_by_pspec(G_OBJECT(field), properties[PROP_REQUIRED]);
g_object_notify_by_pspec(G_OBJECT(field), properties[PROP_VALID]);
diff --git a/libpurple/purplerequestgroup.c b/libpurple/purplerequestgroup.c
index 490ca7723d..c50b592144 100644
--- a/libpurple/purplerequestgroup.c
+++ b/libpurple/purplerequestgroup.c
@@ -230,16 +230,6 @@ _purple_request_group_set_page(PurpleRequestGroup *group,
}
void
-_purple_request_group_set_field_required(PurpleRequestGroup *group,
- PurpleRequestField *field,
- gboolean required)
-{
- g_return_if_fail(PURPLE_IS_REQUEST_GROUP(group));
-
- _purple_request_page_set_field_required(group->page, field, required);
-}
-
-void
purple_request_group_add_field(PurpleRequestGroup *group,
PurpleRequestField *field)
{
diff --git a/libpurple/purplerequestpage.c b/libpurple/purplerequestpage.c
index d16a408295..eb08023081 100644
--- a/libpurple/purplerequestpage.c
+++ b/libpurple/purplerequestpage.c
@@ -37,8 +37,6 @@ struct _PurpleRequestPage {
GHashTable *invalid_groups;
GHashTable *fields;
-
- GList *required_fields;
};
enum {
@@ -137,7 +135,6 @@ purple_request_page_finalize(GObject *obj) {
g_list_free_full(page->groups, g_object_unref);
g_clear_pointer(&page->invalid_groups, g_hash_table_destroy);
- g_list_free(page->required_fields);
g_hash_table_destroy(page->fields);
G_OBJECT_CLASS(purple_request_page_parent_class)->finalize(obj);
@@ -181,20 +178,6 @@ purple_request_page_new(void) {
}
void
-_purple_request_page_set_field_required(PurpleRequestPage *page,
- PurpleRequestField *field,
- gboolean required)
-{
- g_return_if_fail(PURPLE_IS_REQUEST_PAGE(page));
-
- if(required) {
- page->required_fields = g_list_append(page->required_fields, field);
- } else {
- page->required_fields = g_list_remove(page->required_fields, field);
- }
-}
-
-void
_purple_request_page_add_field(PurpleRequestPage *page,
PurpleRequestField *field)
{
@@ -202,10 +185,6 @@ _purple_request_page_add_field(PurpleRequestPage *page,
g_hash_table_insert(page->fields,
g_strdup(purple_request_field_get_id(field)), field);
-
- if(purple_request_field_is_required(field)) {
- page->required_fields = g_list_append(page->required_fields, field);
- }
}
void
@@ -237,11 +216,6 @@ purple_request_page_add_group(PurpleRequestPage *page,
g_hash_table_insert(page->fields,
g_strdup(purple_request_field_get_id(field)),
field);
-
- if (purple_request_field_is_required(field)) {
- page->required_fields = g_list_append(page->required_fields,
- field);
- }
}
g_list_model_items_changed(G_LIST_MODEL(page), position, 0, 1);
@@ -278,22 +252,6 @@ purple_request_page_is_field_required(PurpleRequestPage *page, const char *id)
}
gboolean
-purple_request_page_all_required_filled(PurpleRequestPage *page) {
- GList *l;
-
- g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), FALSE);
-
- for(l = page->required_fields; l != NULL; l = l->next) {
- PurpleRequestField *field = PURPLE_REQUEST_FIELD(l->data);
-
- if (!purple_request_field_is_filled(field))
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
purple_request_page_is_valid(PurpleRequestPage *page) {
g_return_val_if_fail(PURPLE_IS_REQUEST_PAGE(page), FALSE);
diff --git a/libpurple/purplerequestpage.h b/libpurple/purplerequestpage.h
index a6dd247691..851fd72c83 100644
--- a/libpurple/purplerequestpage.h
+++ b/libpurple/purplerequestpage.h
@@ -110,18 +110,6 @@ gboolean purple_request_page_exists(PurpleRequestPage *page, const char *id);
gboolean purple_request_page_is_field_required(PurpleRequestPage *page, const char *id);
/**
- * purple_request_page_all_required_filled:
- * @page: The fields page.
- *
- * Returns whether or not all required fields have values.
- *
- * Returns: TRUE if all required fields have values, or FALSE.
- *
- * Since: 3.0.0
- */
-gboolean purple_request_page_all_required_filled(PurpleRequestPage *page);
-
-/**
* purple_request_page_is_valid:
* @page: The fields page.
*