Mercurial > pidgin
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 |
