changeset 548:265c50238a48

Add buddy_{get,set}topic()
author Mikael Berthe <mikael@lilotux.net>
date Sun, 27 Nov 2005 21:26:55 +0100
parents 1df26ff0ed8c
children 448e299e45da
files mcabber/src/roster.c mcabber/src/roster.h
diffstat 2 files changed, 32 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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)
--- 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);