| |
1 /** |
| |
2 * gaim |
| |
3 * |
| |
4 * Gaim 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 _GaimPluginPrefFrame |
| |
34 { |
| |
35 GList *prefs; |
| |
36 }; |
| |
37 |
| |
38 struct _GaimPluginPref |
| |
39 { |
| |
40 char *name; |
| |
41 char *label; |
| |
42 |
| |
43 GaimPluginPrefType type; |
| |
44 |
| |
45 int min; |
| |
46 int max; |
| |
47 GList *choices; |
| |
48 unsigned int max_length; |
| |
49 gboolean masked; |
| |
50 GaimStringFormatType format; |
| |
51 }; |
| |
52 |
| |
53 GaimPluginPrefFrame * |
| |
54 gaim_plugin_pref_frame_new() |
| |
55 { |
| |
56 GaimPluginPrefFrame *frame; |
| |
57 |
| |
58 frame = g_new0(GaimPluginPrefFrame, 1); |
| |
59 |
| |
60 return frame; |
| |
61 } |
| |
62 |
| |
63 void |
| |
64 gaim_plugin_pref_frame_destroy(GaimPluginPrefFrame *frame) |
| |
65 { |
| |
66 g_return_if_fail(frame != NULL); |
| |
67 |
| |
68 g_list_foreach(frame->prefs, (GFunc)gaim_plugin_pref_destroy, NULL); |
| |
69 g_list_free(frame->prefs); |
| |
70 g_free(frame); |
| |
71 } |
| |
72 |
| |
73 void |
| |
74 gaim_plugin_pref_frame_add(GaimPluginPrefFrame *frame, GaimPluginPref *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 gaim_plugin_pref_frame_get_prefs(GaimPluginPrefFrame *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 GaimPluginPref * |
| |
92 gaim_plugin_pref_new() |
| |
93 { |
| |
94 GaimPluginPref *pref; |
| |
95 |
| |
96 pref = g_new0(GaimPluginPref, 1); |
| |
97 |
| |
98 return pref; |
| |
99 } |
| |
100 |
| |
101 GaimPluginPref * |
| |
102 gaim_plugin_pref_new_with_name(const char *name) |
| |
103 { |
| |
104 GaimPluginPref *pref; |
| |
105 |
| |
106 g_return_val_if_fail(name != NULL, NULL); |
| |
107 |
| |
108 pref = g_new0(GaimPluginPref, 1); |
| |
109 pref->name = g_strdup(name); |
| |
110 |
| |
111 return pref; |
| |
112 } |
| |
113 |
| |
114 GaimPluginPref * |
| |
115 gaim_plugin_pref_new_with_label(const char *label) |
| |
116 { |
| |
117 GaimPluginPref *pref; |
| |
118 |
| |
119 g_return_val_if_fail(label != NULL, NULL); |
| |
120 |
| |
121 pref = g_new0(GaimPluginPref, 1); |
| |
122 pref->label = g_strdup(label); |
| |
123 |
| |
124 return pref; |
| |
125 } |
| |
126 |
| |
127 GaimPluginPref * |
| |
128 gaim_plugin_pref_new_with_name_and_label(const char *name, const char *label) |
| |
129 { |
| |
130 GaimPluginPref *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(GaimPluginPref, 1); |
| |
136 pref->name = g_strdup(name); |
| |
137 pref->label = g_strdup(label); |
| |
138 |
| |
139 return pref; |
| |
140 } |
| |
141 |
| |
142 void |
| |
143 gaim_plugin_pref_destroy(GaimPluginPref *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 gaim_plugin_pref_set_name(GaimPluginPref *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 gaim_plugin_pref_get_name(GaimPluginPref *pref) |
| |
165 { |
| |
166 g_return_val_if_fail(pref != NULL, NULL); |
| |
167 |
| |
168 return pref->name; |
| |
169 } |
| |
170 |
| |
171 void |
| |
172 gaim_plugin_pref_set_label(GaimPluginPref *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 gaim_plugin_pref_get_label(GaimPluginPref *pref) |
| |
183 { |
| |
184 g_return_val_if_fail(pref != NULL, NULL); |
| |
185 |
| |
186 return pref->label; |
| |
187 } |
| |
188 |
| |
189 void |
| |
190 gaim_plugin_pref_set_bounds(GaimPluginPref *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 (gaim_prefs_get_type(pref->name) != GAIM_PREF_INT) |
| |
198 { |
| |
199 gaim_debug_info("pluginpref", |
| |
200 "gaim_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 gaim_plugin_pref_get_bounds(GaimPluginPref *pref, int *min, int *max) |
| |
217 { |
| |
218 g_return_if_fail(pref != NULL); |
| |
219 g_return_if_fail(pref->name != NULL); |
| |
220 |
| |
221 if (gaim_prefs_get_type(pref->name) != GAIM_PREF_INT) |
| |
222 { |
| |
223 gaim_debug(GAIM_DEBUG_INFO, "pluginpref", |
| |
224 "gaim_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 gaim_plugin_pref_set_type(GaimPluginPref *pref, GaimPluginPrefType type) |
| |
235 { |
| |
236 g_return_if_fail(pref != NULL); |
| |
237 |
| |
238 pref->type = type; |
| |
239 } |
| |
240 |
| |
241 GaimPluginPrefType |
| |
242 gaim_plugin_pref_get_type(GaimPluginPref *pref) |
| |
243 { |
| |
244 g_return_val_if_fail(pref != NULL, GAIM_PLUGIN_PREF_NONE); |
| |
245 |
| |
246 return pref->type; |
| |
247 } |
| |
248 |
| |
249 void |
| |
250 gaim_plugin_pref_add_choice(GaimPluginPref *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 || gaim_prefs_get_type(pref->name) == GAIM_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 gaim_plugin_pref_get_choices(GaimPluginPref *pref) |
| |
262 { |
| |
263 g_return_val_if_fail(pref != NULL, NULL); |
| |
264 |
| |
265 return pref->choices; |
| |
266 } |
| |
267 |
| |
268 void |
| |
269 gaim_plugin_pref_set_max_length(GaimPluginPref *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 gaim_plugin_pref_get_max_length(GaimPluginPref *pref) |
| |
278 { |
| |
279 g_return_val_if_fail(pref != NULL, 0); |
| |
280 |
| |
281 return pref->max_length; |
| |
282 } |
| |
283 |
| |
284 void |
| |
285 gaim_plugin_pref_set_masked(GaimPluginPref *pref, gboolean masked) |
| |
286 { |
| |
287 g_return_if_fail(pref != NULL); |
| |
288 |
| |
289 pref->masked = masked; |
| |
290 } |
| |
291 |
| |
292 gboolean |
| |
293 gaim_plugin_pref_get_masked(GaimPluginPref *pref) |
| |
294 { |
| |
295 g_return_val_if_fail(pref != NULL, FALSE); |
| |
296 |
| |
297 return pref->masked; |
| |
298 } |
| |
299 |
| |
300 void |
| |
301 gaim_plugin_pref_set_format_type(GaimPluginPref *pref, GaimStringFormatType format) |
| |
302 { |
| |
303 g_return_if_fail(pref != NULL); |
| |
304 g_return_if_fail(pref->type == GAIM_PLUGIN_PREF_STRING_FORMAT); |
| |
305 |
| |
306 pref->format = format; |
| |
307 } |
| |
308 |
| |
309 GaimStringFormatType |
| |
310 gaim_plugin_pref_get_format_type(GaimPluginPref *pref) |
| |
311 { |
| |
312 g_return_val_if_fail(pref != NULL, 0); |
| |
313 |
| |
314 if (pref->type != GAIM_PLUGIN_PREF_STRING_FORMAT) |
| |
315 return GAIM_STRING_FORMAT_TYPE_NONE; |
| |
316 |
| |
317 return pref->format; |
| |
318 } |
| |
319 |