diff mcabber/mcabber/events.h @ 1685:1342df44c814

Improved events interface * User can pass additional arguments to event handler * MUC invitation reject now can be supplied a reason
author Myhailo Danylenko <isbear@ukrpost.net>
date Tue, 02 Feb 2010 22:44:18 +0100
parents 41c26b7d2890
children e6d355e50d7a
line wrap: on
line diff
--- a/mcabber/mcabber/events.h	Tue Jan 19 19:16:38 2010 +0200
+++ b/mcabber/mcabber/events.h	Tue Feb 02 22:44:18 2010 +0100
@@ -8,40 +8,18 @@
 
 #define EVS_CONTEXT_TIMEOUT 0U
 #define EVS_CONTEXT_CANCEL  1U
-#define EVS_CONTEXT_USER    2U
+#define EVS_CONTEXT_ACCEPT  2U
+#define EVS_CONTEXT_REJECT  3U
+/* There can be other user-defined contexts */
 
-typedef enum {
-  EVS_TYPE_SUBSCRIPTION = 1,
-  EVS_TYPE_INVITATION = 2,
-#ifdef MODULES_ENABLE
-  EVS_TYPE_USER = 3,
-#endif
-} evs_type;
+typedef gboolean (*evs_callback_t)(guint context, const char *arg, gpointer userdata);
 
-/* Common structure for events (evs) and IQ requests (iqs) */
-typedef struct {
-  char *id;
-  time_t ts_create;
-  time_t ts_expire;
-  guint8 type;
-  gpointer data;
-  int (*callback)();
-  char *desc;
-} eviqs;
-
-typedef struct {
-  char* to;
-  char* from;
-  char* passwd;
-  char* reason;
-} event_muc_invitation;
-
-eviqs   *evs_new(guint8 type, time_t timeout);
-int      evs_del(const char *evid);
-int      evs_callback(const char *evid, guint evcontext);
-gboolean evs_check_timeout();
-void     evs_display_list(void);
-GSList  *evs_geteventslist(int forcompl);
+const char *evs_new(const char *description, const char *id, time_t timeout, evs_callback_t callback, gpointer userdata, GDestroyNotify notify);
+int         evs_del(const char *evid);
+int         evs_callback(const char *evid, guint evcontext, const char *arg);
+void        evs_display_list(void);
+GSList     *evs_geteventslist(void);
+void        evs_deinit(void);
 
 #endif /* __MCABBER_EVENTS_H__ */