comparison libpurple/request.c @ 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
40 void *handle; 40 void *handle;
41 void *ui_handle; 41 void *ui_handle;
42 42
43 } PurpleRequestInfo; 43 } PurpleRequestInfo;
44 44
45 struct _PurpleRequestField
46 {
47 PurpleRequestFieldType type;
48 PurpleRequestFieldGroup *group;
49
50 char *id;
51 char *label;
52 char *type_hint;
53
54 gboolean visible;
55 gboolean required;
56
57 union
58 {
59 struct
60 {
61 gboolean multiline;
62 gboolean masked;
63 gboolean editable;
64 char *default_value;
65 char *value;
66
67 } string;
68
69 struct
70 {
71 int default_value;
72 int value;
73
74 } integer;
75
76 struct
77 {
78 gboolean default_value;
79 gboolean value;
80
81 } boolean;
82
83 struct
84 {
85 int default_value;
86 int value;
87
88 GList *labels;
89
90 } choice;
91
92 struct
93 {
94 GList *items;
95 GList *icons;
96 GHashTable *item_data;
97 GList *selected;
98 GHashTable *selected_table;
99
100 gboolean multiple_selection;
101
102 } list;
103
104 struct
105 {
106 PurpleAccount *default_account;
107 PurpleAccount *account;
108 gboolean show_all;
109
110 PurpleFilterAccountFunc filter_func;
111
112 } account;
113
114 struct
115 {
116 unsigned int scale_x;
117 unsigned int scale_y;
118 const char *buffer;
119 gsize size;
120 } image;
121
122 struct
123 {
124 PurpleCertificate *cert;
125 } certificate;
126
127 } u;
128
129 void *ui_data;
130 char *tooltip;
131 };
132
133 struct _PurpleRequestFields
134 {
135 GList *groups;
136
137 GHashTable *fields;
138
139 GList *required_fields;
140
141 void *ui_data;
142 };
143
144 struct _PurpleRequestFieldGroup
145 {
146 PurpleRequestFields *fields_list;
147
148 char *title;
149
150 GList *fields;
151 };
45 152
46 PurpleRequestFields * 153 PurpleRequestFields *
47 purple_request_fields_new(void) 154 purple_request_fields_new(void)
48 { 155 {
49 PurpleRequestFields *fields; 156 PurpleRequestFields *fields;
269 return NULL; 376 return NULL;
270 377
271 return purple_request_field_account_get_value(field); 378 return purple_request_field_account_get_value(field);
272 } 379 }
273 380
381 gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields)
382 {
383 g_return_val_if_fail(fields != NULL, NULL);
384
385 return fields->ui_data;
386 }
387
388 void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data)
389 {
390 g_return_if_fail(fields != NULL);
391
392 fields->ui_data = ui_data;
393 }
394
274 PurpleRequestFieldGroup * 395 PurpleRequestFieldGroup *
275 purple_request_field_group_new(const char *title) 396 purple_request_field_group_new(const char *title)
276 { 397 {
277 PurpleRequestFieldGroup *group; 398 PurpleRequestFieldGroup *group;
278 399
335 g_return_val_if_fail(group != NULL, NULL); 456 g_return_val_if_fail(group != NULL, NULL);
336 457
337 return group->fields; 458 return group->fields;
338 } 459 }
339 460
461 PurpleRequestFields *
462 purple_request_field_group_get_fields_list(const PurpleRequestFieldGroup *group)
463 {
464 g_return_val_if_fail(group != NULL, NULL);
465
466 return group->fields_list;
467 }
468
340 PurpleRequestField * 469 PurpleRequestField *
341 purple_request_field_new(const char *id, const char *text, 470 purple_request_field_new(const char *id, const char *text,
342 PurpleRequestFieldType type) 471 PurpleRequestFieldType type)
343 { 472 {
344 PurpleRequestField *field; 473 PurpleRequestField *field;
363 g_return_if_fail(field != NULL); 492 g_return_if_fail(field != NULL);
364 493
365 g_free(field->id); 494 g_free(field->id);
366 g_free(field->label); 495 g_free(field->label);
367 g_free(field->type_hint); 496 g_free(field->type_hint);
497 g_free(field->tooltip);
368 498
369 if (field->type == PURPLE_REQUEST_FIELD_STRING) 499 if (field->type == PURPLE_REQUEST_FIELD_STRING)
370 { 500 {
371 g_free(field->u.string.default_value); 501 g_free(field->u.string.default_value);
372 g_free(field->u.string.value); 502 g_free(field->u.string.value);
423 { 553 {
424 g_return_if_fail(field != NULL); 554 g_return_if_fail(field != NULL);
425 555
426 g_free(field->type_hint); 556 g_free(field->type_hint);
427 field->type_hint = g_strdup(type_hint); 557 field->type_hint = g_strdup(type_hint);
558 }
559
560 void
561 purple_request_field_set_tooltip(PurpleRequestField *field, const char *tooltip)
562 {
563 g_return_if_fail(field != NULL);
564
565 g_free(field->tooltip);
566 field->tooltip = g_strdup(tooltip);
428 } 567 }
429 568
430 void 569 void
431 purple_request_field_set_required(PurpleRequestField *field, gboolean required) 570 purple_request_field_set_required(PurpleRequestField *field, gboolean required)
432 { 571 {
500 g_return_val_if_fail(field != NULL, NULL); 639 g_return_val_if_fail(field != NULL, NULL);
501 640
502 return field->type_hint; 641 return field->type_hint;
503 } 642 }
504 643
644 const char *
645 purple_request_field_get_tooltip(const PurpleRequestField *field)
646 {
647 g_return_val_if_fail(field != NULL, NULL);
648
649 return field->tooltip;
650 }
651
505 gboolean 652 gboolean
506 purple_request_field_is_required(const PurpleRequestField *field) 653 purple_request_field_is_required(const PurpleRequestField *field)
507 { 654 {
508 g_return_val_if_fail(field != NULL, FALSE); 655 g_return_val_if_fail(field != NULL, FALSE);
509 656
842 g_return_val_if_fail(field != NULL, NULL); 989 g_return_val_if_fail(field != NULL, NULL);
843 g_return_val_if_fail(text != NULL, NULL); 990 g_return_val_if_fail(text != NULL, NULL);
844 g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST, NULL); 991 g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST, NULL);
845 992
846 return g_hash_table_lookup(field->u.list.item_data, text); 993 return g_hash_table_lookup(field->u.list.item_data, text);
847 }
848
849 void
850 purple_request_field_list_add(PurpleRequestField *field, const char *item,
851 void *data)
852 {
853 purple_request_field_list_add_icon(field, item, NULL, data);
854 } 994 }
855 995
856 void 996 void
857 purple_request_field_list_add_icon(PurpleRequestField *field, const char *item, const char* icon_path, 997 purple_request_field_list_add_icon(PurpleRequestField *field, const char *item, const char* icon_path,
858 void *data) 998 void *data)
1192 g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_ACCOUNT, FALSE); 1332 g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_ACCOUNT, FALSE);
1193 1333
1194 return field->u.account.filter_func; 1334 return field->u.account.filter_func;
1195 } 1335 }
1196 1336
1337 PurpleRequestField *
1338 purple_request_field_certificate_new(const char *id, const char *text, PurpleCertificate *cert)
1339 {
1340 PurpleRequestField *field;
1341
1342 g_return_val_if_fail(id != NULL, NULL);
1343 g_return_val_if_fail(text != NULL, NULL);
1344 g_return_val_if_fail(cert != NULL, NULL);
1345
1346 field = purple_request_field_new(id, text, PURPLE_REQUEST_FIELD_CERTIFICATE);
1347
1348 field->u.certificate.cert = cert;
1349
1350 return field;
1351 }
1352
1353 PurpleCertificate *
1354 purple_request_field_certificate_get_value(const PurpleRequestField *field)
1355 {
1356 g_return_val_if_fail(field != NULL, NULL);
1357 g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_CERTIFICATE, NULL);
1358
1359 return field->u.certificate.cert;
1360 }
1361
1197 /* -- */ 1362 /* -- */
1198 1363
1199 void * 1364 void *
1200 purple_request_input(void *handle, const char *title, const char *primary, 1365 purple_request_input(void *handle, const char *title, const char *primary,
1201 const char *secondary, const char *default_value, 1366 const char *secondary, const char *default_value,
1499 } 1664 }
1500 1665
1501 return NULL; 1666 return NULL;
1502 } 1667 }
1503 1668
1669 void *
1670 purple_request_certificate(void *handle, const char *title,
1671 const char *primary, const char *secondary,
1672 PurpleCertificate *cert,
1673 const char *ok_text, GCallback ok_cb,
1674 const char *cancel_text, GCallback cancel_cb,
1675 void *user_data)
1676 {
1677 PurpleRequestFields *fields;
1678 PurpleRequestFieldGroup *group;
1679 PurpleRequestField *field;
1680
1681 fields = purple_request_fields_new();
1682 group = purple_request_field_group_new(NULL);
1683 purple_request_fields_add_group(fields, group);
1684 field = purple_request_field_certificate_new("certificate", "Certificate", cert);
1685 purple_request_field_group_add_field(group, field);
1686
1687 return purple_request_fields(handle, title, primary, secondary, fields,
1688 ok_text, ok_cb, cancel_text, cancel_cb,
1689 NULL, NULL, NULL, user_data);
1690 }
1691
1504 static void 1692 static void
1505 purple_request_close_info(PurpleRequestInfo *info) 1693 purple_request_close_info(PurpleRequestInfo *info)
1506 { 1694 {
1507 PurpleRequestUiOps *ops; 1695 PurpleRequestUiOps *ops;
1508 1696