Mercurial > pidgin
changeset 12683:41cf9be29754
[gaim-migrate @ 15026]
fix xa and chatty states for jabber
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Sun, 01 Jan 2006 16:25:17 +0000 |
parents | d495909dcdc9 |
children | 2e4e02b72e43 |
files | src/protocols/jabber/buddy.c src/protocols/jabber/buddy.h src/protocols/jabber/presence.c |
diffstat | 3 files changed, 47 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/protocols/jabber/buddy.c Fri Dec 30 19:33:48 2005 +0000 +++ b/src/protocols/jabber/buddy.c Sun Jan 01 16:25:17 2006 +0000 @@ -1102,6 +1102,27 @@ return JABBER_BUDDY_STATE_UNKNOWN; if(!strcmp(id, "available")) return JABBER_BUDDY_STATE_ONLINE; + if(!strcmp(id, "freeforchat")) + return JABBER_BUDDY_STATE_CHAT; + if(!strcmp(id, "away")) + return JABBER_BUDDY_STATE_AWAY; + if(!strcmp(id, "extended_away")) + return JABBER_BUDDY_STATE_XA; + if(!strcmp(id, "dnd")) + return JABBER_BUDDY_STATE_DND; + if(!strcmp(id, "offline")) + return JABBER_BUDDY_STATE_UNAVAILABLE; + if(!strcmp(id, "error")) + return JABBER_BUDDY_STATE_ERROR; + + return JABBER_BUDDY_STATE_UNKNOWN; +} + +JabberBuddyState jabber_buddy_show_get_state(const char *id) { + if(!id) + return JABBER_BUDDY_STATE_UNKNOWN; + if(!strcmp(id, "available")) + return JABBER_BUDDY_STATE_ONLINE; if(!strcmp(id, "chat")) return JABBER_BUDDY_STATE_CHAT; if(!strcmp(id, "away")) @@ -1118,7 +1139,7 @@ return JABBER_BUDDY_STATE_UNKNOWN; } -const char *jabber_buddy_state_get_status_id(JabberBuddyState state) { +const char *jabber_buddy_state_get_show(JabberBuddyState state) { switch(state) { case JABBER_BUDDY_STATE_CHAT: return "chat"; @@ -1139,6 +1160,27 @@ return NULL; } +const char *jabber_buddy_state_get_status_id(JabberBuddyState state) { + switch(state) { + case JABBER_BUDDY_STATE_CHAT: + return "freeforchat"; + case JABBER_BUDDY_STATE_AWAY: + return "away"; + case JABBER_BUDDY_STATE_XA: + return "extended_away"; + case JABBER_BUDDY_STATE_DND: + return "dnd"; + case JABBER_BUDDY_STATE_ONLINE: + return "available"; + case JABBER_BUDDY_STATE_UNKNOWN: + case JABBER_BUDDY_STATE_ERROR: + return NULL; + case JABBER_BUDDY_STATE_UNAVAILABLE: + return "offline"; + } + return NULL; +} + static void user_search_result_add_buddy_cb(GaimConnection *gc, GList *row) { /* XXX find out the jid */
--- a/src/protocols/jabber/buddy.h Fri Dec 30 19:33:48 2005 +0000 +++ b/src/protocols/jabber/buddy.h Sun Jan 01 16:25:17 2006 +0000 @@ -85,7 +85,9 @@ const char *jabber_buddy_state_get_name(JabberBuddyState state); const char *jabber_buddy_state_get_status_id(JabberBuddyState state); +const char *jabber_buddy_state_get_show(JabberBuddyState state); JabberBuddyState jabber_buddy_status_id_get_state(const char *id); +JabberBuddyState jabber_buddy_show_get_state(const char *id); void jabber_user_search_begin(GaimPluginAction *);
--- a/src/protocols/jabber/presence.c Fri Dec 30 19:33:48 2005 +0000 +++ b/src/protocols/jabber/presence.c Sun Jan 01 16:25:17 2006 +0000 @@ -148,7 +148,7 @@ else if(state != JABBER_BUDDY_STATE_ONLINE && state != JABBER_BUDDY_STATE_UNKNOWN && state != JABBER_BUDDY_STATE_ERROR) - show_string = jabber_buddy_state_get_status_id(state); + show_string = jabber_buddy_state_get_show(state); if(show_string) { show = xmlnode_new_child(presence, "show"); @@ -337,7 +337,7 @@ } else { if((y = xmlnode_get_child(packet, "show"))) { char *show = xmlnode_get_data(y); - state = jabber_buddy_status_id_get_state(show); + state = jabber_buddy_show_get_state(show); g_free(show); } else { state = JABBER_BUDDY_STATE_ONLINE;