Mercurial > pidgin
annotate src/accountopt.h @ 9251:45d2ad4ac1c1
[gaim-migrate @ 10050]
Stu Tomlinson has provided a nice patch to move the separation of IM
and Chat windows back into the core from the extplacement plugin.
It's awesome to have crazy patch writers, and even better to have
crazy patch writers who write what I want to write before I do it,
thus saving me the effort.
committer: Tailor Script <tailor@pidgin.im>
author | Ethan Blanton <elb@pidgin.im> |
---|---|
date | Wed, 09 Jun 2004 20:47:07 +0000 |
parents | 1a62ab7225f3 |
children | db62420a53a2 |
rev | line source |
---|---|
5639 | 1 /** |
2 * @file accountopt.h Account Options API | |
3 * @ingroup core | |
4 * | |
5 * gaim | |
6 * | |
8046 | 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. | |
6902
e30bedfb99db
[gaim-migrate @ 7449]
Christian Hammond <chipx86@chipx86.com>
parents:
5944
diff
changeset
|
10 * |
5639 | 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 #ifndef _GAIM_ACCOUNT_OPT_H_ | |
26 #define _GAIM_ACCOUNT_OPT_H_ | |
27 | |
28 #include "prefs.h" | |
29 | |
30 /** | |
31 * An option for an account. | |
6902
e30bedfb99db
[gaim-migrate @ 7449]
Christian Hammond <chipx86@chipx86.com>
parents:
5944
diff
changeset
|
32 * |
5639 | 33 * This is set by protocol plugins, and appears in the account settings |
34 * dialogs. | |
35 */ | |
36 typedef struct | |
37 { | |
38 GaimPrefType type; /**< The type of value. */ | |
39 | |
40 char *text; /**< The text that will appear to the user. */ | |
41 char *pref_name; /**< The name of the associated preference. */ | |
42 | |
43 union | |
44 { | |
45 gboolean boolean; /**< The default boolean value. */ | |
46 int integer; /**< The default integer value. */ | |
47 char *string; /**< The default string value. */ | |
8570
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
48 GList *list; /**< The default list value. */ |
5639 | 49 |
50 } default_value; | |
51 | |
52 } GaimAccountOption; | |
53 | |
54 /** | |
55 * A username split. | |
56 * | |
57 * This is used by some protocols to separate the fields of the username | |
58 * into more human-readable components. | |
59 */ | |
60 typedef struct | |
61 { | |
62 char *text; /**< The text that will appear to the user. */ | |
63 char *default_value; /**< The default value. */ | |
64 char field_sep; /**< The field separator. */ | |
65 | |
66 } GaimAccountUserSplit; | |
67 | |
5944
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
68 #ifdef __cplusplus |
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
69 extern "C" { |
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
70 #endif |
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
71 |
5639 | 72 /**************************************************************************/ |
73 /** @name Account Option API */ | |
74 /**************************************************************************/ | |
75 /*@{*/ | |
76 | |
77 /** | |
78 * Creates a new account option. | |
79 * | |
80 * @param type The type of option. | |
81 * @param text The text of the option. | |
82 * @param pref_name The account preference name for the option. | |
83 * | |
84 * @return The account option. | |
85 */ | |
86 GaimAccountOption *gaim_account_option_new(GaimPrefType type, const char *text, | |
87 const char *pref_name); | |
88 | |
89 /** | |
90 * Creates a new boolean account option. | |
91 * | |
92 * @param text The text of the option. | |
93 * @param pref_name The account preference name for the option. | |
94 * @param default_value The default value. | |
95 * | |
96 * @return The account option. | |
97 */ | |
98 GaimAccountOption *gaim_account_option_bool_new(const char *text, | |
99 const char *pref_name, | |
100 gboolean default_value); | |
101 | |
102 /** | |
103 * Creates a new integer account option. | |
104 * | |
105 * @param text The text of the option. | |
106 * @param pref_name The account preference name for the option. | |
107 * @param default_value The default value. | |
108 * | |
109 * @return The account option. | |
110 */ | |
111 GaimAccountOption *gaim_account_option_int_new(const char *text, | |
112 const char *pref_name, | |
113 int default_value); | |
114 | |
115 /** | |
116 * Creates a new string account option. | |
117 * | |
118 * @param text The text of the option. | |
119 * @param pref_name The account preference name for the option. | |
120 * @param default_value The default value. | |
121 * | |
122 * @return The account option. | |
123 */ | |
124 GaimAccountOption *gaim_account_option_string_new(const char *text, | |
125 const char *pref_name, | |
126 const char *default_value); | |
127 | |
128 /** | |
8570
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
129 * Creates a new list account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
130 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
131 * The list passed will be owned by the account option, and the |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
132 * strings inside will be freed automatically. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
133 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
134 * The list is in key, value pairs. The key is the ID stored and used |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
135 * internally, and the value is the label displayed. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
136 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
137 * @param text The text of the option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
138 * @param pref_name The account preference name for the option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
139 * @param list The key, value list. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
140 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
141 * @return The account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
142 */ |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
143 GaimAccountOption *gaim_account_option_list_new(const char *text, |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
144 const char *pref_name, |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
145 GList *list); |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
146 |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
147 /** |
5639 | 148 * Destroys an account option. |
149 * | |
150 * @param option The option to destroy. | |
151 */ | |
152 void gaim_account_option_destroy(GaimAccountOption *option); | |
153 | |
154 /** | |
155 * Sets the default boolean value for an account option. | |
156 * | |
157 * @param option The account option. | |
158 * @param value The default boolean value. | |
159 */ | |
160 void gaim_account_option_set_default_bool(GaimAccountOption *option, | |
161 gboolean value); | |
162 | |
163 /** | |
164 * Sets the default integer value for an account option. | |
165 * | |
166 * @param option The account option. | |
167 * @param value The default integer value. | |
168 */ | |
169 void gaim_account_option_set_default_int(GaimAccountOption *option, | |
170 int value); | |
171 | |
172 /** | |
173 * Sets the default string value for an account option. | |
174 * | |
175 * @param option The account option. | |
176 * @param value The default string value. | |
177 */ | |
178 void gaim_account_option_set_default_string(GaimAccountOption *option, | |
179 const char *value); | |
180 | |
181 /** | |
8570
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
182 * Sets the list values for an account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
183 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
184 * The list passed will be owned by the account option, and the |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
185 * strings inside will be freed automatically. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
186 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
187 * The list is in key, value pairs. The key is the ID stored and used |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
188 * internally, and the value is the label displayed. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
189 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
190 * @param option The account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
191 * @param values The default list value. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
192 */ |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
193 void gaim_account_option_set_list(GaimAccountOption *option, GList *values); |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
194 |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
195 /** |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
196 * Adds an item to a list account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
197 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
198 * @param option The account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
199 * @param key The key. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
200 * @param value The value. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
201 */ |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
202 void gaim_account_option_add_list_item(GaimAccountOption *option, |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
203 const char *key, const char *value); |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
204 |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
205 /** |
5639 | 206 * Returns the specified account option's type. |
207 * | |
208 * @param option The account option. | |
209 * | |
210 * @return The account option's type. | |
211 */ | |
212 GaimPrefType gaim_account_option_get_type(const GaimAccountOption *option); | |
213 | |
214 /** | |
215 * Returns the text for an account option. | |
216 * | |
217 * @param option The accont option. | |
218 * | |
219 * @return The account option's text. | |
220 */ | |
221 const char *gaim_account_option_get_text(const GaimAccountOption *option); | |
222 | |
223 /** | |
5660
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
224 * Returns the account setting for an account option. |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
225 * |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
226 * @param option The accont option. |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
227 * |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
228 * @return The account setting. |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
229 */ |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
230 const char *gaim_account_option_get_setting(const GaimAccountOption *option); |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
231 |
1709a545a7bd
[gaim-migrate @ 6074]
Christian Hammond <chipx86@chipx86.com>
parents:
5654
diff
changeset
|
232 /** |
5639 | 233 * Returns the default boolean value for an account option. |
234 * | |
235 * @param option The account option. | |
6902
e30bedfb99db
[gaim-migrate @ 7449]
Christian Hammond <chipx86@chipx86.com>
parents:
5944
diff
changeset
|
236 * |
5639 | 237 * @return The default boolean value. |
238 */ | |
239 gboolean gaim_account_option_get_default_bool(const GaimAccountOption *option); | |
240 | |
241 /** | |
242 * Returns the default integer value for an account option. | |
243 * | |
244 * @param option The account option. | |
6902
e30bedfb99db
[gaim-migrate @ 7449]
Christian Hammond <chipx86@chipx86.com>
parents:
5944
diff
changeset
|
245 * |
5639 | 246 * @return The default integer value. |
247 */ | |
248 int gaim_account_option_get_default_int(const GaimAccountOption *option); | |
249 | |
250 /** | |
251 * Returns the default string value for an account option. | |
252 * | |
253 * @param option The account option. | |
6902
e30bedfb99db
[gaim-migrate @ 7449]
Christian Hammond <chipx86@chipx86.com>
parents:
5944
diff
changeset
|
254 * |
5639 | 255 * @return The default string value. |
256 */ | |
257 const char *gaim_account_option_get_default_string( | |
8570
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
258 const GaimAccountOption *option); |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
259 |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
260 /** |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
261 * Returns the list values for an account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
262 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
263 * @param option The account option. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
264 * |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
265 * @return The list values. |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
266 */ |
1a62ab7225f3
[gaim-migrate @ 9318]
Christian Hammond <chipx86@chipx86.com>
parents:
8046
diff
changeset
|
267 const GList *gaim_account_option_get_list(const GaimAccountOption *option); |
5639 | 268 |
269 /*@}*/ | |
270 | |
271 | |
272 /**************************************************************************/ | |
273 /** @name Account User Split API */ | |
274 /**************************************************************************/ | |
275 /*@{*/ | |
276 | |
277 /** | |
278 * Creates a new account username split. | |
279 * | |
280 * @param text The text of the option. | |
281 * @param default_value The default value. | |
282 * @param sep The field separator. | |
283 * | |
284 * @return The new user split. | |
285 */ | |
286 GaimAccountUserSplit *gaim_account_user_split_new(const char *text, | |
287 const char *default_value, | |
288 char sep); | |
289 | |
290 /** | |
291 * Destroys an account username split. | |
292 * | |
293 * @param split The split to destroy. | |
294 */ | |
295 void gaim_account_user_split_destroy(GaimAccountUserSplit *split); | |
296 | |
297 /** | |
5654
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
298 * Returns the text for an account username split. |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
299 * |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
300 * @param split The account username split. |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
301 * |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
302 * @return The account username split's text. |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
303 */ |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
304 const char *gaim_account_user_split_get_text(const GaimAccountUserSplit *split); |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
305 |
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
306 /** |
5639 | 307 * Returns the default string value for an account split. |
308 * | |
309 * @param split The account username split. | |
310 * | |
311 * @return The default string. | |
312 */ | |
5654
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
313 const char *gaim_account_user_split_get_default_value( |
5639 | 314 const GaimAccountUserSplit *split); |
315 | |
316 /** | |
317 * Returns the field separator for an account split. | |
318 * | |
319 * @param split The account username split. | |
320 * | |
321 * @return The field separator. | |
322 */ | |
5654
c52a97f3739e
[gaim-migrate @ 6068]
Christian Hammond <chipx86@chipx86.com>
parents:
5639
diff
changeset
|
323 char gaim_account_user_split_get_separator(const GaimAccountUserSplit *split); |
5639 | 324 |
325 /*@}*/ | |
326 | |
5944
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
327 #ifdef __cplusplus |
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
328 } |
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
329 #endif |
158196b2db19
[gaim-migrate @ 6385]
Christian Hammond <chipx86@chipx86.com>
parents:
5660
diff
changeset
|
330 |
5639 | 331 #endif /* _GAIM_ACCOUNT_OPT_H_ */ |