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 
00034 #define GAIM_DEFAULT_ACTION_NONE    -1
00035 
00039 typedef enum
00040 {
00041     GAIM_REQUEST_INPUT = 0,  
00042     GAIM_REQUEST_CHOICE,     
00043     GAIM_REQUEST_ACTION,     
00044     GAIM_REQUEST_FIELDS,     
00045     GAIM_REQUEST_FILE        
00047 } GaimRequestType;
00048 
00052 typedef enum
00053 {
00054     GAIM_REQUEST_FIELD_NONE,
00055     GAIM_REQUEST_FIELD_STRING,
00056     GAIM_REQUEST_FIELD_INTEGER,
00057     GAIM_REQUEST_FIELD_BOOLEAN,
00058     GAIM_REQUEST_FIELD_CHOICE,
00059     GAIM_REQUEST_FIELD_LIST,
00060     GAIM_REQUEST_FIELD_LABEL,
00061     GAIM_REQUEST_FIELD_ACCOUNT
00062 
00063 } GaimRequestFieldType;
00064 
00068 typedef struct
00069 {
00070     GList *groups;
00071 
00072     GHashTable *fields;
00073 
00074     GList *required_fields;
00075 
00076     void *ui_data;
00077 
00078 } GaimRequestFields;
00079 
00083 typedef struct
00084 {
00085     GaimRequestFields *fields_list;
00086 
00087     char *title;
00088 
00089     GList *fields;
00090 
00091 } GaimRequestFieldGroup;
00092 
00096 typedef struct
00097 {
00098     GaimRequestFieldType type;
00099     GaimRequestFieldGroup *group;
00100 
00101     char *id;
00102     char *label;
00103     char *type_hint;
00104 
00105     gboolean visible;
00106     gboolean required;
00107 
00108     union
00109     {
00110         struct
00111         {
00112             gboolean multiline;
00113             gboolean masked;
00114             gboolean editable;
00115             char *default_value;
00116             char *value;
00117 
00118         } string;
00119 
00120         struct
00121         {
00122             int default_value;
00123             int value;
00124 
00125         } integer;
00126 
00127         struct
00128         {
00129             gboolean default_value;
00130             gboolean value;
00131 
00132         } boolean;
00133 
00134         struct
00135         {
00136             int default_value;
00137             int value;
00138 
00139             GList *labels;
00140 
00141         } choice;
00142 
00143         struct
00144         {
00145             GList *items;
00146             GHashTable *item_data;
00147             GList *selected;
00148             GHashTable *selected_table;
00149 
00150             gboolean multiple_selection;
00151 
00152         } list;
00153 
00154         struct
00155         {
00156             GaimAccount *default_account;
00157             GaimAccount *account;
00158             gboolean show_all;
00159 
00160             GaimFilterAccountFunc filter_func;
00161 
00162         } account;
00163 
00164     } u;
00165 
00166     void *ui_data;
00167 
00168 } GaimRequestField;
00169 
00173 typedef struct
00174 {
00175     void *(*request_input)(const char *title, const char *primary,
00176                            const char *secondary, const char *default_value,
00177                            gboolean multiline, gboolean masked, gchar *hint,
00178                            const char *ok_text, GCallback ok_cb,
00179                            const char *cancel_text, GCallback cancel_cb,
00180                            void *user_data);
00181     void *(*request_choice)(const char *title, const char *primary,
00182                             const char *secondary, unsigned int default_value,
00183                             const char *ok_text, GCallback ok_cb,
00184                             const char *cancel_text, GCallback cancel_cb,
00185                             void *user_data, size_t choice_count,
00186                             va_list choices);
00187     void *(*request_action)(const char *title, const char *primary,
00188                             const char *secondary, unsigned int default_action,
00189                             void *user_data, size_t action_count,
00190                             va_list actions);
00191     void *(*request_fields)(const char *title, const char *primary,
00192                             const char *secondary, GaimRequestFields *fields,
00193                             const char *ok_text, GCallback ok_cb,
00194                             const char *cancel_text, GCallback cancel_cb,
00195                             void *user_data);
00196     void *(*request_file)(const char *title, const char *filename,
00197                           gboolean savedialog, GCallback ok_cb,
00198                           GCallback cancel_cb, void *user_data);
00199     void (*close_request)(GaimRequestType type, void *ui_handle);
00200 } GaimRequestUiOps;
00201 
00202 typedef void (*GaimRequestInputCb)(void *, const char *);
00203 typedef void (*GaimRequestActionCb)(void *, int);
00204 typedef void (*GaimRequestFieldsCb)(void *, GaimRequestFields *fields);
00205 typedef void (*GaimRequestFileCb)(void *, const char *filename);
00206 
00207 #ifdef __cplusplus
00208 extern "C" {
00209 #endif
00210 
00211 /**************************************************************************/
00213 /**************************************************************************/
00221 GaimRequestFields *gaim_request_fields_new(void);
00222 
00228 void gaim_request_fields_destroy(GaimRequestFields *fields);
00229 
00236 void gaim_request_fields_add_group(GaimRequestFields *fields,
00237                                    GaimRequestFieldGroup *group);
00238 
00246 GList *gaim_request_fields_get_groups(const GaimRequestFields *fields);
00247 
00256 gboolean gaim_request_fields_exists(const GaimRequestFields *fields,
00257                                     const char *id);
00258 
00266 const GList *gaim_request_fields_get_required(const GaimRequestFields *fields);
00267 
00276 gboolean gaim_request_fields_is_field_required(const GaimRequestFields *fields,
00277                                                const char *id);
00278 
00286 gboolean gaim_request_fields_all_required_filled(
00287     const GaimRequestFields *fields);
00288 
00297 GaimRequestField *gaim_request_fields_get_field(
00298         const GaimRequestFields *fields, const char *id);
00299 
00308 const char *gaim_request_fields_get_string(const GaimRequestFields *fields,
00309                                            const char *id);
00310 
00319 int gaim_request_fields_get_integer(const GaimRequestFields *fields,
00320                                     const char *id);
00321 
00330 gboolean gaim_request_fields_get_bool(const GaimRequestFields *fields,
00331                                       const char *id);
00332 
00341 int gaim_request_fields_get_choice(const GaimRequestFields *fields,
00342                                    const char *id);
00343 
00352 GaimAccount *gaim_request_fields_get_account(const GaimRequestFields *fields,
00353                                              const char *id);
00354 
00357 /**************************************************************************/
00359 /**************************************************************************/
00369 GaimRequestFieldGroup *gaim_request_field_group_new(const char *title);
00370 
00376 void gaim_request_field_group_destroy(GaimRequestFieldGroup *group);
00377 
00384 void gaim_request_field_group_add_field(GaimRequestFieldGroup *group,
00385                                         GaimRequestField *field);
00386 
00394 const char *gaim_request_field_group_get_title(
00395         const GaimRequestFieldGroup *group);
00396 
00404 GList *gaim_request_field_group_get_fields(
00405         const GaimRequestFieldGroup *group);
00406 
00409 /**************************************************************************/
00411 /**************************************************************************/
00423 GaimRequestField *gaim_request_field_new(const char *id, const char *text,
00424                                          GaimRequestFieldType type);
00425 
00431 void gaim_request_field_destroy(GaimRequestField *field);
00432 
00439 void gaim_request_field_set_label(GaimRequestField *field, const char *label);
00440 
00447 void gaim_request_field_set_visible(GaimRequestField *field, gboolean visible);
00448 
00458 void gaim_request_field_set_type_hint(GaimRequestField *field,
00459                                       const char *type_hint);
00460 
00467 void gaim_request_field_set_required(GaimRequestField *field,
00468                                      gboolean required);
00469 
00477 GaimRequestFieldType gaim_request_field_get_type(const GaimRequestField *field);
00478 
00486 const char *gaim_request_field_get_id(const GaimRequestField *field);
00487 
00495 const char *gaim_request_field_get_label(const GaimRequestField *field);
00496 
00504 gboolean gaim_request_field_is_visible(const GaimRequestField *field);
00505 
00513 const char *gaim_request_field_get_type_hint(const GaimRequestField *field);
00514 
00522 gboolean gaim_request_field_is_required(const GaimRequestField *field);
00523 
00526 /**************************************************************************/
00528 /**************************************************************************/
00541 GaimRequestField *gaim_request_field_string_new(const char *id,
00542                                                 const char *text,
00543                                                 const char *default_value,
00544                                                 gboolean multiline);
00545 
00552 void gaim_request_field_string_set_default_value(GaimRequestField *field,
00553                                                  const char *default_value);
00554 
00561 void gaim_request_field_string_set_value(GaimRequestField *field,
00562                                          const char *value);
00563 
00571 void gaim_request_field_string_set_masked(GaimRequestField *field,
00572                                           gboolean masked);
00573 
00580 void gaim_request_field_string_set_editable(GaimRequestField *field,
00581                                             gboolean editable);
00582 
00590 const char *gaim_request_field_string_get_default_value(
00591         const GaimRequestField *field);
00592 
00600 const char *gaim_request_field_string_get_value(const GaimRequestField *field);
00601 
00609 gboolean gaim_request_field_string_is_multiline(const GaimRequestField *field);
00610 
00618 gboolean gaim_request_field_string_is_masked(const GaimRequestField *field);
00619 
00627 gboolean gaim_request_field_string_is_editable(const GaimRequestField *field);
00628 
00631 /**************************************************************************/
00633 /**************************************************************************/
00645 GaimRequestField *gaim_request_field_int_new(const char *id,
00646                                              const char *text,
00647                                              int default_value);
00648 
00655 void gaim_request_field_int_set_default_value(GaimRequestField *field,
00656                                               int default_value);
00657 
00664 void gaim_request_field_int_set_value(GaimRequestField *field, int value);
00665 
00673 int gaim_request_field_int_get_default_value(const GaimRequestField *field);
00674 
00682 int gaim_request_field_int_get_value(const GaimRequestField *field);
00683 
00686 /**************************************************************************/
00688 /**************************************************************************/
00702 GaimRequestField *gaim_request_field_bool_new(const char *id,
00703                                               const char *text,
00704                                               gboolean default_value);
00705 
00712 void gaim_request_field_bool_set_default_value(GaimRequestField *field,
00713                                                gboolean default_value);
00714 
00721 void gaim_request_field_bool_set_value(GaimRequestField *field,
00722                                        gboolean value);
00723 
00731 gboolean gaim_request_field_bool_get_default_value(
00732         const GaimRequestField *field);
00733 
00741 gboolean gaim_request_field_bool_get_value(const GaimRequestField *field);
00742 
00745 /**************************************************************************/
00747 /**************************************************************************/
00761 GaimRequestField *gaim_request_field_choice_new(const char *id,
00762                                                 const char *text,
00763                                                 int default_value);
00764 
00771 void gaim_request_field_choice_add(GaimRequestField *field,
00772                                    const char *label);
00773 
00780 void gaim_request_field_choice_set_default_value(GaimRequestField *field,
00781                                                  int default_value);
00782 
00789 void gaim_request_field_choice_set_value(GaimRequestField *field, int value);
00790 
00798 int gaim_request_field_choice_get_default_value(const GaimRequestField *field);
00799 
00807 int gaim_request_field_choice_get_value(const GaimRequestField *field);
00808 
00816 GList *gaim_request_field_choice_get_labels(const GaimRequestField *field);
00817 
00820 /**************************************************************************/
00822 /**************************************************************************/
00833 GaimRequestField *gaim_request_field_list_new(const char *id, const char *text);
00834 
00842 void gaim_request_field_list_set_multi_select(GaimRequestField *field,
00843                                               gboolean multi_select);
00844 
00852 gboolean gaim_request_field_list_get_multi_select(
00853     const GaimRequestField *field);
00854 
00863 void *gaim_request_field_list_get_data(const GaimRequestField *field,
00864                                        const char *text);
00865 
00873 void gaim_request_field_list_add(GaimRequestField *field,
00874                                  const char *item, void *data);
00875 
00882 void gaim_request_field_list_add_selected(GaimRequestField *field,
00883                                           const char *item);
00884 
00890 void gaim_request_field_list_clear_selected(GaimRequestField *field);
00891 
00898 void gaim_request_field_list_set_selected(GaimRequestField *field,
00899                                           GList *items);
00900 
00909 gboolean gaim_request_field_list_is_selected(const GaimRequestField *field,
00910                                              const char *item);
00911 
00922 const GList *gaim_request_field_list_get_selected(
00923     const GaimRequestField *field);
00924 
00932 const GList *gaim_request_field_list_get_items(const GaimRequestField *field);
00933 
00936 /**************************************************************************/
00938 /**************************************************************************/
00949 GaimRequestField *gaim_request_field_label_new(const char *id,
00950                                                const char *text);
00951 
00954 /**************************************************************************/
00956 /**************************************************************************/
00970 GaimRequestField *gaim_request_field_account_new(const char *id,
00971                                                  const char *text,
00972                                                  GaimAccount *account);
00973 
00980 void gaim_request_field_account_set_default_value(GaimRequestField *field,
00981                                                   GaimAccount *default_value);
00982 
00989 void gaim_request_field_account_set_value(GaimRequestField *field,
00990                                           GaimAccount *value);
00991 
01001 void gaim_request_field_account_set_show_all(GaimRequestField *field,
01002                                              gboolean show_all);
01003 
01013 void gaim_request_field_account_set_filter(GaimRequestField *field,
01014                                            GaimFilterAccountFunc filter_func);
01015 
01023 GaimAccount *gaim_request_field_account_get_default_value(
01024         const GaimRequestField *field);
01025 
01033 GaimAccount *gaim_request_field_account_get_value(
01034         const GaimRequestField *field);
01035 
01045 gboolean gaim_request_field_account_get_show_all(
01046         const GaimRequestField *field);
01047 
01058 GaimFilterAccountFunc gaim_request_field_account_get_filter(
01059         const GaimRequestField *field);
01060 
01063 /**************************************************************************/
01065 /**************************************************************************/
01089 void *gaim_request_input(void *handle, const char *title,
01090                          const char *primary, const char *secondary,
01091                          const char *default_value,
01092                          gboolean multiline, gboolean masked, gchar *hint,
01093                          const char *ok_text, GCallback ok_cb,
01094                          const char *cancel_text, GCallback cancel_cb,
01095                          void *user_data);
01096 
01115 void *gaim_request_choice(void *handle, const char *title,
01116                           const char *primary, const char *secondary,
01117                           unsigned int default_value,
01118                           const char *ok_text, GCallback ok_cb,
01119                           const char *cancel_text, GCallback cancel_cb,
01120                           void *user_data, size_t choice_count, ...);
01121 
01140 void *gaim_request_choice_varg(void *handle, const char *title,
01141                                const char *primary, const char *secondary,
01142                                unsigned int default_value,
01143                                const char *ok_text, GCallback ok_cb,
01144                                const char *cancel_text, GCallback cancel_cb,
01145                                void *user_data, size_t choice_count,
01146                                va_list choices);
01147 
01164 void *gaim_request_action(void *handle, const char *title,
01165                           const char *primary, const char *secondary,
01166                           unsigned int default_action,
01167                           void *user_data, size_t action_count, ...);
01168 
01185 void *gaim_request_action_varg(void *handle, const char *title,
01186                                const char *primary, const char *secondary,
01187                                unsigned int default_action,
01188                                void *user_data, size_t action_count,
01189                                va_list actions);
01190 
01207 void *gaim_request_fields(void *handle, const char *title,
01208                           const char *primary, const char *secondary,
01209                           GaimRequestFields *fields,
01210                           const char *ok_text, GCallback ok_cb,
01211                           const char *cancel_text, GCallback cancel_cb,
01212                           void *user_data);
01213 
01220 void gaim_request_close(GaimRequestType type, void *uihandle);
01221 
01227 void gaim_request_close_with_handle(void *handle);
01228 
01232 #define gaim_request_yes_no(handle, title, primary, secondary, \
01233                             default_action, user_data, yes_cb, no_cb) \
01234     gaim_request_action((handle), (title), (primary), (secondary), \
01235                         (default_action), (user_data), 2, \
01236                         _("Yes"), (yes_cb), _("No"), (no_cb))
01237 
01241 #define gaim_request_ok_cancel(handle, title, primary, secondary, \
01242                             default_action, user_data, ok_cb, cancel_cb) \
01243     gaim_request_action((handle), (title), (primary), (secondary), \
01244                         (default_action), (user_data), 2, \
01245                         _("OK"), (ok_cb), _("Cancel"), (cancel_cb))
01246 
01250 #define gaim_request_accept_cancel(handle, title, primary, secondary, \
01251                                    default_action, user_data, accept_cb, \
01252                                    cancel_cb) \
01253     gaim_request_action((handle), (title), (primary), (secondary), \
01254                         (default_action), (user_data), 2, \
01255                         _("Accept"), (accept_cb), _("Cancel"), (cancel_cb))
01256 
01272 void *gaim_request_file(void *handle, const char *title, const char *filename,
01273                         gboolean savedialog,
01274                         GCallback ok_cb, GCallback cancel_cb,
01275                         void *user_data);
01276 
01279 /**************************************************************************/
01281 /**************************************************************************/
01290 void gaim_request_set_ui_ops(GaimRequestUiOps *ops);
01291 
01298 GaimRequestUiOps *gaim_request_get_ui_ops(void);
01299 
01302 #ifdef __cplusplus
01303 }
01304 #endif
01305 
01306 #endif /* _GAIM_REQUEST_H_ */

Generated on Sun Feb 18 07:36:17 2007 for gaim by  doxygen 1.5.1