Mercurial > hg
diff mcabber/src/roster.c @ 221:73f6ce668ba8
[/trunk] Changeset 233 by mikael
* /info now displays the current status message
author | mikael |
---|---|
date | Sat, 04 Jun 2005 12:47:13 +0000 |
parents | 9484ba81ec53 |
children | d5ae42cbe1fa |
line wrap: on
line diff
--- a/mcabber/src/roster.c Sat Jun 04 11:44:55 2005 +0000 +++ b/mcabber/src/roster.c Sat Jun 04 12:47:13 2005 +0000 @@ -29,6 +29,7 @@ typedef struct { const gchar *name; const gchar *jid; + const gchar *status_msg; guint type; enum imstatus status; guint flags; @@ -176,10 +177,9 @@ return; // Let's free memory (jid, name) roster_usr = (roster*)sl_user->data; - if (roster_usr->jid) - g_free((gchar*)roster_usr->jid); - if (roster_usr->name) - g_free((gchar*)roster_usr->name); + if (roster_usr->jid) g_free((gchar*)roster_usr->jid); + if (roster_usr->name) g_free((gchar*)roster_usr->name); + if (roster_usr->status_msg) g_free((gchar*)roster_usr->status_msg); g_free(roster_usr); // That's a little complex, we need to dereference twice @@ -208,10 +208,9 @@ while (sl_usr) { roster *roster_usr = (roster*)sl_usr->data; // Free name and jid - if (roster_usr->jid) - g_free((gchar*)roster_usr->jid); - if (roster_usr->name) - g_free((gchar*)roster_usr->name); + if (roster_usr->jid) g_free((gchar*)roster_usr->jid); + if (roster_usr->name) g_free((gchar*)roster_usr->name); + if (roster_usr->status_msg) g_free((gchar*)roster_usr->status_msg); g_free(roster_usr); sl_usr = g_slist_next(sl_usr); } @@ -219,10 +218,8 @@ if (roster_grp->list) g_slist_free(roster_grp->list); // Free group's name and jid - if (roster_grp->jid) - g_free((gchar*)roster_grp->jid); - if (roster_grp->name) - g_free((gchar*)roster_grp->name); + if (roster_grp->jid) g_free((gchar*)roster_grp->jid); + if (roster_grp->name) g_free((gchar*)roster_grp->name); g_free(roster_grp); sl_grp = g_slist_next(sl_grp); } @@ -236,7 +233,8 @@ } } -void roster_setstatus(const char *jid, enum imstatus bstat) +void roster_setstatus(const char *jid, enum imstatus bstat, + const char *status_msg) { GSList *sl_user; roster *roster_usr; @@ -248,6 +246,12 @@ roster_usr = (roster*)sl_user->data; roster_usr->status = bstat; + if (roster_usr->status_msg) { + g_free((gchar*)roster_usr->status_msg); + roster_usr->status_msg = NULL; + } + if (status_msg) + roster_usr->status_msg = g_strdup(status_msg); } // roster_setflags() @@ -506,8 +510,9 @@ roster_clone->flags = roster_usr->flags; // Free old buddy - if (roster_usr->jid) g_free((gchar*)roster_usr->jid); - if (roster_usr->name) g_free((gchar*)roster_usr->name); + if (roster_usr->jid) g_free((gchar*)roster_usr->jid); + if (roster_usr->name) g_free((gchar*)roster_usr->name); + if (roster_usr->status_msg) g_free((gchar*)roster_usr->status_msg); g_free(roster_usr); // If new new group is folded, the curren_buddy will be lost, and the @@ -589,6 +594,12 @@ return roster_usr->status; } +const char *buddy_getstatusmsg(gpointer rosterdata) +{ + roster *roster_usr = rosterdata; + return roster_usr->status_msg; +} + // buddy_setflags() // Set one or several flags to value (TRUE/FALSE) void buddy_setflags(gpointer rosterdata, guint flags, guint value)