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