Sun, 05 Mar 2023 02:26:17 -0600
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