Mercurial > pidgin
comparison libgaim/accountopt.c @ 20389:e354528c4163
propagate from branch 'im.pidgin.gaim' (head 70ac931e4936c7916eec18a07fe46a0af0fd7403)
to branch 'im.pidgin.rlaager.merging.soc-msnp13-to-svn18164' (head 5b5cde92182d2a922a8e7e6c2308342a5490a8c9)
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sun, 15 Apr 2007 02:10:37 +0000 |
parents | 60b1bc8dbf37 |
children |
comparison
equal
deleted
inserted
replaced
19842:21cb7a79ac7f | 20389:e354528c4163 |
---|---|
1 /** | |
2 * @file accountopt.c Account Options API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
7 * Gaim is the legal property of its developers, whose names are too numerous | |
8 * to list here. Please refer to the COPYRIGHT file distributed with this | |
9 * source distribution. | |
10 * | |
11 * This program is free software; you can redistribute it and/or modify | |
12 * it under the terms of the GNU General Public License as published by | |
13 * the Free Software Foundation; either version 2 of the License, or | |
14 * (at your option) any later version. | |
15 * | |
16 * This program is distributed in the hope that it will be useful, | |
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
19 * GNU General Public License for more details. | |
20 * | |
21 * You should have received a copy of the GNU General Public License | |
22 * along with this program; if not, write to the Free Software | |
23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
24 */ | |
25 #include "accountopt.h" | |
26 #include "util.h" | |
27 | |
28 GaimAccountOption * | |
29 gaim_account_option_new(GaimPrefType type, const char *text, | |
30 const char *pref_name) | |
31 { | |
32 GaimAccountOption *option; | |
33 | |
34 g_return_val_if_fail(type != GAIM_PREF_NONE, NULL); | |
35 g_return_val_if_fail(text != NULL, NULL); | |
36 g_return_val_if_fail(pref_name != NULL, NULL); | |
37 | |
38 option = g_new0(GaimAccountOption, 1); | |
39 | |
40 option->type = type; | |
41 option->text = g_strdup(text); | |
42 option->pref_name = g_strdup(pref_name); | |
43 | |
44 return option; | |
45 } | |
46 | |
47 GaimAccountOption * | |
48 gaim_account_option_bool_new(const char *text, const char *pref_name, | |
49 gboolean default_value) | |
50 { | |
51 GaimAccountOption *option; | |
52 | |
53 option = gaim_account_option_new(GAIM_PREF_BOOLEAN, text, pref_name); | |
54 | |
55 if (option == NULL) | |
56 return NULL; | |
57 | |
58 option->default_value.boolean = default_value; | |
59 | |
60 return option; | |
61 } | |
62 | |
63 GaimAccountOption * | |
64 gaim_account_option_int_new(const char *text, const char *pref_name, | |
65 int default_value) | |
66 { | |
67 GaimAccountOption *option; | |
68 | |
69 option = gaim_account_option_new(GAIM_PREF_INT, text, pref_name); | |
70 | |
71 if (option == NULL) | |
72 return NULL; | |
73 | |
74 option->default_value.integer = default_value; | |
75 | |
76 return option; | |
77 } | |
78 | |
79 GaimAccountOption * | |
80 gaim_account_option_string_new(const char *text, const char *pref_name, | |
81 const char *default_value) | |
82 { | |
83 GaimAccountOption *option; | |
84 | |
85 option = gaim_account_option_new(GAIM_PREF_STRING, text, pref_name); | |
86 | |
87 if (option == NULL) | |
88 return NULL; | |
89 | |
90 option->default_value.string = g_strdup(default_value); | |
91 | |
92 return option; | |
93 } | |
94 | |
95 GaimAccountOption * | |
96 gaim_account_option_list_new(const char *text, const char *pref_name, | |
97 GList *list) | |
98 { | |
99 GaimAccountOption *option; | |
100 | |
101 option = gaim_account_option_new(GAIM_PREF_STRING_LIST, text, pref_name); | |
102 | |
103 if (option == NULL) | |
104 return NULL; | |
105 | |
106 option->default_value.list = list; | |
107 | |
108 return option; | |
109 } | |
110 | |
111 void | |
112 gaim_account_option_destroy(GaimAccountOption *option) | |
113 { | |
114 g_return_if_fail(option != NULL); | |
115 | |
116 g_free(option->text); | |
117 g_free(option->pref_name); | |
118 | |
119 if (option->type == GAIM_PREF_STRING) | |
120 { | |
121 g_free(option->default_value.string); | |
122 } | |
123 else if (option->type == GAIM_PREF_STRING_LIST) | |
124 { | |
125 if (option->default_value.list != NULL) | |
126 { | |
127 g_list_foreach(option->default_value.list, (GFunc)g_free, NULL); | |
128 g_list_free(option->default_value.list); | |
129 } | |
130 } | |
131 | |
132 g_free(option); | |
133 } | |
134 | |
135 void | |
136 gaim_account_option_set_default_bool(GaimAccountOption *option, | |
137 gboolean value) | |
138 { | |
139 g_return_if_fail(option != NULL); | |
140 g_return_if_fail(option->type == GAIM_PREF_BOOLEAN); | |
141 | |
142 option->default_value.boolean = value; | |
143 } | |
144 | |
145 void | |
146 gaim_account_option_set_default_int(GaimAccountOption *option, int value) | |
147 { | |
148 g_return_if_fail(option != NULL); | |
149 g_return_if_fail(option->type == GAIM_PREF_INT); | |
150 | |
151 option->default_value.integer = value; | |
152 } | |
153 | |
154 void | |
155 gaim_account_option_set_default_string(GaimAccountOption *option, | |
156 const char *value) | |
157 { | |
158 g_return_if_fail(option != NULL); | |
159 g_return_if_fail(option->type == GAIM_PREF_STRING); | |
160 | |
161 g_free(option->default_value.string); | |
162 option->default_value.string = g_strdup(value); | |
163 } | |
164 | |
165 void | |
166 gaim_account_option_set_masked(GaimAccountOption *option, gboolean masked) | |
167 { | |
168 g_return_if_fail(option != NULL); | |
169 g_return_if_fail(option->type == GAIM_PREF_STRING); | |
170 | |
171 option->masked = masked; | |
172 } | |
173 | |
174 | |
175 void | |
176 gaim_account_option_set_list(GaimAccountOption *option, GList *values) | |
177 { | |
178 g_return_if_fail(option != NULL); | |
179 g_return_if_fail(option->type == GAIM_PREF_STRING_LIST); | |
180 | |
181 if (option->default_value.list != NULL) | |
182 { | |
183 g_list_foreach(option->default_value.list, (GFunc)g_free, NULL); | |
184 g_list_free(option->default_value.list); | |
185 } | |
186 | |
187 option->default_value.list = values; | |
188 } | |
189 | |
190 void | |
191 gaim_account_option_add_list_item(GaimAccountOption *option, | |
192 const char *key, const char *value) | |
193 { | |
194 GaimKeyValuePair *kvp; | |
195 | |
196 g_return_if_fail(option != NULL); | |
197 g_return_if_fail(key != NULL); | |
198 g_return_if_fail(value != NULL); | |
199 g_return_if_fail(option->type == GAIM_PREF_STRING_LIST); | |
200 | |
201 kvp = g_new0(GaimKeyValuePair, 1); | |
202 kvp->key = g_strdup(key); | |
203 kvp->value = g_strdup(value); | |
204 | |
205 option->default_value.list = g_list_append(option->default_value.list, | |
206 kvp); | |
207 } | |
208 | |
209 GaimPrefType | |
210 gaim_account_option_get_type(const GaimAccountOption *option) | |
211 { | |
212 g_return_val_if_fail(option != NULL, GAIM_PREF_NONE); | |
213 | |
214 return option->type; | |
215 } | |
216 | |
217 const char * | |
218 gaim_account_option_get_text(const GaimAccountOption *option) | |
219 { | |
220 g_return_val_if_fail(option != NULL, NULL); | |
221 | |
222 return option->text; | |
223 } | |
224 | |
225 const char * | |
226 gaim_account_option_get_setting(const GaimAccountOption *option) | |
227 { | |
228 g_return_val_if_fail(option != NULL, NULL); | |
229 | |
230 return option->pref_name; | |
231 } | |
232 | |
233 gboolean | |
234 gaim_account_option_get_default_bool(const GaimAccountOption *option) | |
235 { | |
236 g_return_val_if_fail(option != NULL, FALSE); | |
237 g_return_val_if_fail(option->type == GAIM_PREF_BOOLEAN, FALSE); | |
238 | |
239 return option->default_value.boolean; | |
240 } | |
241 | |
242 int | |
243 gaim_account_option_get_default_int(const GaimAccountOption *option) | |
244 { | |
245 g_return_val_if_fail(option != NULL, -1); | |
246 g_return_val_if_fail(option->type == GAIM_PREF_INT, -1); | |
247 | |
248 return option->default_value.integer; | |
249 } | |
250 | |
251 const char * | |
252 gaim_account_option_get_default_string(const GaimAccountOption *option) | |
253 { | |
254 g_return_val_if_fail(option != NULL, NULL); | |
255 g_return_val_if_fail(option->type == GAIM_PREF_STRING, NULL); | |
256 | |
257 return option->default_value.string; | |
258 } | |
259 | |
260 const char * | |
261 gaim_account_option_get_default_list_value(const GaimAccountOption *option) | |
262 { | |
263 GaimKeyValuePair *kvp; | |
264 | |
265 g_return_val_if_fail(option != NULL, NULL); | |
266 g_return_val_if_fail(option->type == GAIM_PREF_STRING_LIST, NULL); | |
267 | |
268 if (option->default_value.list == NULL) | |
269 return NULL; | |
270 | |
271 kvp = option->default_value.list->data; | |
272 | |
273 return (kvp ? kvp->value : NULL); | |
274 } | |
275 | |
276 gboolean | |
277 gaim_account_option_get_masked(const GaimAccountOption *option) | |
278 { | |
279 g_return_val_if_fail(option != NULL, FALSE); | |
280 g_return_val_if_fail(option->type == GAIM_PREF_STRING, FALSE); | |
281 | |
282 return option->masked; | |
283 } | |
284 | |
285 const GList * | |
286 gaim_account_option_get_list(const GaimAccountOption *option) | |
287 { | |
288 g_return_val_if_fail(option != NULL, NULL); | |
289 g_return_val_if_fail(option->type == GAIM_PREF_STRING_LIST, NULL); | |
290 | |
291 return option->default_value.list; | |
292 } | |
293 | |
294 /************************************************************************** | |
295 * Account User Split API | |
296 **************************************************************************/ | |
297 GaimAccountUserSplit * | |
298 gaim_account_user_split_new(const char *text, const char *default_value, | |
299 char sep) | |
300 { | |
301 GaimAccountUserSplit *split; | |
302 | |
303 g_return_val_if_fail(text != NULL, NULL); | |
304 g_return_val_if_fail(sep != 0, NULL); | |
305 | |
306 split = g_new0(GaimAccountUserSplit, 1); | |
307 | |
308 split->text = g_strdup(text); | |
309 split->field_sep = sep; | |
310 split->default_value = g_strdup(default_value); | |
311 | |
312 return split; | |
313 } | |
314 | |
315 void | |
316 gaim_account_user_split_destroy(GaimAccountUserSplit *split) | |
317 { | |
318 g_return_if_fail(split != NULL); | |
319 | |
320 g_free(split->text); | |
321 g_free(split->default_value); | |
322 g_free(split); | |
323 } | |
324 | |
325 const char * | |
326 gaim_account_user_split_get_text(const GaimAccountUserSplit *split) | |
327 { | |
328 g_return_val_if_fail(split != NULL, NULL); | |
329 | |
330 return split->text; | |
331 } | |
332 | |
333 const char * | |
334 gaim_account_user_split_get_default_value(const GaimAccountUserSplit *split) | |
335 { | |
336 g_return_val_if_fail(split != NULL, NULL); | |
337 | |
338 return split->default_value; | |
339 } | |
340 | |
341 char | |
342 gaim_account_user_split_get_separator(const GaimAccountUserSplit *split) | |
343 { | |
344 g_return_val_if_fail(split != NULL, 0); | |
345 | |
346 return split->field_sep; | |
347 } |