pidgin/pidgin

Split PurpleRequestFields into its own files

14 months ago, Elliott Sales de Andrade
77a267934abf
Parents b6e38c635deb
Children 78bae9d1b69b
Split PurpleRequestFields into its own files

As before, this uses `hg cp`, so it _looks_ like a bunch of deletion.

Again, there's a bit of private API for the cross-struct access, which should go away later.

I also named the file as it will be eventually, even though the class name hasn't been changed.

I did not do any other API changes to make this a simpler review.

Testing Done:
Compiled, and opened Request Fields from Demo.

Reviewed at https://reviews.imfreedom.org/r/2317/
--- a/libpurple/meson.build Sun Mar 05 02:16:11 2023 -0600
+++ b/libpurple/meson.build Sun Mar 05 02:26:17 2023 -0600
@@ -86,6 +86,7 @@
'purpleproxyinfo.c',
'purplerequestfield.c',
'purplerequestgroup.c',
+ 'purplerequestpage.c',
'purpleroomlistroom.c',
'purplesqlite3.c',
'purplesqlitehistoryadapter.c',
@@ -193,6 +194,7 @@
'purpleproxyinfo.h',
'purplerequestfield.h',
'purplerequestgroup.h',
+ 'purplerequestpage.h',
'purpleroomlistroom.h',
'purplesqlite3.h',
'purplesqlitehistoryadapter.h',
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purplerequestpage.c Sun Mar 05 02:26:17 2023 -0600
@@ -0,0 +1,334 @@
+/* purple
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
+ */
+
+#include <glib/gi18n-lib.h>
+
+#include "glibcompat.h"
+#include "purplerequestpage.h"
+#include "purpleprivate.h"
+
+struct _PurpleRequestFields
+{
+ GList *groups;
+
+ GHashTable *fields;
+
+ GList *required_fields;
+
+ GList *validated_fields;
+
+ void *ui_data;
+};
+
+PurpleRequestFields *
+purple_request_fields_new(void)
+{
+ PurpleRequestFields *fields;
+
+ fields = g_new0(PurpleRequestFields, 1);
+
+ fields->fields = g_hash_table_new_full(g_str_hash, g_str_equal,
+ g_free, NULL);
+
+ return fields;
+}
+
+void
+purple_request_fields_destroy(PurpleRequestFields *fields)
+{
+ g_return_if_fail(fields != NULL);
+
+ g_list_free_full(fields->groups,
+ (GDestroyNotify)purple_request_field_group_destroy);
+ g_list_free(fields->required_fields);
+ g_list_free(fields->validated_fields);
+ g_hash_table_destroy(fields->fields);
+ g_free(fields);
+}
+
+void
+_purple_request_field_list_set_field_required(PurpleRequestFields *fields,
+ PurpleRequestField *field,
+ gboolean required)
+{
+ g_return_if_fail(fields != NULL);
+
+ if(required) {
+ fields->required_fields = g_list_append(fields->required_fields, field);
+ } else {
+ fields->required_fields = g_list_remove(fields->required_fields, field);
+ }
+}
+
+void
+_purple_request_field_list_set_field_validator(PurpleRequestFields *fields,
+ PurpleRequestField *field,
+ gboolean validator)
+{
+ g_return_if_fail(fields != NULL);
+
+ fields->validated_fields = g_list_remove(fields->validated_fields, field);
+ if(validator) {
+ fields->validated_fields = g_list_append(fields->validated_fields,
+ field);
+ }
+}
+
+void
+_purple_request_field_list_add_field(PurpleRequestFields *fields,
+ PurpleRequestField *field)
+{
+ g_return_if_fail(fields != NULL);
+
+ g_hash_table_insert(fields->fields,
+ g_strdup(purple_request_field_get_id(field)), field);
+
+ if(purple_request_field_is_required(field)) {
+ fields->required_fields = g_list_append(fields->required_fields,
+ field);
+ }
+
+ if(purple_request_field_is_validatable(field)) {
+ fields->validated_fields = g_list_append(fields->validated_fields,
+ field);
+ }
+}
+
+void
+purple_request_fields_add_group(PurpleRequestFields *fields,
+ PurpleRequestFieldGroup *group)
+{
+ GList *l;
+ PurpleRequestField *field;
+
+ g_return_if_fail(fields != NULL);
+ g_return_if_fail(group != NULL);
+
+ fields->groups = g_list_append(fields->groups, group);
+
+ _purple_request_field_group_set_field_list(group, fields);
+
+ for (l = purple_request_field_group_get_fields(group);
+ l != NULL;
+ l = l->next) {
+
+ field = l->data;
+
+ g_hash_table_insert(fields->fields,
+ g_strdup(purple_request_field_get_id(field)), field);
+
+ if (purple_request_field_is_required(field)) {
+ fields->required_fields =
+ g_list_append(fields->required_fields, field);
+ }
+
+ if (purple_request_field_is_validatable(field)) {
+ fields->validated_fields =
+ g_list_append(fields->validated_fields, field);
+ }
+ }
+}
+
+GList *
+purple_request_fields_get_groups(const PurpleRequestFields *fields)
+{
+ g_return_val_if_fail(fields != NULL, NULL);
+
+ return fields->groups;
+}
+
+gboolean
+purple_request_fields_exists(const PurpleRequestFields *fields, const char *id)
+{
+ g_return_val_if_fail(fields != NULL, FALSE);
+ g_return_val_if_fail(id != NULL, FALSE);
+
+ return (g_hash_table_lookup(fields->fields, id) != NULL);
+}
+
+const GList *
+purple_request_fields_get_required(const PurpleRequestFields *fields)
+{
+ g_return_val_if_fail(fields != NULL, NULL);
+
+ return fields->required_fields;
+}
+
+const GList *
+purple_request_fields_get_validatable(const PurpleRequestFields *fields)
+{
+ g_return_val_if_fail(fields != NULL, NULL);
+
+ return fields->validated_fields;
+}
+
+gboolean
+purple_request_fields_is_field_required(const PurpleRequestFields *fields,
+ const char *id)
+{
+ PurpleRequestField *field;
+
+ g_return_val_if_fail(fields != NULL, FALSE);
+ g_return_val_if_fail(id != NULL, FALSE);
+
+ if ((field = purple_request_fields_get_field(fields, id)) == NULL)
+ return FALSE;
+
+ return purple_request_field_is_required(field);
+}
+
+gboolean
+purple_request_fields_all_required_filled(const PurpleRequestFields *fields)
+{
+ GList *l;
+
+ g_return_val_if_fail(fields != NULL, FALSE);
+
+ for (l = fields->required_fields; l != NULL; l = l->next)
+ {
+ PurpleRequestField *field = (PurpleRequestField *)l->data;
+
+ if (!purple_request_field_is_filled(field))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+gboolean
+purple_request_fields_all_valid(const PurpleRequestFields *fields)
+{
+ GList *l;
+
+ g_return_val_if_fail(fields != NULL, FALSE);
+
+ for (l = fields->validated_fields; l != NULL; l = l->next)
+ {
+ PurpleRequestField *field = (PurpleRequestField *)l->data;
+
+ if (!purple_request_field_is_valid(field, NULL))
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+PurpleRequestField *
+purple_request_fields_get_field(const PurpleRequestFields *fields, const char *id)
+{
+ PurpleRequestField *field;
+
+ g_return_val_if_fail(fields != NULL, NULL);
+ g_return_val_if_fail(id != NULL, NULL);
+
+ field = g_hash_table_lookup(fields->fields, id);
+
+ g_return_val_if_fail(field != NULL, NULL);
+
+ return field;
+}
+
+const char *
+purple_request_fields_get_string(const PurpleRequestFields *fields, const char *id)
+{
+ PurpleRequestField *field;
+
+ g_return_val_if_fail(fields != NULL, NULL);
+ g_return_val_if_fail(id != NULL, NULL);
+
+ if ((field = purple_request_fields_get_field(fields, id)) == NULL)
+ return NULL;
+
+ return purple_request_field_string_get_value(field);
+}
+
+int
+purple_request_fields_get_integer(const PurpleRequestFields *fields,
+ const char *id)
+{
+ PurpleRequestField *field;
+
+ g_return_val_if_fail(fields != NULL, 0);
+ g_return_val_if_fail(id != NULL, 0);
+
+ if ((field = purple_request_fields_get_field(fields, id)) == NULL)
+ return 0;
+
+ return purple_request_field_int_get_value(field);
+}
+
+gboolean
+purple_request_fields_get_bool(const PurpleRequestFields *fields, const char *id)
+{
+ PurpleRequestField *field;
+
+ g_return_val_if_fail(fields != NULL, FALSE);
+ g_return_val_if_fail(id != NULL, FALSE);
+
+ if ((field = purple_request_fields_get_field(fields, id)) == NULL)
+ return FALSE;
+
+ return purple_request_field_bool_get_value(field);
+}
+
+gpointer
+purple_request_fields_get_choice(const PurpleRequestFields *fields,
+ const char *id)
+{
+ PurpleRequestField *field;
+
+ g_return_val_if_fail(fields != NULL, NULL);
+ g_return_val_if_fail(id != NULL, NULL);
+
+ if ((field = purple_request_fields_get_field(fields, id)) == NULL)
+ return NULL;
+
+ return purple_request_field_choice_get_value(field);
+}
+
+PurpleAccount *
+purple_request_fields_get_account(const PurpleRequestFields *fields,
+ const char *id)
+{
+ PurpleRequestField *field;
+
+ g_return_val_if_fail(fields != NULL, NULL);
+ g_return_val_if_fail(id != NULL, NULL);
+
+ if ((field = purple_request_fields_get_field(fields, id)) == NULL)
+ return NULL;
+
+ return purple_request_field_account_get_value(field);
+}
+
+gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields)
+{
+ g_return_val_if_fail(fields != NULL, NULL);
+
+ return fields->ui_data;
+}
+
+void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data)
+{
+ g_return_if_fail(fields != NULL);
+
+ fields->ui_data = ui_data;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purplerequestpage.h Sun Mar 05 02:26:17 2023 -0600
@@ -0,0 +1,248 @@
+/*
+ * Purple - Internet Messaging Library
+ * Copyright (C) Pidgin Developers <devel@pidgin.im>
+ *
+ * Purple is the legal property of its developers, whose names are too numerous
+ * to list here. Please refer to the COPYRIGHT file distributed with this
+ * source distribution.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, see <https://www.gnu.org/licenses/>.
+ */
+
+#if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION)
+# error "only <purple.h> may be included directly"
+#endif
+
+#ifndef PURPLE_REQUEST_PAGE_H
+#define PURPLE_REQUEST_PAGE_H
+
+#include <stdlib.h>
+
+#include <glib.h>
+#include <glib-object.h>
+
+/**
+ * PurpleRequestFields:
+ *
+ * Multiple fields request data.
+ */
+typedef struct _PurpleRequestFields PurpleRequestFields;
+
+#include "account.h"
+#include "purplerequestgroup.h"
+#include "purplerequestfield.h"
+
+G_BEGIN_DECLS
+
+/**
+ * purple_request_fields_new:
+ *
+ * Creates a list of fields to pass to purple_request_fields().
+ *
+ * Returns: (transfer full): A PurpleRequestFields structure.
+ */
+PurpleRequestFields *purple_request_fields_new(void);
+
+/**
+ * purple_request_fields_destroy:
+ * @fields: The list of fields to destroy.
+ *
+ * Destroys a list of fields.
+ */
+void purple_request_fields_destroy(PurpleRequestFields *fields);
+
+/**
+ * purple_request_fields_add_group:
+ * @fields: The fields list.
+ * @group: The group to add.
+ *
+ * Adds a group of fields to the list.
+ */
+void purple_request_fields_add_group(PurpleRequestFields *fields,
+ PurpleRequestFieldGroup *group);
+
+/**
+ * purple_request_fields_get_groups:
+ * @fields: The fields list.
+ *
+ * Returns a list of all groups in a field list.
+ *
+ * Returns: (element-type PurpleRequestFieldGroup) (transfer none): A list of groups.
+ */
+GList *purple_request_fields_get_groups(const PurpleRequestFields *fields);
+
+/**
+ * purple_request_fields_exists:
+ * @fields: The fields list.
+ * @id: The ID of the field.
+ *
+ * Returns whether or not the field with the specified ID exists.
+ *
+ * Returns: TRUE if the field exists, or FALSE.
+ */
+gboolean purple_request_fields_exists(const PurpleRequestFields *fields,
+ const char *id);
+
+/**
+ * purple_request_fields_get_required:
+ * @fields: The fields list.
+ *
+ * Returns a list of all required fields.
+ *
+ * Returns: (element-type PurpleRequestField) (transfer none): The list of required fields.
+ */
+const GList *purple_request_fields_get_required(
+ const PurpleRequestFields *fields);
+
+/**
+ * purple_request_fields_get_validatable:
+ * @fields: The fields list.
+ *
+ * Returns a list of all validated fields.
+ *
+ * Returns: (element-type PurpleRequestField) (transfer none): The list of validated fields.
+ */
+const GList *purple_request_fields_get_validatable(
+ const PurpleRequestFields *fields);
+
+/**
+ * purple_request_fields_is_field_required:
+ * @fields: The fields list.
+ * @id: The field ID.
+ *
+ * Returns whether or not a field with the specified ID is required.
+ *
+ * Returns: TRUE if the specified field is required, or FALSE.
+ */
+gboolean purple_request_fields_is_field_required(const PurpleRequestFields *fields,
+ const char *id);
+
+/**
+ * purple_request_fields_all_required_filled:
+ * @fields: The fields list.
+ *
+ * Returns whether or not all required fields have values.
+ *
+ * Returns: TRUE if all required fields have values, or FALSE.
+ */
+gboolean purple_request_fields_all_required_filled(
+ const PurpleRequestFields *fields);
+
+/**
+ * purple_request_fields_all_valid:
+ * @fields: The fields list.
+ *
+ * Returns whether or not all fields are valid.
+ *
+ * Returns: TRUE if all fields are valid, or FALSE.
+ */
+gboolean purple_request_fields_all_valid(const PurpleRequestFields *fields);
+
+/**
+ * purple_request_fields_get_field:
+ * @fields: The fields list.
+ * @id: The ID of the field.
+ *
+ * Return the field with the specified ID.
+ *
+ * Returns: (transfer none): The field, if found.
+ */
+PurpleRequestField *purple_request_fields_get_field(
+ const PurpleRequestFields *fields, const char *id);
+
+/**
+ * purple_request_fields_get_string:
+ * @fields: The fields list.
+ * @id: The ID of the field.
+ *
+ * Returns the string value of a field with the specified ID.
+ *
+ * Returns: The string value, if found, or %NULL otherwise.
+ */
+const char *purple_request_fields_get_string(const PurpleRequestFields *fields,
+ const char *id);
+
+/**
+ * purple_request_fields_get_integer:
+ * @fields: The fields list.
+ * @id: The ID of the field.
+ *
+ * Returns the integer value of a field with the specified ID.
+ *
+ * Returns: The integer value, if found, or 0 otherwise.
+ */
+int purple_request_fields_get_integer(const PurpleRequestFields *fields,
+ const char *id);
+
+/**
+ * purple_request_fields_get_bool:
+ * @fields: The fields list.
+ * @id: The ID of the field.
+ *
+ * Returns the boolean value of a field with the specified ID.
+ *
+ * Returns: The boolean value, if found, or %FALSE otherwise.
+ */
+gboolean purple_request_fields_get_bool(const PurpleRequestFields *fields,
+ const char *id);
+
+/**
+ * purple_request_fields_get_choice:
+ * @fields: The fields list.
+ * @id: The ID of the field.
+ *
+ * Returns the choice index of a field with the specified ID.
+ *
+ * Returns: The choice value, if found, or NULL otherwise.
+ */
+gpointer
+purple_request_fields_get_choice(const PurpleRequestFields *fields,
+ const char *id);
+
+/**
+ * purple_request_fields_get_account:
+ * @fields: The fields list.
+ * @id: The ID of the field.
+ *
+ * Returns the account of a field with the specified ID.
+ *
+ * Returns: (transfer none): The account value, if found, or %NULL otherwise.
+ */
+PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields,
+ const char *id);
+
+/**
+ * purple_request_fields_get_ui_data:
+ * @fields: The fields list.
+ *
+ * Returns the UI data associated with this object.
+ *
+ * Returns: The UI data associated with this object. This is a
+ * convenience field provided to the UIs--it is not
+ * used by the libpurple core.
+ */
+gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields);
+
+/**
+ * purple_request_fields_set_ui_data:
+ * @fields: The fields list.
+ * @ui_data: A pointer to associate with this object.
+ *
+ * Set the UI data associated with this object.
+ */
+void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data);
+
+G_END_DECLS
+
+#endif /* PURPLE_REQUEST_PAGE_H */
--- a/libpurple/request.c Sun Mar 05 02:16:11 2023 -0600
+++ b/libpurple/request.c Sun Mar 05 02:26:17 2023 -0600
@@ -46,19 +46,6 @@
GSList *notify_on_close;
} PurpleRequestInfo;
-struct _PurpleRequestFields
-{
- GList *groups;
-
- GHashTable *fields;
-
- GList *required_fields;
-
- GList *validated_fields;
-
- void *ui_data;
-};
-
struct _PurpleRequestCommonParameters {
PurpleAccount *account;
PurpleConversation *conv;
@@ -359,301 +346,6 @@
return NULL;
}
-PurpleRequestFields *
-purple_request_fields_new(void)
-{
- PurpleRequestFields *fields;
-
- fields = g_new0(PurpleRequestFields, 1);
-
- fields->fields = g_hash_table_new_full(g_str_hash, g_str_equal,
- g_free, NULL);
-
- return fields;
-}
-
-void
-purple_request_fields_destroy(PurpleRequestFields *fields)
-{
- g_return_if_fail(fields != NULL);
-
- g_list_free_full(fields->groups,
- (GDestroyNotify)purple_request_field_group_destroy);
- g_list_free(fields->required_fields);
- g_list_free(fields->validated_fields);
- g_hash_table_destroy(fields->fields);
- g_free(fields);
-}
-
-void
-_purple_request_field_list_set_field_required(PurpleRequestFields *fields,
- PurpleRequestField *field,
- gboolean required)
-{
- g_return_if_fail(fields != NULL);
-
- if(required) {
- fields->required_fields = g_list_append(fields->required_fields, field);
- } else {
- fields->required_fields = g_list_remove(fields->required_fields, field);
- }
-}
-
-void
-_purple_request_field_list_set_field_validator(PurpleRequestFields *fields,
- PurpleRequestField *field,
- gboolean validator)
-{
- g_return_if_fail(fields != NULL);
-
- fields->validated_fields = g_list_remove(fields->validated_fields, field);
- if(validator) {
- fields->validated_fields = g_list_append(fields->validated_fields,
- field);
- }
-}
-
-void
-_purple_request_field_list_add_field(PurpleRequestFields *fields,
- PurpleRequestField *field)
-{
- g_return_if_fail(fields != NULL);
-
- g_hash_table_insert(fields->fields,
- g_strdup(purple_request_field_get_id(field)), field);
-
- if(purple_request_field_is_required(field)) {
- fields->required_fields = g_list_append(fields->required_fields,
- field);
- }
-
- if(purple_request_field_is_validatable(field)) {
- fields->validated_fields = g_list_append(fields->validated_fields,
- field);
- }
-}
-
-void
-purple_request_fields_add_group(PurpleRequestFields *fields,
- PurpleRequestFieldGroup *group)
-{
- GList *l;
- PurpleRequestField *field;
-
- g_return_if_fail(fields != NULL);
- g_return_if_fail(group != NULL);
-
- fields->groups = g_list_append(fields->groups, group);
-
- _purple_request_field_group_set_field_list(group, fields);
-
- for (l = purple_request_field_group_get_fields(group);
- l != NULL;
- l = l->next) {
-
- field = l->data;
-
- g_hash_table_insert(fields->fields,
- g_strdup(purple_request_field_get_id(field)), field);
-
- if (purple_request_field_is_required(field)) {
- fields->required_fields =
- g_list_append(fields->required_fields, field);
- }
-
- if (purple_request_field_is_validatable(field)) {
- fields->validated_fields =
- g_list_append(fields->validated_fields, field);
- }
- }
-}
-
-GList *
-purple_request_fields_get_groups(const PurpleRequestFields *fields)
-{
- g_return_val_if_fail(fields != NULL, NULL);
-
- return fields->groups;
-}
-
-gboolean
-purple_request_fields_exists(const PurpleRequestFields *fields, const char *id)
-{
- g_return_val_if_fail(fields != NULL, FALSE);
- g_return_val_if_fail(id != NULL, FALSE);
-
- return (g_hash_table_lookup(fields->fields, id) != NULL);
-}
-
-const GList *
-purple_request_fields_get_required(const PurpleRequestFields *fields)
-{
- g_return_val_if_fail(fields != NULL, NULL);
-
- return fields->required_fields;
-}
-
-const GList *
-purple_request_fields_get_validatable(const PurpleRequestFields *fields)
-{
- g_return_val_if_fail(fields != NULL, NULL);
-
- return fields->validated_fields;
-}
-
-gboolean
-purple_request_fields_is_field_required(const PurpleRequestFields *fields,
- const char *id)
-{
- PurpleRequestField *field;
-
- g_return_val_if_fail(fields != NULL, FALSE);
- g_return_val_if_fail(id != NULL, FALSE);
-
- if ((field = purple_request_fields_get_field(fields, id)) == NULL)
- return FALSE;
-
- return purple_request_field_is_required(field);
-}
-
-gboolean
-purple_request_fields_all_required_filled(const PurpleRequestFields *fields)
-{
- GList *l;
-
- g_return_val_if_fail(fields != NULL, FALSE);
-
- for (l = fields->required_fields; l != NULL; l = l->next)
- {
- PurpleRequestField *field = (PurpleRequestField *)l->data;
-
- if (!purple_request_field_is_filled(field))
- return FALSE;
- }
-
- return TRUE;
-}
-
-gboolean
-purple_request_fields_all_valid(const PurpleRequestFields *fields)
-{
- GList *l;
-
- g_return_val_if_fail(fields != NULL, FALSE);
-
- for (l = fields->validated_fields; l != NULL; l = l->next)
- {
- PurpleRequestField *field = (PurpleRequestField *)l->data;
-
- if (!purple_request_field_is_valid(field, NULL))
- return FALSE;
- }
-
- return TRUE;
-}
-
-PurpleRequestField *
-purple_request_fields_get_field(const PurpleRequestFields *fields, const char *id)
-{
- PurpleRequestField *field;
-
- g_return_val_if_fail(fields != NULL, NULL);
- g_return_val_if_fail(id != NULL, NULL);
-
- field = g_hash_table_lookup(fields->fields, id);
-
- g_return_val_if_fail(field != NULL, NULL);
-
- return field;
-}
-
-const char *
-purple_request_fields_get_string(const PurpleRequestFields *fields, const char *id)
-{
- PurpleRequestField *field;
-
- g_return_val_if_fail(fields != NULL, NULL);
- g_return_val_if_fail(id != NULL, NULL);
-
- if ((field = purple_request_fields_get_field(fields, id)) == NULL)
- return NULL;
-
- return purple_request_field_string_get_value(field);
-}
-
-int
-purple_request_fields_get_integer(const PurpleRequestFields *fields,
- const char *id)
-{
- PurpleRequestField *field;
-
- g_return_val_if_fail(fields != NULL, 0);
- g_return_val_if_fail(id != NULL, 0);
-
- if ((field = purple_request_fields_get_field(fields, id)) == NULL)
- return 0;
-
- return purple_request_field_int_get_value(field);
-}
-
-gboolean
-purple_request_fields_get_bool(const PurpleRequestFields *fields, const char *id)
-{
- PurpleRequestField *field;
-
- g_return_val_if_fail(fields != NULL, FALSE);
- g_return_val_if_fail(id != NULL, FALSE);
-
- if ((field = purple_request_fields_get_field(fields, id)) == NULL)
- return FALSE;
-
- return purple_request_field_bool_get_value(field);
-}
-
-gpointer
-purple_request_fields_get_choice(const PurpleRequestFields *fields,
- const char *id)
-{
- PurpleRequestField *field;
-
- g_return_val_if_fail(fields != NULL, NULL);
- g_return_val_if_fail(id != NULL, NULL);
-
- if ((field = purple_request_fields_get_field(fields, id)) == NULL)
- return NULL;
-
- return purple_request_field_choice_get_value(field);
-}
-
-PurpleAccount *
-purple_request_fields_get_account(const PurpleRequestFields *fields,
- const char *id)
-{
- PurpleRequestField *field;
-
- g_return_val_if_fail(fields != NULL, NULL);
- g_return_val_if_fail(id != NULL, NULL);
-
- if ((field = purple_request_fields_get_field(fields, id)) == NULL)
- return NULL;
-
- return purple_request_field_account_get_value(field);
-}
-
-gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields)
-{
- g_return_val_if_fail(fields != NULL, NULL);
-
- return fields->ui_data;
-}
-
-void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data)
-{
- g_return_if_fail(fields != NULL);
-
- fields->ui_data = ui_data;
-}
-
/* -- */
static gchar *
@@ -933,7 +625,10 @@
{
GList *itg;
- for (itg = fields->groups; itg != NULL; itg = g_list_next(itg)) {
+ for (itg = purple_request_fields_get_groups(fields);
+ itg != NULL;
+ itg = g_list_next(itg))
+ {
PurpleRequestFieldGroup *group = itg->data;
GList *itf;
--- a/libpurple/request.h Sun Mar 05 02:16:11 2023 -0600
+++ b/libpurple/request.h Sun Mar 05 02:26:17 2023 -0600
@@ -35,13 +35,6 @@
#define PURPLE_TYPE_REQUEST_UI_OPS (purple_request_ui_ops_get_type())
/**
- * PurpleRequestFields:
- *
- * Multiple fields request data.
- */
-typedef struct _PurpleRequestFields PurpleRequestFields;
-
-/**
* PurpleRequestCommonParameters:
*
* Common parameters for UI operations.
@@ -52,6 +45,7 @@
#include "account.h"
#include "purpleconversation.h"
+#include "purplerequestpage.h"
#include "purplerequestgroup.h"
#include "purplerequestfield.h"
#include "request-datasheet.h"
@@ -508,208 +502,6 @@
purple_request_cpar_get_parent_from(PurpleRequestCommonParameters *cpar);
/**************************************************************************/
-/* Field List API */
-/**************************************************************************/
-
-/**
- * purple_request_fields_new:
- *
- * Creates a list of fields to pass to purple_request_fields().
- *
- * Returns: (transfer full): A PurpleRequestFields structure.
- */
-PurpleRequestFields *purple_request_fields_new(void);
-
-/**
- * purple_request_fields_destroy:
- * @fields: The list of fields to destroy.
- *
- * Destroys a list of fields.
- */
-void purple_request_fields_destroy(PurpleRequestFields *fields);
-
-/**
- * purple_request_fields_add_group:
- * @fields: The fields list.
- * @group: The group to add.
- *
- * Adds a group of fields to the list.
- */
-void purple_request_fields_add_group(PurpleRequestFields *fields,
- PurpleRequestFieldGroup *group);
-
-/**
- * purple_request_fields_get_groups:
- * @fields: The fields list.
- *
- * Returns a list of all groups in a field list.
- *
- * Returns: (element-type PurpleRequestFieldGroup) (transfer none): A list of groups.
- */
-GList *purple_request_fields_get_groups(const PurpleRequestFields *fields);
-
-/**
- * purple_request_fields_exists:
- * @fields: The fields list.
- * @id: The ID of the field.
- *
- * Returns whether or not the field with the specified ID exists.
- *
- * Returns: TRUE if the field exists, or FALSE.
- */
-gboolean purple_request_fields_exists(const PurpleRequestFields *fields,
- const char *id);
-
-/**
- * purple_request_fields_get_required:
- * @fields: The fields list.
- *
- * Returns a list of all required fields.
- *
- * Returns: (element-type PurpleRequestField) (transfer none): The list of required fields.
- */
-const GList *purple_request_fields_get_required(
- const PurpleRequestFields *fields);
-
-/**
- * purple_request_fields_get_validatable:
- * @fields: The fields list.
- *
- * Returns a list of all validated fields.
- *
- * Returns: (element-type PurpleRequestField) (transfer none): The list of validated fields.
- */
-const GList *purple_request_fields_get_validatable(
- const PurpleRequestFields *fields);
-
-/**
- * purple_request_fields_is_field_required:
- * @fields: The fields list.
- * @id: The field ID.
- *
- * Returns whether or not a field with the specified ID is required.
- *
- * Returns: TRUE if the specified field is required, or FALSE.
- */
-gboolean purple_request_fields_is_field_required(const PurpleRequestFields *fields,
- const char *id);
-
-/**
- * purple_request_fields_all_required_filled:
- * @fields: The fields list.
- *
- * Returns whether or not all required fields have values.
- *
- * Returns: TRUE if all required fields have values, or FALSE.
- */
-gboolean purple_request_fields_all_required_filled(
- const PurpleRequestFields *fields);
-
-/**
- * purple_request_fields_all_valid:
- * @fields: The fields list.
- *
- * Returns whether or not all fields are valid.
- *
- * Returns: TRUE if all fields are valid, or FALSE.
- */
-gboolean purple_request_fields_all_valid(const PurpleRequestFields *fields);
-
-/**
- * purple_request_fields_get_field:
- * @fields: The fields list.
- * @id: The ID of the field.
- *
- * Return the field with the specified ID.
- *
- * Returns: (transfer none): The field, if found.
- */
-PurpleRequestField *purple_request_fields_get_field(
- const PurpleRequestFields *fields, const char *id);
-
-/**
- * purple_request_fields_get_string:
- * @fields: The fields list.
- * @id: The ID of the field.
- *
- * Returns the string value of a field with the specified ID.
- *
- * Returns: The string value, if found, or %NULL otherwise.
- */
-const char *purple_request_fields_get_string(const PurpleRequestFields *fields,
- const char *id);
-
-/**
- * purple_request_fields_get_integer:
- * @fields: The fields list.
- * @id: The ID of the field.
- *
- * Returns the integer value of a field with the specified ID.
- *
- * Returns: The integer value, if found, or 0 otherwise.
- */
-int purple_request_fields_get_integer(const PurpleRequestFields *fields,
- const char *id);
-
-/**
- * purple_request_fields_get_bool:
- * @fields: The fields list.
- * @id: The ID of the field.
- *
- * Returns the boolean value of a field with the specified ID.
- *
- * Returns: The boolean value, if found, or %FALSE otherwise.
- */
-gboolean purple_request_fields_get_bool(const PurpleRequestFields *fields,
- const char *id);
-
-/**
- * purple_request_fields_get_choice:
- * @fields: The fields list.
- * @id: The ID of the field.
- *
- * Returns the choice index of a field with the specified ID.
- *
- * Returns: The choice value, if found, or NULL otherwise.
- */
-gpointer
-purple_request_fields_get_choice(const PurpleRequestFields *fields,
- const char *id);
-
-/**
- * purple_request_fields_get_account:
- * @fields: The fields list.
- * @id: The ID of the field.
- *
- * Returns the account of a field with the specified ID.
- *
- * Returns: (transfer none): The account value, if found, or %NULL otherwise.
- */
-PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields,
- const char *id);
-
-/**
- * purple_request_fields_get_ui_data:
- * @fields: The fields list.
- *
- * Returns the UI data associated with this object.
- *
- * Returns: The UI data associated with this object. This is a
- * convenience field provided to the UIs--it is not
- * used by the libpurple core.
- */
-gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields);
-
-/**
- * purple_request_fields_set_ui_data:
- * @fields: The fields list.
- * @ui_data: A pointer to associate with this object.
- *
- * Set the UI data associated with this object.
- */
-void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data);
-
-/**************************************************************************/
/* Request API */
/**************************************************************************/
--- a/po/POTFILES.in Sun Mar 05 02:16:11 2023 -0600
+++ b/po/POTFILES.in Sun Mar 05 02:26:17 2023 -0600
@@ -203,6 +203,7 @@
libpurple/purpleprotocolwhiteboard.c
libpurple/purplerequestfield.c
libpurple/purplerequestgroup.c
+libpurple/purplerequestpage.c
libpurple/purplesqlitehistoryadapter.c
libpurple/purpleui.c
libpurple/purplewhiteboard.c