pidgin: 541b94db: jabber: Unify the JabberBuddyState funct...
darkrain42 at pidgin.im
darkrain42 at pidgin.im
Tue Feb 16 10:23:36 EST 2010
-----------------------------------------------------------------
Revision: 541b94db5d2e13039101b0d8be4aaefe65c4fb59
Ancestor: 1d831e835bac31debd4d67cc75397c378c00bc7e
Author: darkrain42 at pidgin.im
Date: 2010-02-15T05:31:34
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/541b94db5d2e13039101b0d8be4aaefe65c4fb59
Modified files:
libpurple/protocols/jabber/buddy.c
libpurple/protocols/jabber/buddy.h
ChangeLog:
jabber: Unify the JabberBuddyState functions (and briefly document them)
-------------- next part --------------
============================================================
--- libpurple/protocols/jabber/buddy.c 8c542107d95d7958f3bf99937f9ec7ff66cf8e22
+++ libpurple/protocols/jabber/buddy.c b78468f6c93c1b99b83cc9b102d77f51da1f3ae4
@@ -1908,76 +1908,55 @@ jabber_blist_node_menu(PurpleBlistNode *
}
}
+static const struct {
+ const char *status_id; /* link to core */
+ const char *show; /* The show child's cdata in a presence stanza */
+ const char *readable; /* readable representation */
+ JabberBuddyState state;
+} jabber_statuses[] = {
+ { "offline", NULL, N_("Offline"), JABBER_BUDDY_STATE_UNAVAILABLE },
+ { "available", NULL, N_("Available"), JABBER_BUDDY_STATE_ONLINE},
+ { "freeforchat", "chat", N_("Chatty"), JABBER_BUDDY_STATE_CHAT },
+ { "away", "away", N_("Away"), JABBER_BUDDY_STATE_AWAY },
+ { "extended_away", "xa", N_("Extended Away"), JABBER_BUDDY_STATE_XA },
+ { "dnd", "dnd", N_("Do Not Disturb"), JABBER_BUDDY_STATE_DND },
+ { "error", NULL, N_("Error"), JABBER_BUDDY_STATE_ERROR }
+};
const char *
-jabber_buddy_state_get_name(JabberBuddyState state)
+jabber_buddy_state_get_name(const JabberBuddyState state)
{
- switch(state) {
- case JABBER_BUDDY_STATE_UNKNOWN:
- return _("Unknown");
- case JABBER_BUDDY_STATE_ERROR:
- return _("Error");
- case JABBER_BUDDY_STATE_UNAVAILABLE:
- return _("Offline");
- case JABBER_BUDDY_STATE_ONLINE:
- return _("Available");
- case JABBER_BUDDY_STATE_CHAT:
- return _("Chatty");
- case JABBER_BUDDY_STATE_AWAY:
- return _("Away");
- case JABBER_BUDDY_STATE_XA:
- return _("Extended Away");
- case JABBER_BUDDY_STATE_DND:
- return _("Do Not Disturb");
- }
+ int i;
+ for (i = 0; i < G_N_ELEMENTS(jabber_statuses); ++i)
+ if (jabber_statuses[i].state == state)
+ return _(jabber_statuses[i].readable);
return _("Unknown");
}
-JabberBuddyState jabber_buddy_status_id_get_state(const char *id) {
- if(!id)
+JabberBuddyState
+jabber_buddy_status_id_get_state(const char *id)
+{
+ int i;
+ if (!id)
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;
+ for (i = 0; i < G_N_ELEMENTS(jabber_statuses); ++i)
+ if (g_str_equal(id, jabber_statuses[i].status_id))
+ return jabber_statuses[i].state;
+
return JABBER_BUDDY_STATE_UNKNOWN;
}
-const struct {
- const char *name;
- JabberBuddyState state;
-} show_state_pairs[] = {
- { "available", JABBER_BUDDY_STATE_ONLINE },
- { "chat", JABBER_BUDDY_STATE_CHAT },
- { "away", JABBER_BUDDY_STATE_AWAY },
- { "xa", JABBER_BUDDY_STATE_XA },
- { "dnd", JABBER_BUDDY_STATE_DND },
- { "offline", JABBER_BUDDY_STATE_UNAVAILABLE },
- { "error", JABBER_BUDDY_STATE_ERROR },
- { NULL, JABBER_BUDDY_STATE_UNKNOWN }
-};
-
JabberBuddyState jabber_buddy_show_get_state(const char *id)
{
int i;
g_return_val_if_fail(id != NULL, JABBER_BUDDY_STATE_UNKNOWN);
- for (i = 0; show_state_pairs[i].name; ++i)
- if (g_str_equal(id, show_state_pairs[i].name))
- return show_state_pairs[i].state;
+ for (i = 0; i < G_N_ELEMENTS(jabber_statuses); ++i)
+ if (g_str_equal(id, jabber_statuses[i].show))
+ return jabber_statuses[i].state;
purple_debug_warning("jabber", "Invalid value of presence <show/> "
"attribute: %s\n", id);
@@ -1988,34 +1967,21 @@ jabber_buddy_state_get_show(JabberBuddyS
jabber_buddy_state_get_show(JabberBuddyState state)
{
int i;
+ for (i = 0; i < G_N_ELEMENTS(jabber_statuses); ++i)
+ if (state == jabber_statuses[i].state)
+ return jabber_statuses[i].show;
- for (i = 0; show_state_pairs[i].name; ++i)
- if (state == show_state_pairs[i].state)
- return show_state_pairs[i].name;
-
-/* purple_debug_warning("jabber", "Unknown buddy state: %d\n", state); */
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:
- return "available";
- case JABBER_BUDDY_STATE_ERROR:
- return "error";
- case JABBER_BUDDY_STATE_UNAVAILABLE:
- return "offline";
- }
+const char *
+jabber_buddy_state_get_status_id(JabberBuddyState state)
+{
+ int i;
+ for (i = 0; i < G_N_ELEMENTS(jabber_statuses); ++i)
+ if (state == jabber_statuses[i].state)
+ return jabber_statuses[i].status_id;
+
return NULL;
}
============================================================
--- libpurple/protocols/jabber/buddy.h 509699775bb00c543db2320f5098bc63aa66d78d
+++ libpurple/protocols/jabber/buddy.h 80cdc15f3167fa1573fd2e5b1d233bd15655ec40
@@ -110,10 +110,15 @@ void jabber_set_buddy_icon(PurpleConnect
void jabber_setup_set_info(PurplePluginAction *action);
void jabber_set_buddy_icon(PurpleConnection *gc, PurpleStoredImage *img);
+/* state -> readable name */
const char *jabber_buddy_state_get_name(JabberBuddyState state);
+/* state -> core id */
const char *jabber_buddy_state_get_status_id(JabberBuddyState state);
+/* state -> show attr (for presence stanza) */
const char *jabber_buddy_state_get_show(JabberBuddyState state);
+/* core id -> state */
JabberBuddyState jabber_buddy_status_id_get_state(const char *id);
+/* show attr (presence stanza) -> state */
JabberBuddyState jabber_buddy_show_get_state(const char *id);
void jabber_user_search(JabberStream *js, const char *directory);
More information about the Commits
mailing list