comparison 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
comparison
equal deleted inserted replaced
32316:14787acaf9d7 32317:d72f2f13b60f
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 } u;
123
124 void *ui_data;
125 char *tooltip;
126 };
127
128 struct _PurpleRequestFields
129 {
130 GList *groups;
131
132 GHashTable *fields;
133
134 GList *required_fields;
135
136 void *ui_data;
137 };
138
139 struct _PurpleRequestFieldGroup
140 {
141 PurpleRequestFields *fields_list;
142
143 char *title;
144
145 GList *fields;
146 };
45 147
46 PurpleRequestFields * 148 PurpleRequestFields *
47 purple_request_fields_new(void) 149 purple_request_fields_new(void)
48 { 150 {
49 PurpleRequestFields *fields; 151 PurpleRequestFields *fields;
269 return NULL; 371 return NULL;
270 372
271 return purple_request_field_account_get_value(field); 373 return purple_request_field_account_get_value(field);
272 } 374 }
273 375
376 gpointer purple_request_fields_get_ui_data(const PurpleRequestFields *fields)
377 {
378 g_return_val_if_fail(fields != NULL, NULL);
379
380 return fields->ui_data;
381 }
382
383 void purple_request_fields_set_ui_data(PurpleRequestFields *fields, gpointer ui_data)
384 {
385 g_return_if_fail(fields != NULL);
386
387 fields->ui_data = ui_data;
388 }
389
274 PurpleRequestFieldGroup * 390 PurpleRequestFieldGroup *
275 purple_request_field_group_new(const char *title) 391 purple_request_field_group_new(const char *title)
276 { 392 {
277 PurpleRequestFieldGroup *group; 393 PurpleRequestFieldGroup *group;
278 394
335 g_return_val_if_fail(group != NULL, NULL); 451 g_return_val_if_fail(group != NULL, NULL);
336 452
337 return group->fields; 453 return group->fields;
338 } 454 }
339 455
456 PurpleRequestFields *
457 purple_request_field_group_get_fields_list(const PurpleRequestFieldGroup *group)
458 {
459 g_return_val_if_fail(group != NULL, NULL);
460
461 return group->fields_list;
462 }
463
340 PurpleRequestField * 464 PurpleRequestField *
341 purple_request_field_new(const char *id, const char *text, 465 purple_request_field_new(const char *id, const char *text,
342 PurpleRequestFieldType type) 466 PurpleRequestFieldType type)
343 { 467 {
344 PurpleRequestField *field; 468 PurpleRequestField *field;
363 g_return_if_fail(field != NULL); 487 g_return_if_fail(field != NULL);
364 488
365 g_free(field->id); 489 g_free(field->id);
366 g_free(field->label); 490 g_free(field->label);
367 g_free(field->type_hint); 491 g_free(field->type_hint);
492 g_free(field->tooltip);
368 493
369 if (field->type == PURPLE_REQUEST_FIELD_STRING) 494 if (field->type == PURPLE_REQUEST_FIELD_STRING)
370 { 495 {
371 g_free(field->u.string.default_value); 496 g_free(field->u.string.default_value);
372 g_free(field->u.string.value); 497 g_free(field->u.string.value);
423 { 548 {
424 g_return_if_fail(field != NULL); 549 g_return_if_fail(field != NULL);
425 550
426 g_free(field->type_hint); 551 g_free(field->type_hint);
427 field->type_hint = g_strdup(type_hint); 552 field->type_hint = g_strdup(type_hint);
553 }
554
555 void
556 purple_request_field_set_tooltip(PurpleRequestField *field, const char *tooltip)
557 {
558 g_return_if_fail(field != NULL);
559
560 g_free(field->tooltip);
561 field->tooltip = g_strdup(tooltip);
428 } 562 }
429 563
430 void 564 void
431 purple_request_field_set_required(PurpleRequestField *field, gboolean required) 565 purple_request_field_set_required(PurpleRequestField *field, gboolean required)
432 { 566 {
500 g_return_val_if_fail(field != NULL, NULL); 634 g_return_val_if_fail(field != NULL, NULL);
501 635
502 return field->type_hint; 636 return field->type_hint;
503 } 637 }
504 638
639 const char *
640 purple_request_field_get_tooltip(const PurpleRequestField *field)
641 {
642 g_return_val_if_fail(field != NULL, NULL);
643
644 return field->tooltip;
645 }
646
505 gboolean 647 gboolean
506 purple_request_field_is_required(const PurpleRequestField *field) 648 purple_request_field_is_required(const PurpleRequestField *field)
507 { 649 {
508 g_return_val_if_fail(field != NULL, FALSE); 650 g_return_val_if_fail(field != NULL, FALSE);
509 651
842 g_return_val_if_fail(field != NULL, NULL); 984 g_return_val_if_fail(field != NULL, NULL);
843 g_return_val_if_fail(text != NULL, NULL); 985 g_return_val_if_fail(text != NULL, NULL);
844 g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST, NULL); 986 g_return_val_if_fail(field->type == PURPLE_REQUEST_FIELD_LIST, NULL);
845 987
846 return g_hash_table_lookup(field->u.list.item_data, text); 988 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 } 989 }
855 990
856 void 991 void
857 purple_request_field_list_add_icon(PurpleRequestField *field, const char *item, const char* icon_path, 992 purple_request_field_list_add_icon(PurpleRequestField *field, const char *item, const char* icon_path,
858 void *data) 993 void *data)