# HG changeset patch # User Mikael Berthe # Date 1133123215 -3600 # Node ID 265c50238a48666a7c7875f3841d558447e01c37 # Parent 1df26ff0ed8cfac558a9fab1d50804a90c3bc861 Add buddy_{get,set}topic() diff -r 1df26ff0ed8c -r 265c50238a48 mcabber/src/roster.c --- a/mcabber/src/roster.c Sun Nov 27 00:19:07 2005 +0100 +++ b/mcabber/src/roster.c Sun Nov 27 21:26:55 2005 +0100 @@ -45,6 +45,7 @@ enum subscr subscription; GSList *resource; gchar *nickname; // For groupchats + gchar *topic; // For groupchats guint flags; // list: user -> points to his group; group -> points to its users list GSList *list; @@ -307,6 +308,7 @@ if (roster_usr->jid) g_free((gchar*)roster_usr->jid); if (roster_usr->name) g_free((gchar*)roster_usr->name); if (roster_usr->nickname) g_free((gchar*)roster_usr->nickname); + if (roster_usr->topic) g_free((gchar*)roster_usr->topic); free_all_resources(&roster_usr->resource); g_free(roster_usr); @@ -345,6 +347,7 @@ if (roster_usr->jid) g_free((gchar*)roster_usr->jid); if (roster_usr->name) g_free((gchar*)roster_usr->name); if (roster_usr->nickname) g_free((gchar*)roster_usr->nickname); + if (roster_usr->topic) g_free((gchar*)roster_usr->topic); free_all_resources(&roster_usr->resource); g_free(roster_usr); sl_usr = g_slist_next(sl_usr); @@ -717,11 +720,14 @@ roster_usr->resource = NULL; roster_clone->nickname = roster_usr->nickname; roster_usr->nickname = NULL; + roster_clone->topic = roster_usr->topic; + roster_usr->topic = NULL; // 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->nickname) g_free((gchar*)roster_usr->nickname); + if (roster_usr->topic) g_free((gchar*)roster_usr->topic); free_all_resources(&roster_usr->resource); g_free(roster_usr); @@ -770,6 +776,8 @@ return roster_usr->name; } +// buddy_setnickname(buddy, newnickname) +// Only for chatrooms void buddy_setnickname(gpointer rosterdata, const char *newname) { roster *roster_usr = rosterdata; @@ -790,6 +798,28 @@ return roster_usr->nickname; } +// buddy_settopic(buddy, newtopic) +// Only for chatrooms +void buddy_settopic(gpointer rosterdata, const char *newtopic) +{ + roster *roster_usr = rosterdata; + + if (!(roster_usr->type & ROSTER_TYPE_ROOM)) return; + + if (roster_usr->topic) { + g_free((gchar*)roster_usr->topic); + roster_usr->topic = NULL; + } + if (newtopic) + roster_usr->topic = g_strdup(newtopic); +} + +const char *buddy_gettopic(gpointer rosterdata) +{ + roster *roster_usr = rosterdata; + return roster_usr->topic; +} + // buddy_getgroupname() // Returns a pointer on buddy's group name. const char *buddy_getgroupname(gpointer rosterdata) diff -r 1df26ff0ed8c -r 265c50238a48 mcabber/src/roster.h --- a/mcabber/src/roster.h Sun Nov 27 00:19:07 2005 +0100 +++ b/mcabber/src/roster.h Sun Nov 27 21:26:55 2005 +0100 @@ -72,6 +72,8 @@ const char *buddy_getname(gpointer rosterdata); void buddy_setnickname(gpointer rosterdata, const char *newname); const char *buddy_getnickname(gpointer rosterdata); +void buddy_settopic(gpointer rosterdata, const char *newtopic); +const char *buddy_gettopic(gpointer rosterdata); void buddy_settype(gpointer rosterdata, guint type); guint buddy_gettype(gpointer rosterdata); void buddy_setgroup(gpointer rosterdata, char *newgroupname);