Mon, 06 Mar 2023 21:21:17 -0600
Convert PurpleRequestField into a GObject
This is just a straight conversion with not much attempt to make things nice.
Also, this leaves `PurpleRequestField` as a multi-type object, but derivable, so we can change to a bunch of subclasses after.
Testing Done:
Compiled and opened Request Fields from Demo protocol.
Reviewed at https://reviews.imfreedom.org/r/2320/
|
20147
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
1 | /* purple |
| 5477 | 2 | * |
| 15884 | 3 | * Purple is the legal property of its developers, whose names are too numerous |
| 8046 | 4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 5 | * source distribution. | |
|
7035
76bca80cd91d
[gaim-migrate @ 7598]
Christian Hammond <chipx86@chipx86.com>
parents:
6325
diff
changeset
|
6 | * |
| 5477 | 7 | * This program is free software; you can redistribute it and/or modify |
| 8 | * it under the terms of the GNU General Public License as published by | |
| 9 | * the Free Software Foundation; either version 2 of the License, or | |
| 10 | * (at your option) any later version. | |
| 11 | * | |
| 12 | * This program is distributed in the hope that it will be useful, | |
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 15 | * GNU General Public License for more details. | |
| 16 | * | |
| 17 | * You should have received a copy of the GNU General Public License | |
| 18 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
19585
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 5477 | 20 | */ |
|
24900
a19d983918c2
Deprecate purple_request_field_list_add()
Richard Laager <rlaager@pidgin.im>
parents:
24899
diff
changeset
|
21 | |
|
40441
f23c7e772667
Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents:
40350
diff
changeset
|
22 | #include <glib/gi18n-lib.h> |
|
f23c7e772667
Make sure we're not including the gettext macros in header files and deal with the repercussions of that.
Gary Kramlich <grim@reaperworld.com>
parents:
40350
diff
changeset
|
23 | |
|
40756
3a58ef28ee44
Implement mitigation for GHSL-2021-045
Gary Kramlich <grim@reaperworld.com>
parents:
40564
diff
changeset
|
24 | #include "glibcompat.h" |
|
42120
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
25 | #include "purplerequestgroup.h" |
|
42117
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
26 | #include "purpleprivate.h" |
| 5477 | 27 | |
|
32273
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
28 | struct _PurpleRequestFieldGroup |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
29 | { |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
30 | PurpleRequestFields *fields_list; |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
31 | |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
32 | char *title; |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
33 | |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
34 | GList *fields; |
| 32216 | 35 | }; |
| 5477 | 36 | |
| 15884 | 37 | PurpleRequestFieldGroup * |
| 38 | purple_request_field_group_new(const char *title) | |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
39 | { |
| 15884 | 40 | PurpleRequestFieldGroup *group; |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
41 | |
| 15884 | 42 | group = g_new0(PurpleRequestFieldGroup, 1); |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
43 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13283
diff
changeset
|
44 | group->title = g_strdup(title); |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
45 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
46 | return group; |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
47 | } |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
48 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
49 | void |
| 15884 | 50 | purple_request_field_group_destroy(PurpleRequestFieldGroup *group) |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
51 | { |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
52 | g_return_if_fail(group != NULL); |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
53 | |
|
14097
0c340861ab79
[gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents:
13283
diff
changeset
|
54 | g_free(group->title); |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
55 | |
|
42124
472dc8caeda3
Convert PurpleRequestField into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42120
diff
changeset
|
56 | g_list_free_full(group->fields, g_object_unref); |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
57 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
58 | g_free(group); |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
59 | } |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
60 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
61 | void |
|
42120
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
62 | _purple_request_field_group_set_field_list(PurpleRequestFieldGroup *group, |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
63 | PurpleRequestFields *fields) |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
64 | { |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
65 | g_return_if_fail(group != NULL); |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
66 | |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
67 | group->fields_list = fields; |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
68 | } |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
69 | |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
70 | void |
|
42117
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
71 | _purple_request_field_group_set_field_required(PurpleRequestFieldGroup *group, |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
72 | PurpleRequestField *field, |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
73 | gboolean required) |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
74 | { |
|
42120
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
75 | g_return_if_fail(group != NULL); |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
76 | |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
77 | _purple_request_field_list_set_field_required(group->fields_list, field, |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
78 | required); |
|
42117
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
79 | } |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
80 | |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
81 | void |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
82 | _purple_request_field_group_set_field_validator(PurpleRequestFieldGroup *group, |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
83 | PurpleRequestField *field, |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
84 | gboolean validator) |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
85 | { |
|
42120
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
86 | g_return_if_fail(group != NULL); |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
87 | |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
88 | _purple_request_field_list_set_field_validator(group->fields_list, field, |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
89 | validator); |
|
42117
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
90 | } |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
91 | |
|
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
92 | void |
| 15884 | 93 | purple_request_field_group_add_field(PurpleRequestFieldGroup *group, |
| 94 | PurpleRequestField *field) | |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
95 | { |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
96 | g_return_if_fail(group != NULL); |
|
42124
472dc8caeda3
Convert PurpleRequestField into a GObject
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42120
diff
changeset
|
97 | g_return_if_fail(PURPLE_IS_REQUEST_FIELD(field)); |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
98 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
99 | group->fields = g_list_append(group->fields, field); |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
100 | |
|
42120
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
101 | if(group->fields_list != NULL) { |
|
1de24f50c9a6
Split PurpleRequestFieldGroup into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42117
diff
changeset
|
102 | _purple_request_field_list_add_field(group->fields_list, field); |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
103 | } |
|
8286
7a4c038d1ecd
[gaim-migrate @ 9010]
Christian Hammond <chipx86@chipx86.com>
parents:
8285
diff
changeset
|
104 | |
|
42117
8a001a903e90
Split PurpleRequestField into its own files
Elliott Sales de Andrade <quantum.analyst@gmail.com>
parents:
42116
diff
changeset
|
105 | _purple_request_field_set_group(field, group); |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
106 | } |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
107 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
108 | const char * |
| 15884 | 109 | purple_request_field_group_get_title(const PurpleRequestFieldGroup *group) |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
110 | { |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
111 | g_return_val_if_fail(group != NULL, NULL); |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
112 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
113 | return group->title; |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
114 | } |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
115 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
116 | GList * |
| 15884 | 117 | purple_request_field_group_get_fields(const PurpleRequestFieldGroup *group) |
|
5807
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
118 | { |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
119 | g_return_val_if_fail(group != NULL, NULL); |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
120 | |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
121 | return group->fields; |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
122 | } |
|
7e0d857c4c93
[gaim-migrate @ 6237]
Christian Hammond <chipx86@chipx86.com>
parents:
5496
diff
changeset
|
123 | |
|
32273
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
124 | PurpleRequestFields * |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
125 | purple_request_field_group_get_fields_list(const PurpleRequestFieldGroup *group) |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
126 | { |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
127 | g_return_val_if_fail(group != NULL, NULL); |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
128 | |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
129 | return group->fields_list; |
|
55a194e489bb
A small bit of hide-a-struct
Mark Doliner <markdoliner@pidgin.im>
parents:
32216
diff
changeset
|
130 | } |