Mercurial > pidgin
diff libpurple/request.c @ 32317:d72f2f13b60f
merge of 'c8c73eea7431e6f940916315ace40a41c8da3faa'
and 'fec428131bde0ae8247941bd6a3d996c984c9189'
| author | Ethan Blanton <elb@pidgin.im> |
|---|---|
| date | Fri, 21 Oct 2011 14:36:18 +0000 |
| parents | 5aa171c8776b |
| children | c3eaa2a6aa42 |
line wrap: on
line diff
--- a/libpurple/request.c Fri Oct 21 14:36:06 2011 +0000 +++ b/libpurple/request.c Fri Oct 21 14:36:18 2011 +0000 @@ -42,6 +42,108 @@ } PurpleRequestInfo; +struct _PurpleRequestField +{ + PurpleRequestFieldType type; + PurpleRequestFieldGroup *group; + + char *id; + char *label; + char *type_hint; + + gboolean visible; + gboolean required; + + union + { + struct + { + gboolean multiline; + gboolean masked; + gboolean editable; + char *default_value; + char *value; + + } string; + + struct + { + int default_value; + int value; + + } integer; + + struct + { + gboolean default_value; + gboolean value; + + } boolean; + + struct + { + int default_value; + int value; + + GList *labels; + + } choice; + + struct + { + GList *items; + GList *icons; + GHashTable *item_data; + GList *selected; + GHashTable *selected_table; + + gboolean multiple_selection; + + } list; + + struct + { + PurpleAccount *default_account; + PurpleAccount *account; + gboolean show_all; + + PurpleFilterAccountFunc filter_func; + + } account; + + struct + { + unsigned int scale_x; + unsigned int scale_y; + const char *buffer; + gsize size; + } image; + + } u; + + void *ui_data; + char *tooltip; +}; + +struct _PurpleRequestFields +{ + GList *groups; + + GHashTable *fields; + + GList *required_fields; + + void *ui_data; +}; + +struct _PurpleRequestFieldGroup +{ + PurpleRequestFields *fields_list; + + char *title; + + GList *fields; +}; PurpleRequestFields * purple_request_fields_new(void) @@ -271,6 +373,20 @@ return purple_request_field_account_get_value(field); } +gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields) +{ + g_return_val_if_fail(fields != NULL, NULL); + + return fields->ui_data; +} + +void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data) +{ + g_return_if_fail(fields != NULL); + + fields->ui_data = ui_data; +} + PurpleRequestFieldGroup * purple_request_field_group_new(const char *title) { @@ -337,6 +453,14 @@ return group->fields; } +PurpleRequestFields * +purple_request_field_group_get_fields_list(const PurpleRequestFieldGroup *group) +{ + g_return_val_if_fail(group != NULL, NULL); + + return group->fields_list; +} + PurpleRequestField * purple_request_field_new(const char *id, const char *text, PurpleRequestFieldType type) @@ -365,6 +489,7 @@ g_free(field->id); g_free(field->label); g_free(field->type_hint); + g_free(field->tooltip); if (field->type == PURPLE_REQUEST_FIELD_STRING) { @@ -428,6 +553,15 @@ } void +purple_request_field_set_tooltip(PurpleRequestField *field, const char *tooltip) +{ + g_return_if_fail(field != NULL); + + g_free(field->tooltip); + field->tooltip = g_strdup(tooltip); +} + +void purple_request_field_set_required(PurpleRequestField *field, gboolean required) { g_return_if_fail(field != NULL); @@ -502,6 +636,14 @@ return field->type_hint; } +const char * +purple_request_field_get_tooltip(const PurpleRequestField *field) +{ + g_return_val_if_fail(field != NULL, NULL); + + return field->tooltip; +} + gboolean purple_request_field_is_required(const PurpleRequestField *field) { @@ -847,13 +989,6 @@ } void -purple_request_field_list_add(PurpleRequestField *field, const char *item, - void *data) -{ - purple_request_field_list_add_icon(field, item, NULL, data); -} - -void purple_request_field_list_add_icon(PurpleRequestField *field, const char *item, const char* icon_path, void *data) {
