1 #ifndef __MCABBER_HOOKS_H__ 2 #define __MCABBER_HOOKS_H__ 1 3 4 #include <time.h> 5 #include <loudmouth/loudmouth.h> 6 #include <mcabber/xmpp.h> 7 8 // These two defines are used by hk_message_{in,out} arguments 9 #define ENCRYPTED_PGP 1 10 #define ENCRYPTED_OTR 2 11 12 #include <mcabber/config.h> 13 #ifdef MODULES_ENABLE 14 #include <glib.h> 15 16 // Core hooks 17 #define HOOK_PRE_MESSAGE_IN "hook-pre-message-in" 18 #define HOOK_POST_MESSAGE_IN "hook-post-message-in" 19 #define HOOK_MESSAGE_OUT "hook-message-out" 20 #define HOOK_MDR_RECEIVED "hook-mdr-received" 21 #define HOOK_STATUS_CHANGE "hook-status-change" 22 #define HOOK_MY_STATUS_CHANGE "hook-my-status-change" 23 #define HOOK_POST_CONNECT "hook-post-connect" 24 #define HOOK_PRE_DISCONNECT "hook-pre-disconnect" 25 #define HOOK_UNREAD_LIST_CHANGE "hook-unread-list-change" 26 #define HOOK_SUBSCRIPTION "hook-subscription" 27 28 typedef enum { 29 HOOK_HANDLER_RESULT_ALLOW_MORE_HANDLERS = 0, 30 HOOK_HANDLER_RESULT_NO_MORE_HANDLER, 31 HOOK_HANDLER_RESULT_NO_MORE_HANDLER_DROP_DATA, 32 } hk_handler_result; 33 34 typedef struct { 35 const char *name; 36 const char *value; 37 } hk_arg_t; 38 39 typedef guint (*hk_handler_t) (const gchar *hookname, hk_arg_t *args, 40 gpointer userdata); 41 42 guint hk_add_handler(hk_handler_t handler, const gchar *hookname, 43 gint priority, gpointer userdata); 44 void hk_del_handler(const gchar *hookname, guint hid); 45 guint hk_run_handlers(const gchar *hookname, hk_arg_t *args); 46 #endif 47 48 void hk_message_in(const char *bjid, const char *resname, 49 time_t timestamp, const char *msg, LmMessageSubType type, 50 guint encrypted, gboolean carbon); 51 void hk_message_out(const char *bjid, const char *nickname, 52 time_t timestamp, const char *msg, 53 guint encrypted, gboolean carbon, gpointer xep184); 54 void hk_statuschange(const char *bjid, const char *resname, gchar prio, 55 time_t timestamp, enum imstatus status, 56 char const *status_msg); 57 void hk_mystatuschange(time_t timestamp, 58 enum imstatus old_status, enum imstatus new_status, 59 const char *msg); 60 61 void hk_postconnect(void); 62 void hk_predisconnect(void); 63 64 void hk_unread_list_change(guint unread_count, guint attention_count, 65 guint muc_unread, guint muc_attention); 66 67 guint hk_subscription(LmMessageSubType mstype, const gchar *bjid, 68 const gchar *msg); 69 70 void hk_ext_cmd_init(const char *command); 71 void hk_ext_cmd(const char *bjid, guchar type, guchar info, const char *data); 72 73 #endif /* __MCABBER_HOOKS_H__ */ 74 75 /* vim: set expandtab cindent cinoptions=>2\:2(0 sw=2 ts=2: For Vim users... */ 76