libpurple/pluginpref.c

branch
cpw.khc.msnp14
changeset 20481
65485e2ed8a3
parent 20472
6a6d2ef151e6
parent 20478
46933dc62880
equal deleted inserted replaced
20480:df9df972434f 20481:65485e2ed8a3
1 /**
2 * purple
3 *
4 * Purple is the legal property of its developers, whose names are too numerous
5 * to list here. Please refer to the COPYRIGHT file distributed with this
6 * source distribution.
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21 */
22 #ifdef HAVE_CONFIG_H
23 # include <config.h>
24 #endif
25
26 #include <glib.h>
27
28 #include "debug.h"
29 #include "internal.h"
30 #include "pluginpref.h"
31 #include "prefs.h"
32
33 struct _PurplePluginPrefFrame
34 {
35 GList *prefs;
36 };
37
38 struct _PurplePluginPref
39 {
40 char *name;
41 char *label;
42
43 PurplePluginPrefType type;
44
45 int min;
46 int max;
47 GList *choices;
48 unsigned int max_length;
49 gboolean masked;
50 PurpleStringFormatType format;
51 };
52
53 PurplePluginPrefFrame *
54 purple_plugin_pref_frame_new()
55 {
56 PurplePluginPrefFrame *frame;
57
58 frame = g_new0(PurplePluginPrefFrame, 1);
59
60 return frame;
61 }
62
63 void
64 purple_plugin_pref_frame_destroy(PurplePluginPrefFrame *frame)
65 {
66 g_return_if_fail(frame != NULL);
67
68 g_list_foreach(frame->prefs, (GFunc)purple_plugin_pref_destroy, NULL);
69 g_list_free(frame->prefs);
70 g_free(frame);
71 }
72
73 void
74 purple_plugin_pref_frame_add(PurplePluginPrefFrame *frame, PurplePluginPref *pref)
75 {
76 g_return_if_fail(frame != NULL);
77 g_return_if_fail(pref != NULL);
78
79 frame->prefs = g_list_append(frame->prefs, pref);
80 }
81
82 GList *
83 purple_plugin_pref_frame_get_prefs(PurplePluginPrefFrame *frame)
84 {
85 g_return_val_if_fail(frame != NULL, NULL);
86 g_return_val_if_fail(frame->prefs != NULL, NULL);
87
88 return frame->prefs;
89 }
90
91 PurplePluginPref *
92 purple_plugin_pref_new()
93 {
94 PurplePluginPref *pref;
95
96 pref = g_new0(PurplePluginPref, 1);
97
98 return pref;
99 }
100
101 PurplePluginPref *
102 purple_plugin_pref_new_with_name(const char *name)
103 {
104 PurplePluginPref *pref;
105
106 g_return_val_if_fail(name != NULL, NULL);
107
108 pref = g_new0(PurplePluginPref, 1);
109 pref->name = g_strdup(name);
110
111 return pref;
112 }
113
114 PurplePluginPref *
115 purple_plugin_pref_new_with_label(const char *label)
116 {
117 PurplePluginPref *pref;
118
119 g_return_val_if_fail(label != NULL, NULL);
120
121 pref = g_new0(PurplePluginPref, 1);
122 pref->label = g_strdup(label);
123
124 return pref;
125 }
126
127 PurplePluginPref *
128 purple_plugin_pref_new_with_name_and_label(const char *name, const char *label)
129 {
130 PurplePluginPref *pref;
131
132 g_return_val_if_fail(name != NULL, NULL);
133 g_return_val_if_fail(label != NULL, NULL);
134
135 pref = g_new0(PurplePluginPref, 1);
136 pref->name = g_strdup(name);
137 pref->label = g_strdup(label);
138
139 return pref;
140 }
141
142 void
143 purple_plugin_pref_destroy(PurplePluginPref *pref)
144 {
145 g_return_if_fail(pref != NULL);
146
147 g_free(pref->name);
148 g_free(pref->label);
149 g_list_free(pref->choices);
150 g_free(pref);
151 }
152
153 void
154 purple_plugin_pref_set_name(PurplePluginPref *pref, const char *name)
155 {
156 g_return_if_fail(pref != NULL);
157 g_return_if_fail(name != NULL);
158
159 g_free(pref->name);
160 pref->name = g_strdup(name);
161 }
162
163 const char *
164 purple_plugin_pref_get_name(PurplePluginPref *pref)
165 {
166 g_return_val_if_fail(pref != NULL, NULL);
167
168 return pref->name;
169 }
170
171 void
172 purple_plugin_pref_set_label(PurplePluginPref *pref, const char *label)
173 {
174 g_return_if_fail(pref != NULL);
175 g_return_if_fail(label != NULL);
176
177 g_free(pref->label);
178 pref->label = g_strdup(label);
179 }
180
181 const char *
182 purple_plugin_pref_get_label(PurplePluginPref *pref)
183 {
184 g_return_val_if_fail(pref != NULL, NULL);
185
186 return pref->label;
187 }
188
189 void
190 purple_plugin_pref_set_bounds(PurplePluginPref *pref, int min, int max)
191 {
192 int tmp;
193
194 g_return_if_fail(pref != NULL);
195 g_return_if_fail(pref->name != NULL);
196
197 if (purple_prefs_get_type(pref->name) != PURPLE_PREF_INT)
198 {
199 purple_debug_info("pluginpref",
200 "purple_plugin_pref_set_bounds: %s is not an integer pref\n",
201 pref->name);
202 return;
203 }
204
205 if (min > max)
206 {
207 tmp = min;
208 min = max;
209 max = tmp;
210 }
211
212 pref->min = min;
213 pref->max = max;
214 }
215
216 void purple_plugin_pref_get_bounds(PurplePluginPref *pref, int *min, int *max)
217 {
218 g_return_if_fail(pref != NULL);
219 g_return_if_fail(pref->name != NULL);
220
221 if (purple_prefs_get_type(pref->name) != PURPLE_PREF_INT)
222 {
223 purple_debug(PURPLE_DEBUG_INFO, "pluginpref",
224 "purple_plugin_pref_get_bounds: %s is not an integer pref\n",
225 pref->name);
226 return;
227 }
228
229 *min = pref->min;
230 *max = pref->max;
231 }
232
233 void
234 purple_plugin_pref_set_type(PurplePluginPref *pref, PurplePluginPrefType type)
235 {
236 g_return_if_fail(pref != NULL);
237
238 pref->type = type;
239 }
240
241 PurplePluginPrefType
242 purple_plugin_pref_get_type(PurplePluginPref *pref)
243 {
244 g_return_val_if_fail(pref != NULL, PURPLE_PLUGIN_PREF_NONE);
245
246 return pref->type;
247 }
248
249 void
250 purple_plugin_pref_add_choice(PurplePluginPref *pref, const char *label, gpointer choice)
251 {
252 g_return_if_fail(pref != NULL);
253 g_return_if_fail(label != NULL);
254 g_return_if_fail(choice || purple_prefs_get_type(pref->name) == PURPLE_PREF_INT);
255
256 pref->choices = g_list_append(pref->choices, (gpointer)label);
257 pref->choices = g_list_append(pref->choices, choice);
258 }
259
260 GList *
261 purple_plugin_pref_get_choices(PurplePluginPref *pref)
262 {
263 g_return_val_if_fail(pref != NULL, NULL);
264
265 return pref->choices;
266 }
267
268 void
269 purple_plugin_pref_set_max_length(PurplePluginPref *pref, unsigned int max_length)
270 {
271 g_return_if_fail(pref != NULL);
272
273 pref->max_length = max_length;
274 }
275
276 unsigned int
277 purple_plugin_pref_get_max_length(PurplePluginPref *pref)
278 {
279 g_return_val_if_fail(pref != NULL, 0);
280
281 return pref->max_length;
282 }
283
284 void
285 purple_plugin_pref_set_masked(PurplePluginPref *pref, gboolean masked)
286 {
287 g_return_if_fail(pref != NULL);
288
289 pref->masked = masked;
290 }
291
292 gboolean
293 purple_plugin_pref_get_masked(PurplePluginPref *pref)
294 {
295 g_return_val_if_fail(pref != NULL, FALSE);
296
297 return pref->masked;
298 }
299
300 void
301 purple_plugin_pref_set_format_type(PurplePluginPref *pref, PurpleStringFormatType format)
302 {
303 g_return_if_fail(pref != NULL);
304 g_return_if_fail(pref->type == PURPLE_PLUGIN_PREF_STRING_FORMAT);
305
306 pref->format = format;
307 }
308
309 PurpleStringFormatType
310 purple_plugin_pref_get_format_type(PurplePluginPref *pref)
311 {
312 g_return_val_if_fail(pref != NULL, 0);
313
314 if (pref->type != PURPLE_PLUGIN_PREF_STRING_FORMAT)
315 return PURPLE_STRING_FORMAT_TYPE_NONE;
316
317 return pref->format;
318 }
319

mercurial