00001
00025 #ifndef _PURPLE_POUNCE_H_
00026 #define _PURPLE_POUNCE_H_
00027
00028 typedef struct _PurplePounce PurplePounce;
00029
00030 #include <glib.h>
00031 #include "account.h"
00032
00036 typedef enum
00037 {
00038 PURPLE_POUNCE_NONE = 0x000,
00039 PURPLE_POUNCE_SIGNON = 0x001,
00040 PURPLE_POUNCE_SIGNOFF = 0x002,
00041 PURPLE_POUNCE_AWAY = 0x004,
00042 PURPLE_POUNCE_AWAY_RETURN = 0x008,
00043 PURPLE_POUNCE_IDLE = 0x010,
00044 PURPLE_POUNCE_IDLE_RETURN = 0x020,
00045 PURPLE_POUNCE_TYPING = 0x040,
00046 PURPLE_POUNCE_TYPED = 0x080,
00047 PURPLE_POUNCE_TYPING_STOPPED = 0x100,
00048 PURPLE_POUNCE_MESSAGE_RECEIVED = 0x200
00050 } PurplePounceEvent;
00051
00052 typedef enum
00053 {
00054 PURPLE_POUNCE_OPTION_NONE = 0x00,
00055 PURPLE_POUNCE_OPTION_AWAY = 0x01
00056 } PurplePounceOption;
00057
00059 typedef void (*PurplePounceCb)(PurplePounce *, PurplePounceEvent, void *);
00060
00069 struct _PurplePounce
00070 {
00071 char *ui_type;
00073 PurplePounceEvent events;
00074 PurplePounceOption options;
00075 PurpleAccount *pouncer;
00077 char *pouncee;
00079 GHashTable *actions;
00081 gboolean save;
00083 void *data;
00084 };
00085
00086 #ifdef __cplusplus
00087 extern "C" {
00088 #endif
00089
00090
00092
00106 PurplePounce *purple_pounce_new(const char *ui_type, PurpleAccount *pouncer,
00107 const char *pouncee, PurplePounceEvent event,
00108 PurplePounceOption option);
00109
00115 void purple_pounce_destroy(PurplePounce *pounce);
00116
00122 void purple_pounce_destroy_all_by_account(PurpleAccount *account);
00123
00130 void purple_pounce_set_events(PurplePounce *pounce, PurplePounceEvent events);
00131
00138 void purple_pounce_set_options(PurplePounce *pounce, PurplePounceOption options);
00139
00146 void purple_pounce_set_pouncer(PurplePounce *pounce, PurpleAccount *pouncer);
00147
00154 void purple_pounce_set_pouncee(PurplePounce *pounce, const char *pouncee);
00155
00162 void purple_pounce_set_save(PurplePounce *pounce, gboolean save);
00163
00170 void purple_pounce_action_register(PurplePounce *pounce, const char *name);
00171
00179 void purple_pounce_action_set_enabled(PurplePounce *pounce, const char *action,
00180 gboolean enabled);
00181
00192 void purple_pounce_action_set_attribute(PurplePounce *pounce, const char *action,
00193 const char *attr, const char *value);
00194
00201 void purple_pounce_set_data(PurplePounce *pounce, void *data);
00202
00210 PurplePounceEvent purple_pounce_get_events(const PurplePounce *pounce);
00211
00219 PurplePounceOption purple_pounce_get_options(const PurplePounce *pounce);
00220
00228 PurpleAccount *purple_pounce_get_pouncer(const PurplePounce *pounce);
00229
00237 const char *purple_pounce_get_pouncee(const PurplePounce *pounce);
00238
00247 gboolean purple_pounce_get_save(const PurplePounce *pounce);
00248
00257 gboolean purple_pounce_action_is_enabled(const PurplePounce *pounce,
00258 const char *action);
00259
00269 const char *purple_pounce_action_get_attribute(const PurplePounce *pounce,
00270 const char *action,
00271 const char *attr);
00272
00280 void *purple_pounce_get_data(const PurplePounce *pounce);
00281
00289 void purple_pounce_execute(const PurpleAccount *pouncer, const char *pouncee,
00290 PurplePounceEvent events);
00291
00294
00296
00308 PurplePounce *purple_find_pounce(const PurpleAccount *pouncer,
00309 const char *pouncee, PurplePounceEvent events);
00310
00311
00317 gboolean purple_pounces_load(void);
00318
00327 void purple_pounces_register_handler(const char *ui, PurplePounceCb cb,
00328 void (*new_pounce)(PurplePounce *pounce),
00329 void (*free_pounce)(PurplePounce *pounce));
00330
00336 void purple_pounces_unregister_handler(const char *ui);
00337
00343 GList *purple_pounces_get_all(void);
00344
00350 void *purple_pounces_get_handle(void);
00351
00355 void purple_pounces_init(void);
00356
00360 void purple_pounces_uninit(void);
00361
00364 #ifdef __cplusplus
00365 }
00366 #endif
00367
00368 #endif