pidgin/pidgin

Split PurpleRequestFieldGroup into its own files

14 months ago, Elliott Sales de Andrade
1de24f50c9a6
Parents 057b4b3a4c3f
Children b6e38c635deb
Split PurpleRequestFieldGroup 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 dropped 'field' from the file name, as it seems like there's no need to have that there in the final class name.

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

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

Reviewed at https://reviews.imfreedom.org/r/2316/
--- a/libpurple/meson.build Sun Mar 05 01:58:03 2023 -0600
+++ b/libpurple/meson.build Sun Mar 05 02:11:09 2023 -0600
@@ -85,6 +85,7 @@
'purpleprotocolwhiteboard.c',
'purpleproxyinfo.c',
'purplerequestfield.c',
+ 'purplerequestgroup.c',
'purpleroomlistroom.c',
'purplesqlite3.c',
'purplesqlitehistoryadapter.c',
@@ -191,6 +192,7 @@
'purpleprotocolwhiteboard.h',
'purpleproxyinfo.h',
'purplerequestfield.h',
+ 'purplerequestgroup.h',
'purpleroomlistroom.h',
'purplesqlite3.h',
'purplesqlitehistoryadapter.h',
--- a/libpurple/purpleprivate.h Sun Mar 05 01:58:03 2023 -0600
+++ b/libpurple/purpleprivate.h Sun Mar 05 02:11:09 2023 -0600
@@ -338,6 +338,10 @@
*/
G_GNUC_INTERNAL void purple_account_set_enabled_plain(PurpleAccount *account, gboolean enabled);
+G_GNUC_INTERNAL void _purple_request_field_list_add_field(PurpleRequestFields *fields, PurpleRequestField *field);
+G_GNUC_INTERNAL void _purple_request_field_list_set_field_required(PurpleRequestFields *fields, PurpleRequestField *field, gboolean required);
+G_GNUC_INTERNAL void _purple_request_field_list_set_field_validator(PurpleRequestFields *fields, PurpleRequestField *field, gboolean validator);
+G_GNUC_INTERNAL void _purple_request_field_group_set_field_list(PurpleRequestFieldGroup *group, PurpleRequestFields *fields);
G_GNUC_INTERNAL void _purple_request_field_set_group(PurpleRequestField *field, PurpleRequestFieldGroup *group);
G_GNUC_INTERNAL void _purple_request_field_group_set_field_required(PurpleRequestFieldGroup *group, PurpleRequestField *field, gboolean required);
G_GNUC_INTERNAL void _purple_request_field_group_set_field_validator(PurpleRequestFieldGroup *group, PurpleRequestField *field, gboolean validator);
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purplerequestgroup.c Sun Mar 05 02:11:09 2023 -0600
@@ -0,0 +1,131 @@
+/* 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 "purplerequestgroup.h"
+#include "purpleprivate.h"
+
+struct _PurpleRequestFieldGroup
+{
+ PurpleRequestFields *fields_list;
+
+ char *title;
+
+ GList *fields;
+};
+
+PurpleRequestFieldGroup *
+purple_request_field_group_new(const char *title)
+{
+ PurpleRequestFieldGroup *group;
+
+ group = g_new0(PurpleRequestFieldGroup, 1);
+
+ group->title = g_strdup(title);
+
+ return group;
+}
+
+void
+purple_request_field_group_destroy(PurpleRequestFieldGroup *group)
+{
+ g_return_if_fail(group != NULL);
+
+ g_free(group->title);
+
+ g_list_free_full(group->fields,
+ (GDestroyNotify)purple_request_field_destroy);
+
+ g_free(group);
+}
+
+void
+_purple_request_field_group_set_field_list(PurpleRequestFieldGroup *group,
+ PurpleRequestFields *fields)
+{
+ g_return_if_fail(group != NULL);
+
+ group->fields_list = fields;
+}
+
+void
+_purple_request_field_group_set_field_required(PurpleRequestFieldGroup *group,
+ PurpleRequestField *field,
+ gboolean required)
+{
+ g_return_if_fail(group != NULL);
+
+ _purple_request_field_list_set_field_required(group->fields_list, field,
+ required);
+}
+
+void
+_purple_request_field_group_set_field_validator(PurpleRequestFieldGroup *group,
+ PurpleRequestField *field,
+ gboolean validator)
+{
+ g_return_if_fail(group != NULL);
+
+ _purple_request_field_list_set_field_validator(group->fields_list, field,
+ validator);
+}
+
+void
+purple_request_field_group_add_field(PurpleRequestFieldGroup *group,
+ PurpleRequestField *field)
+{
+ g_return_if_fail(group != NULL);
+ g_return_if_fail(field != NULL);
+
+ group->fields = g_list_append(group->fields, field);
+
+ if(group->fields_list != NULL) {
+ _purple_request_field_list_add_field(group->fields_list, field);
+ }
+
+ _purple_request_field_set_group(field, group);
+}
+
+const char *
+purple_request_field_group_get_title(const PurpleRequestFieldGroup *group)
+{
+ g_return_val_if_fail(group != NULL, NULL);
+
+ return group->title;
+}
+
+GList *
+purple_request_field_group_get_fields(const PurpleRequestFieldGroup *group)
+{
+ g_return_val_if_fail(group != NULL, NULL);
+
+ return group->fields;
+}
+
+PurpleRequestFields *
+purple_request_field_group_get_fields_list(const PurpleRequestFieldGroup *group)
+{
+ g_return_val_if_fail(group != NULL, NULL);
+
+ return group->fields_list;
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/libpurple/purplerequestgroup.h Sun Mar 05 02:11:09 2023 -0600
@@ -0,0 +1,109 @@
+/*
+ * 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_GROUP_H
+#define PURPLE_REQUEST_GROUP_H
+
+#include <stdlib.h>
+
+#include <glib.h>
+#include <glib-object.h>
+
+/**
+ * PurpleRequestFieldGroup:
+ *
+ * A group of fields with a title.
+ */
+typedef struct _PurpleRequestFieldGroup PurpleRequestFieldGroup;
+
+#include "purplerequestfield.h"
+
+G_BEGIN_DECLS
+
+/**
+ * purple_request_field_group_new:
+ * @title: The optional title to give the group.
+ *
+ * Creates a fields group with an optional title.
+ *
+ * Returns: (transfer full): A new fields group
+ */
+PurpleRequestFieldGroup *purple_request_field_group_new(const char *title);
+
+/**
+ * purple_request_field_group_destroy:
+ * @group: The group to destroy.
+ *
+ * Destroys a fields group.
+ */
+void purple_request_field_group_destroy(PurpleRequestFieldGroup *group);
+
+/**
+ * purple_request_field_group_add_field:
+ * @group: The group to add the field to.
+ * @field: The field to add to the group.
+ *
+ * Adds a field to the group.
+ */
+void purple_request_field_group_add_field(PurpleRequestFieldGroup *group,
+ PurpleRequestField *field);
+
+/**
+ * purple_request_field_group_get_title:
+ * @group: The group.
+ *
+ * Returns the title of a fields group.
+ *
+ * Returns: The title, if set.
+ */
+const char *purple_request_field_group_get_title(
+ const PurpleRequestFieldGroup *group);
+
+/**
+ * purple_request_field_group_get_fields:
+ * @group: The group.
+ *
+ * Returns a list of all fields in a group.
+ *
+ * Returns: (element-type PurpleRequestField) (transfer none): The list of fields in the group.
+ */
+GList *purple_request_field_group_get_fields(
+ const PurpleRequestFieldGroup *group);
+
+/**
+ * purple_request_field_group_get_fields_list:
+ * @group: The group.
+ *
+ * Returns a list of all fields in a group.
+ *
+ * Returns: (transfer none): The list of fields in the group.
+ */
+PurpleRequestFields *purple_request_field_group_get_fields_list(
+ const PurpleRequestFieldGroup *group);
+
+G_END_DECLS
+
+#endif /* PURPLE_REQUEST_GROUP_H */
--- a/libpurple/request.c Sun Mar 05 01:58:03 2023 -0600
+++ b/libpurple/request.c Sun Mar 05 02:11:09 2023 -0600
@@ -59,15 +59,6 @@
void *ui_data;
};
-struct _PurpleRequestFieldGroup
-{
- PurpleRequestFields *fields_list;
-
- char *title;
-
- GList *fields;
-};
-
struct _PurpleRequestCommonParameters {
PurpleAccount *account;
PurpleConversation *conv;
@@ -395,6 +386,54 @@
}
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)
{
@@ -406,7 +445,7 @@
fields->groups = g_list_append(fields->groups, group);
- group->fields_list = fields;
+ _purple_request_field_group_set_field_list(group, fields);
for (l = purple_request_field_group_get_fields(group);
l != NULL;
@@ -615,114 +654,6 @@
fields->ui_data = ui_data;
}
-PurpleRequestFieldGroup *
-purple_request_field_group_new(const char *title)
-{
- PurpleRequestFieldGroup *group;
-
- group = g_new0(PurpleRequestFieldGroup, 1);
-
- group->title = g_strdup(title);
-
- return group;
-}
-
-void
-purple_request_field_group_destroy(PurpleRequestFieldGroup *group)
-{
- g_return_if_fail(group != NULL);
-
- g_free(group->title);
-
- g_list_free_full(group->fields,
- (GDestroyNotify)purple_request_field_destroy);
-
- g_free(group);
-}
-
-void
-_purple_request_field_group_set_field_required(PurpleRequestFieldGroup *group,
- PurpleRequestField *field,
- gboolean required)
-{
- if(required) {
- group->fields_list->required_fields =
- g_list_append(group->fields_list->required_fields,
- field);
- } else {
- group->fields_list->required_fields =
- g_list_remove(group->fields_list->required_fields,
- field);
- }
-}
-
-void
-_purple_request_field_group_set_field_validator(PurpleRequestFieldGroup *group,
- PurpleRequestField *field,
- gboolean validator)
-{
- PurpleRequestFields *flist = group->fields_list;
- flist->validated_fields = g_list_remove(flist->validated_fields, field);
- if(validator) {
- flist->validated_fields = g_list_append(flist->validated_fields,
- field);
- }
-}
-
-void
-purple_request_field_group_add_field(PurpleRequestFieldGroup *group,
- PurpleRequestField *field)
-{
- g_return_if_fail(group != NULL);
- g_return_if_fail(field != NULL);
-
- group->fields = g_list_append(group->fields, field);
-
- if (group->fields_list != NULL)
- {
- g_hash_table_insert(group->fields_list->fields,
- g_strdup(purple_request_field_get_id(field)), field);
-
- if (purple_request_field_is_required(field))
- {
- group->fields_list->required_fields =
- g_list_append(group->fields_list->required_fields, field);
- }
-
- if (purple_request_field_is_validatable(field))
- {
- group->fields_list->validated_fields =
- g_list_append(group->fields_list->validated_fields, field);
- }
- }
-
- _purple_request_field_set_group(field, group);
-}
-
-const char *
-purple_request_field_group_get_title(const PurpleRequestFieldGroup *group)
-{
- g_return_val_if_fail(group != NULL, NULL);
-
- return group->title;
-}
-
-GList *
-purple_request_field_group_get_fields(const PurpleRequestFieldGroup *group)
-{
- g_return_val_if_fail(group != NULL, NULL);
-
- return group->fields;
-}
-
-PurpleRequestFields *
-purple_request_field_group_get_fields_list(const PurpleRequestFieldGroup *group)
-{
- g_return_val_if_fail(group != NULL, NULL);
-
- return group->fields_list;
-}
-
/* -- */
static gchar *
@@ -1006,7 +937,10 @@
PurpleRequestFieldGroup *group = itg->data;
GList *itf;
- for (itf = group->fields; itf != NULL; itf = g_list_next(itf)) {
+ for (itf = purple_request_field_group_get_fields(group);
+ itf != NULL;
+ itf = g_list_next(itf))
+ {
PurpleRequestField *field = itf->data;
const char *old_label;
gchar *new_label;
--- a/libpurple/request.h Sun Mar 05 01:58:03 2023 -0600
+++ b/libpurple/request.h Sun Mar 05 02:11:09 2023 -0600
@@ -42,13 +42,6 @@
typedef struct _PurpleRequestFields PurpleRequestFields;
/**
- * PurpleRequestFieldGroup:
- *
- * A group of fields with a title.
- */
-typedef struct _PurpleRequestFieldGroup PurpleRequestFieldGroup;
-
-/**
* PurpleRequestCommonParameters:
*
* Common parameters for UI operations.
@@ -59,6 +52,7 @@
#include "account.h"
#include "purpleconversation.h"
+#include "purplerequestgroup.h"
#include "purplerequestfield.h"
#include "request-datasheet.h"
@@ -716,71 +710,6 @@
void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data);
/**************************************************************************/
-/* Fields Group API */
-/**************************************************************************/
-
-/**
- * purple_request_field_group_new:
- * @title: The optional title to give the group.
- *
- * Creates a fields group with an optional title.
- *
- * Returns: (transfer full): A new fields group
- */
-PurpleRequestFieldGroup *purple_request_field_group_new(const char *title);
-
-/**
- * purple_request_field_group_destroy:
- * @group: The group to destroy.
- *
- * Destroys a fields group.
- */
-void purple_request_field_group_destroy(PurpleRequestFieldGroup *group);
-
-/**
- * purple_request_field_group_add_field:
- * @group: The group to add the field to.
- * @field: The field to add to the group.
- *
- * Adds a field to the group.
- */
-void purple_request_field_group_add_field(PurpleRequestFieldGroup *group,
- PurpleRequestField *field);
-
-/**
- * purple_request_field_group_get_title:
- * @group: The group.
- *
- * Returns the title of a fields group.
- *
- * Returns: The title, if set.
- */
-const char *purple_request_field_group_get_title(
- const PurpleRequestFieldGroup *group);
-
-/**
- * purple_request_field_group_get_fields:
- * @group: The group.
- *
- * Returns a list of all fields in a group.
- *
- * Returns: (element-type PurpleRequestField) (transfer none): The list of fields in the group.
- */
-GList *purple_request_field_group_get_fields(
- const PurpleRequestFieldGroup *group);
-
-/**
- * purple_request_field_group_get_fields_list:
- * @group: The group.
- *
- * Returns a list of all fields in a group.
- *
- * Returns: (transfer none): The list of fields in the group.
- */
-PurpleRequestFields *purple_request_field_group_get_fields_list(
- const PurpleRequestFieldGroup *group);
-
-/**************************************************************************/
/* Request API */
/**************************************************************************/
--- a/po/POTFILES.in Sun Mar 05 01:58:03 2023 -0600
+++ b/po/POTFILES.in Sun Mar 05 02:11:09 2023 -0600
@@ -202,6 +202,7 @@
libpurple/purpleprotocolserver.c
libpurple/purpleprotocolwhiteboard.c
libpurple/purplerequestfield.c
+libpurple/purplerequestgroup.c
libpurple/purplesqlitehistoryadapter.c
libpurple/purpleui.c
libpurple/purplewhiteboard.c