00001
00025 #ifndef _GAIM_REQUEST_H_
00026 #define _GAIM_REQUEST_H_
00027
00028 #include <stdlib.h>
00029 #include <glib-object.h>
00030 #include <glib.h>
00031
00032 #include "account.h"
00033
00037 typedef enum
00038 {
00039 GAIM_REQUEST_INPUT = 0,
00040 GAIM_REQUEST_CHOICE,
00041 GAIM_REQUEST_ACTION,
00042 GAIM_REQUEST_FIELDS
00044 } GaimRequestType;
00045
00049 typedef enum
00050 {
00051 GAIM_REQUEST_FIELD_NONE,
00052 GAIM_REQUEST_FIELD_STRING,
00053 GAIM_REQUEST_FIELD_INTEGER,
00054 GAIM_REQUEST_FIELD_BOOLEAN,
00055 GAIM_REQUEST_FIELD_CHOICE,
00056 GAIM_REQUEST_FIELD_LIST,
00057 GAIM_REQUEST_FIELD_LABEL,
00058 GAIM_REQUEST_FIELD_ACCOUNT
00059
00060 } GaimRequestFieldType;
00061
00065 typedef struct
00066 {
00067 GList *groups;
00068
00069 GHashTable *fields;
00070
00071 GList *required_fields;
00072
00073 void *ui_data;
00074
00075 } GaimRequestFields;
00076
00080 typedef struct
00081 {
00082 GaimRequestFields *fields_list;
00083
00084 char *title;
00085
00086 GList *fields;
00087
00088 } GaimRequestFieldGroup;
00089
00093 typedef struct
00094 {
00095 GaimRequestFieldType type;
00096 GaimRequestFieldGroup *group;
00097
00098 char *id;
00099 char *label;
00100 char *type_hint;
00101
00102 gboolean visible;
00103 gboolean required;
00104
00105 union
00106 {
00107 struct
00108 {
00109 gboolean multiline;
00110 gboolean masked;
00111 gboolean editable;
00112 char *default_value;
00113 char *value;
00114
00115 } string;
00116
00117 struct
00118 {
00119 int default_value;
00120 int value;
00121
00122 } integer;
00123
00124 struct
00125 {
00126 gboolean default_value;
00127 gboolean value;
00128
00129 } boolean;
00130
00131 struct
00132 {
00133 int default_value;
00134 int value;
00135
00136 GList *labels;
00137
00138 } choice;
00139
00140 struct
00141 {
00142 GList *items;
00143 GHashTable *item_data;
00144 GList *selected;
00145 GHashTable *selected_table;
00146
00147 gboolean multiple_selection;
00148
00149 } list;
00150
00151 struct
00152 {
00153 GaimAccount *default_account;
00154 GaimAccount *account;
00155 gboolean show_all;
00156
00157 GaimFilterAccountFunc filter_func;
00158
00159 } account;
00160
00161 } u;
00162
00163 void *ui_data;
00164
00165 } GaimRequestField;
00166
00170 typedef struct
00171 {
00172 void *(*request_input)(const char *title, const char *primary,
00173 const char *secondary, const char *default_value,
00174 gboolean multiline, gboolean masked, gchar *hint,
00175 const char *ok_text, GCallback ok_cb,
00176 const char *cancel_text, GCallback cancel_cb,
00177 void *user_data);
00178 void *(*request_choice)(const char *title, const char *primary,
00179 const char *secondary, unsigned int default_value,
00180 const char *ok_text, GCallback ok_cb,
00181 const char *cancel_text, GCallback cancel_cb,
00182 void *user_data, size_t choice_count,
00183 va_list choices);
00184 void *(*request_action)(const char *title, const char *primary,
00185 const char *secondary, unsigned int default_action,
00186 void *user_data, size_t action_count,
00187 va_list actions);
00188 void *(*request_fields)(const char *title, const char *primary,
00189 const char *secondary, GaimRequestFields *fields,
00190 const char *ok_text, GCallback ok_cb,
00191 const char *cancel_text, GCallback cancel_cb,
00192 void *user_data);
00193
00194 void (*close_request)(GaimRequestType type, void *ui_handle);
00195
00196 } GaimRequestUiOps;
00197
00198 typedef void (*GaimRequestInputCb)(void *, const char *);
00199 typedef void (*GaimRequestActionCb)(void *, int);
00200 typedef void (*GaimRequestFieldsCb)(void *, GaimRequestFields *fields);
00201
00202 #ifdef __cplusplus
00203 extern "C" {
00204 #endif
00205
00206
00208
00216 GaimRequestFields *gaim_request_fields_new(void);
00217
00223 void gaim_request_fields_destroy(GaimRequestFields *fields);
00224
00231 void gaim_request_fields_add_group(GaimRequestFields *fields,
00232 GaimRequestFieldGroup *group);
00233
00241 GList *gaim_request_fields_get_groups(const GaimRequestFields *fields);
00242
00251 gboolean gaim_request_fields_exists(const GaimRequestFields *fields,
00252 const char *id);
00253
00261 const GList *gaim_request_fields_get_required(const GaimRequestFields *fields);
00262
00271 gboolean gaim_request_fields_is_field_required(const GaimRequestFields *fields,
00272 const char *id);
00273
00281 gboolean gaim_request_fields_all_required_filled(
00282 const GaimRequestFields *fields);
00283
00292 GaimRequestField *gaim_request_fields_get_field(
00293 const GaimRequestFields *fields, const char *id);
00294
00303 const char *gaim_request_fields_get_string(const GaimRequestFields *fields,
00304 const char *id);
00305
00314 int gaim_request_fields_get_integer(const GaimRequestFields *fields,
00315 const char *id);
00316
00325 gboolean gaim_request_fields_get_bool(const GaimRequestFields *fields,
00326 const char *id);
00327
00336 int gaim_request_fields_get_choice(const GaimRequestFields *fields,
00337 const char *id);
00338
00347 GaimAccount *gaim_request_fields_get_account(const GaimRequestFields *fields,
00348 const char *id);
00349
00352
00354
00364 GaimRequestFieldGroup *gaim_request_field_group_new(const char *title);
00365
00371 void gaim_request_field_group_destroy(GaimRequestFieldGroup *group);
00372
00379 void gaim_request_field_group_add_field(GaimRequestFieldGroup *group,
00380 GaimRequestField *field);
00381
00389 const char *gaim_request_field_group_get_title(
00390 const GaimRequestFieldGroup *group);
00391
00399 GList *gaim_request_field_group_get_fields(
00400 const GaimRequestFieldGroup *group);
00401
00404
00406
00418 GaimRequestField *gaim_request_field_new(const char *id, const char *text,
00419 GaimRequestFieldType type);
00420
00426 void gaim_request_field_destroy(GaimRequestField *field);
00427
00434 void gaim_request_field_set_label(GaimRequestField *field, const char *label);
00435
00442 void gaim_request_field_set_visible(GaimRequestField *field, gboolean visible);
00443
00453 void gaim_request_field_set_type_hint(GaimRequestField *field,
00454 const char *type_hint);
00455
00462 void gaim_request_field_set_required(GaimRequestField *field,
00463 gboolean required);
00464
00472 GaimRequestFieldType gaim_request_field_get_type(const GaimRequestField *field);
00473
00481 const char *gaim_request_field_get_id(const GaimRequestField *field);
00482
00490 const char *gaim_request_field_get_label(const GaimRequestField *field);
00491
00499 gboolean gaim_request_field_is_visible(const GaimRequestField *field);
00500
00508 const char *gaim_request_field_get_type_hint(const GaimRequestField *field);
00509
00517 gboolean gaim_request_field_is_required(const GaimRequestField *field);
00518
00521
00523
00536 GaimRequestField *gaim_request_field_string_new(const char *id,
00537 const char *text,
00538 const char *default_value,
00539 gboolean multiline);
00540
00547 void gaim_request_field_string_set_default_value(GaimRequestField *field,
00548 const char *default_value);
00549
00556 void gaim_request_field_string_set_value(GaimRequestField *field,
00557 const char *value);
00558
00566 void gaim_request_field_string_set_masked(GaimRequestField *field,
00567 gboolean masked);
00568
00575 void gaim_request_field_string_set_editable(GaimRequestField *field,
00576 gboolean editable);
00577
00585 const char *gaim_request_field_string_get_default_value(
00586 const GaimRequestField *field);
00587
00595 const char *gaim_request_field_string_get_value(const GaimRequestField *field);
00596
00604 gboolean gaim_request_field_string_is_multiline(const GaimRequestField *field);
00605
00613 gboolean gaim_request_field_string_is_masked(const GaimRequestField *field);
00614
00622 gboolean gaim_request_field_string_is_editable(const GaimRequestField *field);
00623
00626
00628
00640 GaimRequestField *gaim_request_field_int_new(const char *id,
00641 const char *text,
00642 int default_value);
00643
00650 void gaim_request_field_int_set_default_value(GaimRequestField *field,
00651 int default_value);
00652
00659 void gaim_request_field_int_set_value(GaimRequestField *field, int value);
00660
00668 int gaim_request_field_int_get_default_value(const GaimRequestField *field);
00669
00677 int gaim_request_field_int_get_value(const GaimRequestField *field);
00678
00681
00683
00697 GaimRequestField *gaim_request_field_bool_new(const char *id,
00698 const char *text,
00699 gboolean default_value);
00700
00707 void gaim_request_field_bool_set_default_value(GaimRequestField *field,
00708 gboolean default_value);
00709
00716 void gaim_request_field_bool_set_value(GaimRequestField *field,
00717 gboolean value);
00718
00726 gboolean gaim_request_field_bool_get_default_value(
00727 const GaimRequestField *field);
00728
00736 gboolean gaim_request_field_bool_get_value(const GaimRequestField *field);
00737
00740
00742
00756 GaimRequestField *gaim_request_field_choice_new(const char *id,
00757 const char *text,
00758 int default_value);
00759
00766 void gaim_request_field_choice_add(GaimRequestField *field,
00767 const char *label);
00768
00775 void gaim_request_field_choice_set_default_value(GaimRequestField *field,
00776 int default_value);
00777
00784 void gaim_request_field_choice_set_value(GaimRequestField *field, int value);
00785
00793 int gaim_request_field_choice_get_default_value(const GaimRequestField *field);
00794
00802 int gaim_request_field_choice_get_value(const GaimRequestField *field);
00803
00811 GList *gaim_request_field_choice_get_labels(const GaimRequestField *field);
00812
00815
00817
00828 GaimRequestField *gaim_request_field_list_new(const char *id, const char *text);
00829
00837 void gaim_request_field_list_set_multi_select(GaimRequestField *field,
00838 gboolean multi_select);
00839
00847 gboolean gaim_request_field_list_get_multi_select(
00848 const GaimRequestField *field);
00849
00858 void *gaim_request_field_list_get_data(const GaimRequestField *field,
00859 const char *text);
00860
00868 void gaim_request_field_list_add(GaimRequestField *field,
00869 const char *item, void *data);
00870
00877 void gaim_request_field_list_add_selected(GaimRequestField *field,
00878 const char *item);
00879
00885 void gaim_request_field_list_clear_selected(GaimRequestField *field);
00886
00893 void gaim_request_field_list_set_selected(GaimRequestField *field,
00894 GList *items);
00895
00904 gboolean gaim_request_field_list_is_selected(const GaimRequestField *field,
00905 const char *item);
00906
00917 const GList *gaim_request_field_list_get_selected(
00918 const GaimRequestField *field);
00919
00927 const GList *gaim_request_field_list_get_items(const GaimRequestField *field);
00928
00931
00933
00944 GaimRequestField *gaim_request_field_label_new(const char *id,
00945 const char *text);
00946
00949
00951
00965 GaimRequestField *gaim_request_field_account_new(const char *id,
00966 const char *text,
00967 GaimAccount *account);
00968
00975 void gaim_request_field_account_set_default_value(GaimRequestField *field,
00976 GaimAccount *default_value);
00977
00984 void gaim_request_field_account_set_value(GaimRequestField *field,
00985 GaimAccount *value);
00986
00996 void gaim_request_field_account_set_show_all(GaimRequestField *field,
00997 gboolean show_all);
00998
01008 void gaim_request_field_account_set_filter(GaimRequestField *field,
01009 GaimFilterAccountFunc filter_func);
01010
01018 GaimAccount *gaim_request_field_account_get_default_value(
01019 const GaimRequestField *field);
01020
01028 GaimAccount *gaim_request_field_account_get_value(
01029 const GaimRequestField *field);
01030
01040 gboolean gaim_request_field_account_get_show_all(
01041 const GaimRequestField *field);
01042
01053 GaimFilterAccountFunc gaim_request_field_account_get_filter(
01054 const GaimRequestField *field);
01055
01058
01060
01084 void *gaim_request_input(void *handle, const char *title,
01085 const char *primary, const char *secondary,
01086 const char *default_value,
01087 gboolean multiline, gboolean masked, gchar *hint,
01088 const char *ok_text, GCallback ok_cb,
01089 const char *cancel_text, GCallback cancel_cb,
01090 void *user_data);
01091
01110 void *gaim_request_choice(void *handle, const char *title,
01111 const char *primary, const char *secondary,
01112 unsigned int default_value,
01113 const char *ok_text, GCallback ok_cb,
01114 const char *cancel_text, GCallback cancel_cb,
01115 void *user_data, size_t choice_count, ...);
01116
01135 void *gaim_request_choice_varg(void *handle, const char *title,
01136 const char *primary, const char *secondary,
01137 unsigned int default_value,
01138 const char *ok_text, GCallback ok_cb,
01139 const char *cancel_text, GCallback cancel_cb,
01140 void *user_data, size_t choice_count,
01141 va_list choices);
01142
01159 void *gaim_request_action(void *handle, const char *title,
01160 const char *primary, const char *secondary,
01161 unsigned int default_action,
01162 void *user_data, size_t action_count, ...);
01163
01180 void *gaim_request_action_varg(void *handle, const char *title,
01181 const char *primary, const char *secondary,
01182 unsigned int default_action,
01183 void *user_data, size_t action_count,
01184 va_list actions);
01185
01202 void *gaim_request_fields(void *handle, const char *title,
01203 const char *primary, const char *secondary,
01204 GaimRequestFields *fields,
01205 const char *ok_text, GCallback ok_cb,
01206 const char *cancel_text, GCallback cancel_cb,
01207 void *user_data);
01208
01215 void gaim_request_close(GaimRequestType type, void *uihandle);
01216
01222 void gaim_request_close_with_handle(void *handle);
01223
01227 #define gaim_request_yes_no(handle, title, primary, secondary, \
01228 default_action, user_data, yes_cb, no_cb) \
01229 gaim_request_action((handle), (title), (primary), (secondary), \
01230 (default_action), (user_data), 2, \
01231 _("Yes"), (yes_cb), _("No"), (no_cb))
01232
01236 #define gaim_request_ok_cancel(handle, title, primary, secondary, \
01237 default_action, user_data, ok_cb, cancel_cb) \
01238 gaim_request_action((handle), (title), (primary), (secondary), \
01239 (default_action), (user_data), 2, \
01240 _("OK"), (ok_cb), _("Cancel"), (cancel_cb))
01241
01245 #define gaim_request_accept_cancel(handle, title, primary, secondary, \
01246 default_action, user_data, accept_cb, \
01247 cancel_cb) \
01248 gaim_request_action((handle), (title), (primary), (secondary), \
01249 (default_action), (user_data), 2, \
01250 _("Accept"), (accept_cb), _("Cancel"), (cancel_cb))
01251
01254
01256
01265 void gaim_request_set_ui_ops(GaimRequestUiOps *ops);
01266
01273 GaimRequestUiOps *gaim_request_get_ui_ops(void);
01274
01277 #ifdef __cplusplus
01278 }
01279 #endif
01280
01281 #endif