Main Page | Modules | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

request.h

Go to the documentation of this file.
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 /* _GAIM_REQUEST_H_ */

Generated on Tue Aug 3 17:36:34 2004 for gaim by doxygen 1.3.4