Mercurial > pidgin
comparison src/request.h @ 5807:11001789cb22
[gaim-migrate @ 6237]
Added a multi-field request API. Haven't tested it yet, or written a UI
implementation, so parts may change.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 08 Jun 2003 04:06:21 +0000 |
parents | cce2d7868c78 |
children | 133e86584f4b |
comparison
equal
deleted
inserted
replaced
5806:a997762fbaeb | 5807:11001789cb22 |
---|---|
32 */ | 32 */ |
33 typedef enum | 33 typedef enum |
34 { | 34 { |
35 GAIM_REQUEST_INPUT = 0, /**< Text input request. */ | 35 GAIM_REQUEST_INPUT = 0, /**< Text input request. */ |
36 GAIM_REQUEST_CHOICE, /**< Multiple-choice request. */ | 36 GAIM_REQUEST_CHOICE, /**< Multiple-choice request. */ |
37 GAIM_REQUEST_ACTION /**< Action request. */ | 37 GAIM_REQUEST_ACTION, /**< Action request. */ |
38 GAIM_REQUEST_FIELDS /**< Multiple fields request. */ | |
38 | 39 |
39 } GaimRequestType; | 40 } GaimRequestType; |
41 | |
42 /** | |
43 * A type of field. | |
44 */ | |
45 typedef enum | |
46 { | |
47 GAIM_REQUEST_FIELD_NONE, | |
48 GAIM_REQUEST_FIELD_STRING, | |
49 GAIM_REQUEST_FIELD_INTEGER, | |
50 GAIM_REQUEST_FIELD_BOOLEAN, | |
51 GAIM_REQUEST_FIELD_CHOICE | |
52 | |
53 } GaimRequestFieldType; | |
54 | |
55 /** | |
56 * A request field. | |
57 */ | |
58 typedef struct | |
59 { | |
60 GaimRequestFieldType type; | |
61 | |
62 char *id; | |
63 char *label; | |
64 | |
65 union | |
66 { | |
67 struct | |
68 { | |
69 gboolean multiline; | |
70 char *default_value; | |
71 char *value; | |
72 | |
73 } string; | |
74 | |
75 struct | |
76 { | |
77 int default_value; | |
78 int value; | |
79 | |
80 } integer; | |
81 | |
82 struct | |
83 { | |
84 gboolean default_value; | |
85 gboolean value; | |
86 | |
87 } boolean; | |
88 | |
89 struct | |
90 { | |
91 int default_value; | |
92 int value; | |
93 | |
94 GList *labels; | |
95 | |
96 } choice; | |
97 | |
98 } u; | |
99 | |
100 } GaimRequestField; | |
101 | |
102 /** | |
103 * Multiple fields request data. | |
104 */ | |
105 typedef struct | |
106 { | |
107 GList *groups; | |
108 | |
109 GHashTable *fields; | |
110 | |
111 } GaimRequestFields; | |
112 | |
113 /** | |
114 * A group of fields with a title. | |
115 */ | |
116 typedef struct | |
117 { | |
118 GaimRequestFields *fields_list; | |
119 | |
120 char *title; | |
121 | |
122 GList *fields; | |
123 | |
124 } GaimRequestFieldGroup; | |
40 | 125 |
41 /** | 126 /** |
42 * Request UI operations. | 127 * Request UI operations. |
43 */ | 128 */ |
44 typedef struct | 129 typedef struct |
57 va_list choices); | 142 va_list choices); |
58 void *(*request_action)(const char *title, const char *primary, | 143 void *(*request_action)(const char *title, const char *primary, |
59 const char *secondary, unsigned int default_action, | 144 const char *secondary, unsigned int default_action, |
60 void *user_data, size_t action_count, | 145 void *user_data, size_t action_count, |
61 va_list actions); | 146 va_list actions); |
147 void *(*request_fields)(const char *title, const char *primary, | |
148 const char *secondary, GaimRequestFields *fields, | |
149 const char *ok_text, GCallback ok_cb, | |
150 const char *cancel_text, GCallback cancel_cb, | |
151 void *user_data); | |
62 | 152 |
63 void (*close_request)(GaimRequestType type, void *ui_handle); | 153 void (*close_request)(GaimRequestType type, void *ui_handle); |
64 | 154 |
65 } GaimRequestUiOps; | 155 } GaimRequestUiOps; |
66 | 156 |
67 typedef void (*GaimRequestInputCb)(void *, const char *); | 157 typedef void (*GaimRequestInputCb)(void *, const char *); |
68 typedef void (*GaimRequestActionCb)(void *, int); | 158 typedef void (*GaimRequestActionCb)(void *, int); |
159 typedef void (*GaimRequestFieldsCb)(void *, GaimRequestFields *fields); | |
160 | |
161 /**************************************************************************/ | |
162 /** @name Field List API */ | |
163 /**************************************************************************/ | |
164 /*@{*/ | |
165 | |
166 /** | |
167 * Creates a list of fields to pass to gaim_request_fields(). | |
168 * | |
169 * @return A GaimRequestFields structure. | |
170 */ | |
171 GaimRequestFields *gaim_request_fields_new(void); | |
172 | |
173 /** | |
174 * Destroys a list of fields. | |
175 * | |
176 * @param fields The list of fields to destroy. | |
177 */ | |
178 void gaim_request_fields_destroy(GaimRequestFields *fields); | |
179 | |
180 /** | |
181 * Adds a group of fields to the list. | |
182 * | |
183 * @param fields The fields list. | |
184 * @param group The group to add. | |
185 */ | |
186 void gaim_request_fields_add_group(GaimRequestFields *fields, | |
187 GaimRequestFieldGroup *group); | |
188 | |
189 /** | |
190 * Returns a list of all groups in a field list. | |
191 * | |
192 * @param fields The fields list. | |
193 * | |
194 * @return A list of groups. | |
195 */ | |
196 GList *gaim_request_fields_get_groups(const GaimRequestFields *fields); | |
197 | |
198 /** | |
199 * Return the field with the specified ID. | |
200 * | |
201 * @param fields The fields list. | |
202 * @param id The ID of the field. | |
203 * | |
204 * @return The field, if found. | |
205 */ | |
206 GaimRequestField *gaim_request_fields_get_field( | |
207 const GaimRequestFields *fields, const char *id); | |
208 | |
209 /** | |
210 * Returns the string value of a field with the specified ID. | |
211 * | |
212 * @param fields The fields list. | |
213 * @param id The ID of the field. | |
214 * | |
215 * @return The string value, if found, or @c NULL otherwise. | |
216 */ | |
217 const char *gaim_request_fields_get_string(const GaimRequestFields *fields, | |
218 const char *id); | |
219 | |
220 /** | |
221 * Returns the integer value of a field with the specified ID. | |
222 * | |
223 * @param fields The fields list. | |
224 * @param id The ID of the field. | |
225 * | |
226 * @return The integer value, if found, or 0 otherwise. | |
227 */ | |
228 int gaim_request_fields_get_integer(const GaimRequestFields *fields, | |
229 const char *id); | |
230 | |
231 /** | |
232 * Returns the boolean value of a field with the specified ID. | |
233 * | |
234 * @param fields The fields list. | |
235 * @param id The ID of the field. | |
236 * | |
237 * @return The boolean value, if found, or @c FALSE otherwise. | |
238 */ | |
239 gboolean gaim_request_fields_get_bool(const GaimRequestFields *fields, | |
240 const char *id); | |
241 | |
242 /** | |
243 * Returns the choice index of a field with the specified ID. | |
244 * | |
245 * @param fields The fields list. | |
246 * @param id The ID of the field. | |
247 * | |
248 * @return The choice index, if found, or -1 otherwise. | |
249 */ | |
250 int gaim_request_fields_get_choice(const GaimRequestFields *fields, | |
251 const char *id); | |
252 | |
253 /*@}*/ | |
254 | |
255 /**************************************************************************/ | |
256 /** @name Fields Group API */ | |
257 /**************************************************************************/ | |
258 /*@{*/ | |
259 | |
260 /** | |
261 * Creates a fields group with an optional title. | |
262 * | |
263 * @param title The optional title to give the group. | |
264 * | |
265 * @return A new fields group | |
266 */ | |
267 GaimRequestFieldGroup *gaim_request_field_group_new(const char *title); | |
268 | |
269 /** | |
270 * Destroys a fields group. | |
271 * | |
272 * @param group The group to destroy. | |
273 */ | |
274 void gaim_request_field_group_destroy(GaimRequestFieldGroup *group); | |
275 | |
276 /** | |
277 * Adds a field to the group. | |
278 * | |
279 * @param group The group to add the field to. | |
280 * @param field The field to add to the group. | |
281 */ | |
282 void gaim_request_field_group_add_field(GaimRequestFieldGroup *group, | |
283 GaimRequestField *field); | |
284 | |
285 /** | |
286 * Returns the title of a fields group. | |
287 * | |
288 * @param group The group. | |
289 * | |
290 * @return The title, if set. | |
291 */ | |
292 const char *gaim_request_field_group_get_title( | |
293 const GaimRequestFieldGroup *group); | |
294 | |
295 /** | |
296 * Returns a list of all fields in a group. | |
297 * | |
298 * @param group The group. | |
299 * | |
300 * @return The list of fields in the group. | |
301 */ | |
302 GList *gaim_request_field_group_get_fields( | |
303 const GaimRequestFieldGroup *group); | |
304 | |
305 /*@}*/ | |
306 | |
307 /**************************************************************************/ | |
308 /** @name Field API */ | |
309 /**************************************************************************/ | |
310 /*@{*/ | |
311 | |
312 /** | |
313 * Creates a field of the specified type. | |
314 * | |
315 * @param id The field ID. | |
316 * @param text The text label of the field. | |
317 * @param type The type of field. | |
318 * | |
319 * @return The new field. | |
320 */ | |
321 GaimRequestField *gaim_request_field_new(const char *id, const char *text, | |
322 GaimRequestFieldType type); | |
323 | |
324 /** | |
325 * Destroys a field. | |
326 * | |
327 * @param field The field to destroy. | |
328 */ | |
329 void gaim_request_field_destroy(GaimRequestField *field); | |
330 | |
331 /** | |
332 * Sets the label text of a field. | |
333 * | |
334 * @param field The field. | |
335 * @param label The text label. | |
336 */ | |
337 void gaim_request_field_set_label(GaimRequestField *field, const char *label); | |
338 | |
339 /** | |
340 * Returns the type of a field. | |
341 * | |
342 * @param field The field. | |
343 * | |
344 * @return The field's type. | |
345 */ | |
346 GaimRequestFieldType gaim_request_field_get_type(const GaimRequestField *field); | |
347 | |
348 /** | |
349 * Returns the ID of a field. | |
350 * | |
351 * @param field The field. | |
352 * | |
353 * @return The ID | |
354 */ | |
355 const char *gaim_request_field_get_id(const GaimRequestField *field); | |
356 | |
357 /** | |
358 * Returns the label text of a field. | |
359 * | |
360 * @param field The field. | |
361 * | |
362 * @return The label text. | |
363 */ | |
364 const char *gaim_request_field_get_label(const GaimRequestField *field); | |
365 | |
366 /*@}*/ | |
367 | |
368 /**************************************************************************/ | |
369 /** @name String Field API */ | |
370 /**************************************************************************/ | |
371 /*@{*/ | |
372 | |
373 /** | |
374 * Creates a string request field. | |
375 * | |
376 * @param id The field ID. | |
377 * @param text The text label of the field. | |
378 * @param default_value The optional default value. | |
379 * @param multiline Whether or not this should be a multiline string. | |
380 * | |
381 * @return The new field. | |
382 */ | |
383 GaimRequestField *gaim_request_field_string_new(const char *id, | |
384 const char *text, | |
385 const char *default_value, | |
386 gboolean multiline); | |
387 | |
388 /** | |
389 * Sets the default value in a string field. | |
390 * | |
391 * @param field The field. | |
392 * @param value The default value. | |
393 */ | |
394 void gaim_request_field_string_set_default_value(GaimRequestField *field, | |
395 const char *default_value); | |
396 | |
397 /** | |
398 * Returns the default value in a string field. | |
399 * | |
400 * @param field The field. | |
401 * | |
402 * @return The default value. | |
403 */ | |
404 const char *gaim_request_field_string_get_default_value( | |
405 const GaimRequestField *field); | |
406 | |
407 /** | |
408 * Returns the user-entered value in a string field. | |
409 * | |
410 * @param field The field. | |
411 * | |
412 * @return The value. | |
413 */ | |
414 const char *gaim_request_field_string_get_value(const GaimRequestField *field); | |
415 | |
416 /** | |
417 * Returns whether or not a string field is multi-line. | |
418 * | |
419 * @param field The field. | |
420 * | |
421 * @return @c TRUE if the field is mulit-line, or @c FALSE otherwise. | |
422 */ | |
423 gboolean gaim_request_field_string_is_multiline(const GaimRequestField *field); | |
424 | |
425 /*@}*/ | |
426 | |
427 /**************************************************************************/ | |
428 /** @name Integer Field API */ | |
429 /**************************************************************************/ | |
430 /*@{*/ | |
431 | |
432 /** | |
433 * Creates an integer field. | |
434 * | |
435 * @param id The field ID. | |
436 * @param text The text label of the field. | |
437 * @param default_value The default value. | |
438 * | |
439 * @return The new field. | |
440 */ | |
441 GaimRequestField *gaim_request_field_int_new(const char *id, | |
442 const char *text, | |
443 int default_value); | |
444 | |
445 /** | |
446 * Sets the default value in an integer field. | |
447 * | |
448 * @param field The field. | |
449 * @param value The default value. | |
450 */ | |
451 void gaim_request_field_int_set_default_value(GaimRequestField *field, | |
452 int default_value); | |
453 | |
454 /** | |
455 * Returns the default value in an integer field. | |
456 * | |
457 * @param field The field. | |
458 * | |
459 * @return The default value. | |
460 */ | |
461 int gaim_request_field_int_get_default_value(const GaimRequestField *field); | |
462 | |
463 /** | |
464 * Returns the user-entered value in an integer field. | |
465 * | |
466 * @param field The field. | |
467 * | |
468 * @return The value. | |
469 */ | |
470 int gaim_request_field_int_get_value(const GaimRequestField *field); | |
471 | |
472 /*@}*/ | |
473 | |
474 /**************************************************************************/ | |
475 /** @name Boolean Field API */ | |
476 /**************************************************************************/ | |
477 /*@{*/ | |
478 | |
479 /** | |
480 * Creates a boolean field. | |
481 * | |
482 * This is often represented as a checkbox. | |
483 * | |
484 * @param id The field ID. | |
485 * @param text The text label of the field. | |
486 * @param default_value The default value. | |
487 * | |
488 * @return The new field. | |
489 */ | |
490 GaimRequestField *gaim_request_field_bool_new(const char *id, | |
491 const char *text, | |
492 gboolean default_value); | |
493 | |
494 /** | |
495 * Sets the default value in an boolean field. | |
496 * | |
497 * @param field The field. | |
498 * @param value The default value. | |
499 */ | |
500 void gaim_request_field_bool_set_default_value(GaimRequestField *field, | |
501 gboolean default_value); | |
502 | |
503 /** | |
504 * Returns the default value in an boolean field. | |
505 * | |
506 * @param field The field. | |
507 * | |
508 * @return The default value. | |
509 */ | |
510 gboolean gaim_request_field_bool_get_default_value( | |
511 const GaimRequestField *field); | |
512 | |
513 /** | |
514 * Returns the user-entered value in an boolean field. | |
515 * | |
516 * @param field The field. | |
517 * | |
518 * @return The value. | |
519 */ | |
520 gboolean gaim_request_field_bool_get_value(const GaimRequestField *field); | |
521 | |
522 /*@}*/ | |
523 | |
524 /**************************************************************************/ | |
525 /** @name Choice Field API */ | |
526 /**************************************************************************/ | |
527 /*@{*/ | |
528 | |
529 /** | |
530 * Creates a multiple choice field. | |
531 * | |
532 * This is often represented as a group of radio buttons. | |
533 * | |
534 * @param id The field ID. | |
535 * @param text The optional label of the field. | |
536 * @param default_value The default choice. | |
537 * | |
538 * @return The new field. | |
539 */ | |
540 GaimRequestField *gaim_request_field_choice_new(const char *id, | |
541 const char *text, | |
542 int default_value); | |
543 | |
544 /** | |
545 * Adds a choice to a multiple choice field. | |
546 * | |
547 * @param field The choice field. | |
548 * @param label The choice label. | |
549 */ | |
550 void gaim_request_field_choice_add(GaimRequestField *field, | |
551 const char *label); | |
552 | |
553 /** | |
554 * Sets the default value in an choice field. | |
555 * | |
556 * @param field The field. | |
557 * @param value The default value. | |
558 */ | |
559 void gaim_request_field_choice_set_default_value(GaimRequestField *field, | |
560 int default_value); | |
561 | |
562 /** | |
563 * Returns the default value in an choice field. | |
564 * | |
565 * @param field The field. | |
566 * | |
567 * @return The default value. | |
568 */ | |
569 int gaim_request_field_choice_get_default_value(const GaimRequestField *field); | |
570 | |
571 /** | |
572 * Returns the user-entered value in an choice field. | |
573 * | |
574 * @param field The field. | |
575 * | |
576 * @return The value. | |
577 */ | |
578 int gaim_request_field_choice_get_value(const GaimRequestField *field); | |
579 | |
580 /*@}*/ | |
69 | 581 |
70 /**************************************************************************/ | 582 /**************************************************************************/ |
71 /** @name Request API */ | 583 /** @name Request API */ |
72 /**************************************************************************/ | 584 /**************************************************************************/ |
73 /*@{*/ | 585 /*@{*/ |
189 unsigned int default_action, | 701 unsigned int default_action, |
190 void *user_data, size_t action_count, | 702 void *user_data, size_t action_count, |
191 va_list actions); | 703 va_list actions); |
192 | 704 |
193 /** | 705 /** |
706 * Displays groups of fields for the user to fill in. | |
707 * | |
708 * @param handle The plugin or connection handle. | |
709 * @param title The title of the message. | |
710 * @param primary The main point of the message. | |
711 * @param secondary The secondary information. | |
712 * @param fields The list of fields. | |
713 * @param ok_text The text for the OK button. | |
714 * @param ok_cb The callback for the OK button. | |
715 * @param cancel_text The text for the cancel button. | |
716 * @param cancel_cb The callback for the cancel button. | |
717 * @param user_data The data to pass to the callback. | |
718 * | |
719 * @return A UI-specific handle. | |
720 */ | |
721 void *gaim_request_fields(void *handle, const char *title, | |
722 const char *primary, const char *secondary, | |
723 GaimRequestFields *fields, | |
724 const char *ok_text, GCallback ok_cb, | |
725 const char *cancel_text, GCallback cancel_cb, | |
726 void *user_data); | |
727 | |
728 /** | |
194 * Closes a request. | 729 * Closes a request. |
195 * | 730 * |
196 * This should be used only by the UI operation functions and part of the | 731 * This should be used only by the UI operation functions and part of the |
197 * core. | 732 * core. |
198 * | 733 * |