Mercurial > pidgin.yaz
diff libpurple/protocols/jabber/presence.h @ 29960:13f320cde14f
jabber: Heavily refactor jabber_presence_parse(). It's still not short enough.
This also fixes building (jabber_presence_uninit() snuck in to my
previous changes). Anyway, this has been lightly tested, but should
be a lot cleaner going forward, hopefully.
author | Paul Aurich <paul@darkrain42.org> |
---|---|
date | Tue, 09 Mar 2010 22:44:59 +0000 |
parents | c585572e80dd |
children | 348a933fed78 |
line wrap: on
line diff
--- a/libpurple/protocols/jabber/presence.h Tue Mar 09 20:53:11 2010 +0000 +++ b/libpurple/protocols/jabber/presence.h Tue Mar 09 22:44:59 2010 +0000 @@ -24,10 +24,63 @@ #ifndef PURPLE_JABBER_PRESENCE_H_ #define PURPLE_JABBER_PRESENCE_H_ +typedef enum { + JABBER_PRESENCE_ERROR = -2, + JABBER_PRESENCE_PROBE = -1, + JABBER_PRESENCE_AVAILABLE, + JABBER_PRESENCE_UNAVAILABLE, + JABBER_PRESENCE_SUBSCRIBE, + JABBER_PRESENCE_SUBSCRIBED, + JABBER_PRESENCE_UNSUBSCRIBE, + JABBER_PRESENCE_UNSUBSCRIBED +} JabberPresenceType; + +typedef struct _JabberPresenceChatInfo JabberPresenceChatInfo; +typedef struct _JabberPresence JabberPresence; + #include "buddy.h" +#include "chat.h" #include "jabber.h" +#include "jutil.h" #include "xmlnode.h" +struct _JabberPresenceChatInfo { + GSList *codes; + xmlnode *item; +}; + +struct _JabberPresence { + JabberPresenceType type; + JabberID *jid_from; + const char *from; + const char *to; + const char *id; + + JabberBuddy *jb; + JabberChat *chat; + JabberPresenceChatInfo chat_info; + xmlnode *caps; /* TODO: Temporary, see presence.c:parse_caps */ + + JabberBuddyState state; + gchar *status; + int priority; + + char *vcard_avatar_hash; + char *nickname; + + gboolean delayed; + time_t sent; + int idle; +}; + +typedef void (JabberPresenceHandler)(JabberStream *js, JabberPresence *presence, + xmlnode *child); +void jabber_presence_register_handler(const char *node, const char *xmlns, + JabberPresenceHandler *handler); + +void jabber_presence_init(void); +void jabber_presence_uninit(void); + void jabber_set_status(PurpleAccount *account, PurpleStatus *status); /**