Mercurial > pidgin
comparison libpurple/request.h @ 32819:2c6510167895 default tip
propagate from branch 'im.pidgin.pidgin.2.x.y' (head 3315c5dfbd0ad16511bdcf865e5b07c02d07df24)
to branch 'im.pidgin.pidgin' (head cbd1eda6bcbf0565ae7766396bb8f6f419cb6a9a)
author | Elliott Sales de Andrade <qulogic@pidgin.im> |
---|---|
date | Sat, 02 Jun 2012 02:30:49 +0000 |
parents | ca8b2ec198d9 |
children |
comparison
equal
deleted
inserted
replaced
32818:01ff09d4a463 | 32819:2c6510167895 |
---|---|
28 | 28 |
29 #include <stdlib.h> | 29 #include <stdlib.h> |
30 #include <glib-object.h> | 30 #include <glib-object.h> |
31 #include <glib.h> | 31 #include <glib.h> |
32 | 32 |
33 /** @copydoc _PurpleRequestField */ | 33 /** |
34 * A request field. | |
35 */ | |
34 typedef struct _PurpleRequestField PurpleRequestField; | 36 typedef struct _PurpleRequestField PurpleRequestField; |
37 | |
38 /** | |
39 * Multiple fields request data. | |
40 */ | |
41 typedef struct _PurpleRequestFields PurpleRequestFields; | |
42 | |
43 /** | |
44 * A group of fields with a title. | |
45 */ | |
46 typedef struct _PurpleRequestFieldGroup PurpleRequestFieldGroup; | |
35 | 47 |
36 #include "account.h" | 48 #include "account.h" |
37 | 49 |
38 #define PURPLE_DEFAULT_ACTION_NONE -1 | 50 #define PURPLE_DEFAULT_ACTION_NONE -1 |
39 | 51 |
62 PURPLE_REQUEST_FIELD_BOOLEAN, | 74 PURPLE_REQUEST_FIELD_BOOLEAN, |
63 PURPLE_REQUEST_FIELD_CHOICE, | 75 PURPLE_REQUEST_FIELD_CHOICE, |
64 PURPLE_REQUEST_FIELD_LIST, | 76 PURPLE_REQUEST_FIELD_LIST, |
65 PURPLE_REQUEST_FIELD_LABEL, | 77 PURPLE_REQUEST_FIELD_LABEL, |
66 PURPLE_REQUEST_FIELD_IMAGE, | 78 PURPLE_REQUEST_FIELD_IMAGE, |
67 PURPLE_REQUEST_FIELD_ACCOUNT | 79 PURPLE_REQUEST_FIELD_ACCOUNT, |
80 PURPLE_REQUEST_FIELD_CERTIFICATE | |
68 | 81 |
69 } PurpleRequestFieldType; | 82 } PurpleRequestFieldType; |
70 | |
71 /** | |
72 * Multiple fields request data. | |
73 */ | |
74 typedef struct | |
75 { | |
76 GList *groups; | |
77 | |
78 GHashTable *fields; | |
79 | |
80 GList *required_fields; | |
81 | |
82 void *ui_data; | |
83 | |
84 } PurpleRequestFields; | |
85 | |
86 /** | |
87 * A group of fields with a title. | |
88 */ | |
89 typedef struct | |
90 { | |
91 PurpleRequestFields *fields_list; | |
92 | |
93 char *title; | |
94 | |
95 GList *fields; | |
96 | |
97 } PurpleRequestFieldGroup; | |
98 | |
99 #if !(defined PURPLE_DISABLE_DEPRECATED) || (defined _PURPLE_REQUEST_C_) | |
100 /** | |
101 * A request field. | |
102 */ | |
103 struct _PurpleRequestField | |
104 { | |
105 PurpleRequestFieldType type; | |
106 PurpleRequestFieldGroup *group; | |
107 | |
108 char *id; | |
109 char *label; | |
110 char *type_hint; | |
111 | |
112 gboolean visible; | |
113 gboolean required; | |
114 | |
115 union | |
116 { | |
117 struct | |
118 { | |
119 gboolean multiline; | |
120 gboolean masked; | |
121 gboolean editable; | |
122 char *default_value; | |
123 char *value; | |
124 | |
125 } string; | |
126 | |
127 struct | |
128 { | |
129 int default_value; | |
130 int value; | |
131 | |
132 } integer; | |
133 | |
134 struct | |
135 { | |
136 gboolean default_value; | |
137 gboolean value; | |
138 | |
139 } boolean; | |
140 | |
141 struct | |
142 { | |
143 int default_value; | |
144 int value; | |
145 | |
146 GList *labels; | |
147 | |
148 } choice; | |
149 | |
150 struct | |
151 { | |
152 GList *items; | |
153 GList *icons; | |
154 GHashTable *item_data; | |
155 GList *selected; | |
156 GHashTable *selected_table; | |
157 | |
158 gboolean multiple_selection; | |
159 | |
160 } list; | |
161 | |
162 struct | |
163 { | |
164 PurpleAccount *default_account; | |
165 PurpleAccount *account; | |
166 gboolean show_all; | |
167 | |
168 PurpleFilterAccountFunc filter_func; | |
169 | |
170 } account; | |
171 | |
172 struct | |
173 { | |
174 unsigned int scale_x; | |
175 unsigned int scale_y; | |
176 const char *buffer; | |
177 gsize size; | |
178 } image; | |
179 | |
180 } u; | |
181 | |
182 void *ui_data; | |
183 | |
184 }; | |
185 #endif | |
186 | 83 |
187 /** | 84 /** |
188 * Request UI operations. | 85 * Request UI operations. |
189 */ | 86 */ |
190 typedef struct | 87 typedef struct |
260 typedef void (*PurpleRequestActionCb)(void *, int); | 157 typedef void (*PurpleRequestActionCb)(void *, int); |
261 typedef void (*PurpleRequestChoiceCb)(void *, int); | 158 typedef void (*PurpleRequestChoiceCb)(void *, int); |
262 typedef void (*PurpleRequestFieldsCb)(void *, PurpleRequestFields *fields); | 159 typedef void (*PurpleRequestFieldsCb)(void *, PurpleRequestFields *fields); |
263 typedef void (*PurpleRequestFileCb)(void *, const char *filename); | 160 typedef void (*PurpleRequestFileCb)(void *, const char *filename); |
264 | 161 |
265 #ifdef __cplusplus | 162 G_BEGIN_DECLS |
266 extern "C" { | |
267 #endif | |
268 | 163 |
269 /**************************************************************************/ | 164 /**************************************************************************/ |
270 /** @name Field List API */ | 165 /** @name Field List API */ |
271 /**************************************************************************/ | 166 /**************************************************************************/ |
272 /*@{*/ | 167 /*@{*/ |
408 * @return The account value, if found, or NULL otherwise. | 303 * @return The account value, if found, or NULL otherwise. |
409 */ | 304 */ |
410 PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields, | 305 PurpleAccount *purple_request_fields_get_account(const PurpleRequestFields *fields, |
411 const char *id); | 306 const char *id); |
412 | 307 |
308 /** | |
309 * Returns the UI data associated with this object. | |
310 * | |
311 * @param fields The fields list. | |
312 * | |
313 * @return The UI data associated with this object. This is a | |
314 * convenience field provided to the UIs--it is not | |
315 * used by the libuprple core. | |
316 */ | |
317 gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields); | |
318 | |
319 /** | |
320 * Set the UI data associated with this object. | |
321 * | |
322 * @param fields The fields list. | |
323 * @param ui_data A pointer to associate with this object. | |
324 */ | |
325 void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data); | |
326 | |
413 /*@}*/ | 327 /*@}*/ |
414 | 328 |
415 /**************************************************************************/ | 329 /**************************************************************************/ |
416 /** @name Fields Group API */ | 330 /** @name Fields Group API */ |
417 /**************************************************************************/ | 331 /**************************************************************************/ |
458 * @param group The group. | 372 * @param group The group. |
459 * | 373 * |
460 * @constreturn The list of fields in the group. | 374 * @constreturn The list of fields in the group. |
461 */ | 375 */ |
462 GList *purple_request_field_group_get_fields( | 376 GList *purple_request_field_group_get_fields( |
377 const PurpleRequestFieldGroup *group); | |
378 | |
379 /** | |
380 * Returns a list of all fields in a group. | |
381 * | |
382 * @param group The group. | |
383 * | |
384 * @constreturn The list of fields in the group. | |
385 */ | |
386 PurpleRequestFields *purple_request_field_group_get_fields_list( | |
463 const PurpleRequestFieldGroup *group); | 387 const PurpleRequestFieldGroup *group); |
464 | 388 |
465 /*@}*/ | 389 /*@}*/ |
466 | 390 |
467 /**************************************************************************/ | 391 /**************************************************************************/ |
515 */ | 439 */ |
516 void purple_request_field_set_type_hint(PurpleRequestField *field, | 440 void purple_request_field_set_type_hint(PurpleRequestField *field, |
517 const char *type_hint); | 441 const char *type_hint); |
518 | 442 |
519 /** | 443 /** |
444 * Sets the tooltip for the field. | |
445 * | |
446 * This is optionally used by the UIs to provide a tooltip for | |
447 * the field. | |
448 * | |
449 * @param field The field. | |
450 * @param tooltip The tooltip text. | |
451 */ | |
452 void purple_request_field_set_tooltip(PurpleRequestField *field, | |
453 const char *tooltip); | |
454 | |
455 /** | |
520 * Sets whether or not a field is required. | 456 * Sets whether or not a field is required. |
521 * | 457 * |
522 * @param field The field. | 458 * @param field The field. |
523 * @param required TRUE if required, or FALSE. | 459 * @param required TRUE if required, or FALSE. |
524 */ | 460 */ |
538 * Returns the group for the field. | 474 * Returns the group for the field. |
539 * | 475 * |
540 * @param field The field. | 476 * @param field The field. |
541 * | 477 * |
542 * @return The UI data. | 478 * @return The UI data. |
543 * | |
544 * @since 2.6.0 | |
545 */ | 479 */ |
546 PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field); | 480 PurpleRequestFieldGroup *purple_request_field_get_group(const PurpleRequestField *field); |
547 | 481 |
548 /** | 482 /** |
549 * Returns the ID of a field. | 483 * Returns the ID of a field. |
580 * @return The field's type hint. | 514 * @return The field's type hint. |
581 */ | 515 */ |
582 const char *purple_request_field_get_type_hint(const PurpleRequestField *field); | 516 const char *purple_request_field_get_type_hint(const PurpleRequestField *field); |
583 | 517 |
584 /** | 518 /** |
519 * Returns the field's tooltip. | |
520 * | |
521 * @param field The field. | |
522 * | |
523 * @return The field's tooltip. | |
524 */ | |
525 const char *purple_request_field_get_tooltip(const PurpleRequestField *field); | |
526 | |
527 /** | |
585 * Returns whether or not a field is required. | 528 * Returns whether or not a field is required. |
586 * | 529 * |
587 * @param field The field. | 530 * @param field The field. |
588 * | 531 * |
589 * @return TRUE if the field is required, or FALSE. | 532 * @return TRUE if the field is required, or FALSE. |
594 * Returns the ui_data for a field. | 537 * Returns the ui_data for a field. |
595 * | 538 * |
596 * @param field The field. | 539 * @param field The field. |
597 * | 540 * |
598 * @return The UI data. | 541 * @return The UI data. |
599 * | |
600 * @since 2.6.0 | |
601 */ | 542 */ |
602 gpointer purple_request_field_get_ui_data(const PurpleRequestField *field); | 543 gpointer purple_request_field_get_ui_data(const PurpleRequestField *field); |
603 | 544 |
604 /** | 545 /** |
605 * Sets the ui_data for a field. | 546 * Sets the ui_data for a field. |
606 * | 547 * |
607 * @param field The field. | 548 * @param field The field. |
608 * @param ui_data The UI data. | 549 * @param ui_data The UI data. |
609 * | 550 * |
610 * @return The UI data. | 551 * @return The UI data. |
611 * | |
612 * @since 2.6.0 | |
613 */ | 552 */ |
614 void purple_request_field_set_ui_data(PurpleRequestField *field, | 553 void purple_request_field_set_ui_data(PurpleRequestField *field, |
615 gpointer ui_data); | 554 gpointer ui_data); |
616 | 555 |
617 /*@}*/ | 556 /*@}*/ |
959 /** | 898 /** |
960 * Adds an item to a list field. | 899 * Adds an item to a list field. |
961 * | 900 * |
962 * @param field The list field. | 901 * @param field The list field. |
963 * @param item The list item. | 902 * @param item The list item. |
964 * @param data The associated data. | |
965 * | |
966 * @deprecated Use purple_request_field_list_add_icon() instead. | |
967 */ | |
968 void purple_request_field_list_add(PurpleRequestField *field, | |
969 const char *item, void *data); | |
970 | |
971 /** | |
972 * Adds an item to a list field. | |
973 * | |
974 * @param field The list field. | |
975 * @param item The list item. | |
976 * @param icon_path The path to icon file, or @c NULL for no icon. | 903 * @param icon_path The path to icon file, or @c NULL for no icon. |
977 * @param data The associated data. | 904 * @param data The associated data. |
978 */ | 905 */ |
979 void purple_request_field_list_add_icon(PurpleRequestField *field, | 906 void purple_request_field_list_add_icon(PurpleRequestField *field, |
980 const char *item, const char* icon_path, void* data); | 907 const char *item, const char* icon_path, void* data); |
1237 * @param field The account field. | 1164 * @param field The account field. |
1238 * | 1165 * |
1239 * @return The account filter function. | 1166 * @return The account filter function. |
1240 */ | 1167 */ |
1241 PurpleFilterAccountFunc purple_request_field_account_get_filter( | 1168 PurpleFilterAccountFunc purple_request_field_account_get_filter( |
1169 const PurpleRequestField *field); | |
1170 | |
1171 /*@}*/ | |
1172 | |
1173 /**************************************************************************/ | |
1174 /** @name Certificate Field API */ | |
1175 /**************************************************************************/ | |
1176 /*@{*/ | |
1177 | |
1178 /** | |
1179 * Creates a certificate field. | |
1180 * | |
1181 * @param id The field ID. | |
1182 * @param text The label of the field. | |
1183 * @param cert The certificate of the field. | |
1184 * | |
1185 * @return The new field. | |
1186 */ | |
1187 PurpleRequestField *purple_request_field_certificate_new(const char *id, | |
1188 const char *text, | |
1189 PurpleCertificate *cert); | |
1190 | |
1191 /** | |
1192 * Returns the certificate in a certificate field. | |
1193 * | |
1194 * @param field The field. | |
1195 * | |
1196 * @return The certificate. | |
1197 */ | |
1198 PurpleCertificate *purple_request_field_certificate_get_value( | |
1242 const PurpleRequestField *field); | 1199 const PurpleRequestField *field); |
1243 | 1200 |
1244 /*@}*/ | 1201 /*@}*/ |
1245 | 1202 |
1246 /**************************************************************************/ | 1203 /**************************************************************************/ |
1400 PurpleAccount *account, const char *who, PurpleConversation *conv, | 1357 PurpleAccount *account, const char *who, PurpleConversation *conv, |
1401 void *user_data, size_t action_count, va_list actions); | 1358 void *user_data, size_t action_count, va_list actions); |
1402 | 1359 |
1403 /** | 1360 /** |
1404 * Version of purple_request_action() supplying an image for the UI to | 1361 * Version of purple_request_action() supplying an image for the UI to |
1405 * optionally display as an icon in the dialog; see its documentation | 1362 * optionally display as an icon in the dialog; see its documentation. |
1406 * @since 2.7.0 | |
1407 */ | 1363 */ |
1408 void *purple_request_action_with_icon(void *handle, const char *title, | 1364 void *purple_request_action_with_icon(void *handle, const char *title, |
1409 const char *primary, const char *secondary, int default_action, | 1365 const char *primary, const char *secondary, int default_action, |
1410 PurpleAccount *account, const char *who, PurpleConversation *conv, | 1366 PurpleAccount *account, const char *who, PurpleConversation *conv, |
1411 gconstpointer icon_data, gsize icon_size, void *user_data, | 1367 gconstpointer icon_data, gsize icon_size, void *user_data, |
1412 size_t action_count, ...); | 1368 size_t action_count, ...); |
1413 | 1369 |
1414 /** | 1370 /** |
1415 * <tt>va_list</tt> version of purple_request_action_with_icon(); | 1371 * <tt>va_list</tt> version of purple_request_action_with_icon(); |
1416 * see its documentation. | 1372 * see its documentation. |
1417 * @since 2.7.0 | |
1418 */ | 1373 */ |
1419 void *purple_request_action_with_icon_varg(void *handle, const char *title, | 1374 void *purple_request_action_with_icon_varg(void *handle, const char *title, |
1420 const char *primary, const char *secondary, int default_action, | 1375 const char *primary, const char *secondary, int default_action, |
1421 PurpleAccount *account, const char *who, PurpleConversation *conv, | 1376 PurpleAccount *account, const char *who, PurpleConversation *conv, |
1422 gconstpointer icon_data, gsize icon_size, | 1377 gconstpointer icon_data, gsize icon_size, |
1574 void *purple_request_folder(void *handle, const char *title, const char *dirname, | 1529 void *purple_request_folder(void *handle, const char *title, const char *dirname, |
1575 GCallback ok_cb, GCallback cancel_cb, | 1530 GCallback ok_cb, GCallback cancel_cb, |
1576 PurpleAccount *account, const char *who, PurpleConversation *conv, | 1531 PurpleAccount *account, const char *who, PurpleConversation *conv, |
1577 void *user_data); | 1532 void *user_data); |
1578 | 1533 |
1534 /** | |
1535 * Prompts the user for action over a certificate. | |
1536 * | |
1537 * This is often represented as a dialog with a button for each action. | |
1538 * | |
1539 * @param handle The plugin or connection handle. For some things this | |
1540 * is <em>extremely</em> important. See the comments on | |
1541 * purple_request_input(). | |
1542 * @param title The title of the message, or @c NULL if it should have | |
1543 * no title. | |
1544 * @param primary The main point of the message, or @c NULL if you're | |
1545 * feeling enigmatic. | |
1546 * @param secondary Secondary information, or @c NULL if there is none. | |
1547 * @param cert The #PurpleCertificate associated with this request. | |
1548 * @param ok_text The text for the @c OK button, which may not be @c NULL. | |
1549 * @param ok_cb The callback for the @c OK button, which may not be | |
1550 * @c NULL. | |
1551 * @param cancel_text The text for the @c Cancel button, which may not be | |
1552 * @c NULL. | |
1553 * @param cancel_cb The callback for the @c Cancel button, which may be | |
1554 * @c NULL. | |
1555 * @param user_data The data to pass to the callback. | |
1556 * | |
1557 * @return A UI-specific handle. | |
1558 */ | |
1559 void *purple_request_certificate(void *handle, const char *title, | |
1560 const char *primary, const char *secondary, PurpleCertificate *cert, | |
1561 const char *ok_text, GCallback ok_cb, | |
1562 const char *cancel_text, GCallback cancel_cb, | |
1563 void *user_data); | |
1564 | |
1579 /*@}*/ | 1565 /*@}*/ |
1580 | 1566 |
1581 /**************************************************************************/ | 1567 /**************************************************************************/ |
1582 /** @name UI Registration Functions */ | 1568 /** @name UI Registration Functions */ |
1583 /**************************************************************************/ | 1569 /**************************************************************************/ |
1599 */ | 1585 */ |
1600 PurpleRequestUiOps *purple_request_get_ui_ops(void); | 1586 PurpleRequestUiOps *purple_request_get_ui_ops(void); |
1601 | 1587 |
1602 /*@}*/ | 1588 /*@}*/ |
1603 | 1589 |
1604 #ifdef __cplusplus | 1590 G_END_DECLS |
1605 } | |
1606 #endif | |
1607 | 1591 |
1608 #endif /* _PURPLE_REQUEST_H_ */ | 1592 #endif /* _PURPLE_REQUEST_H_ */ |