# HG changeset patch # User Mikael Berthe # Date 1222970411 -7200 # Node ID 68580b6be8955c72cf7681a7adbd327e35decedc # Parent 935289bf02eac364f40219238c33b82729596e06 Display more information in /room bookmark (autojoin, nick...) With this patch /room bookmark adds a '*' prefix when autojoin is set in the bookmark list. It also displays the nick and the room name contained in the bookmarks. diff -r 935289bf02ea -r 68580b6be895 mcabber/src/commands.c --- a/mcabber/src/commands.c Wed Oct 01 20:36:22 2008 +0200 +++ b/mcabber/src/commands.c Thu Oct 02 20:00:11 2008 +0200 @@ -2810,6 +2810,7 @@ { GSList *bm, *bmp; GString *sbuf; + struct bookmark *bm_elt; bm = jb_get_all_storage_bookmarks(); @@ -2822,7 +2823,17 @@ 0, HBB_PREFIX_INFO, 0); for (bmp = bm; bmp; bmp = g_slist_next(bmp)) { - g_string_printf(sbuf, "<%s>", (char*)bmp->data); + bm_elt = bmp->data; + g_string_printf(sbuf, "%c <%s>", + (bm_elt->autojoin ? '*' : ' '), bm_elt->roomjid); + if (bm_elt->nick) + g_string_append_printf(sbuf, " (%s)", bm_elt->nick); + if (bm_elt->name) + g_string_append_printf(sbuf, " %s", bm_elt->name); + g_free(bm_elt->roomjid); + g_free(bm_elt->name); + g_free(bm_elt->nick); + g_free(bm_elt); scr_WriteIncomingMessage(NULL, sbuf->str, 0, HBB_PREFIX_INFO | HBB_PREFIX_CONT, 0); } diff -r 935289bf02ea -r 68580b6be895 mcabber/src/jabglue.c --- a/mcabber/src/jabglue.c Wed Oct 01 20:36:22 2008 +0200 +++ b/mcabber/src/jabglue.c Thu Oct 02 20:00:11 2008 +0200 @@ -1428,7 +1428,7 @@ // jb_get_all_storage_bookmarks() // Return a GSList with all storage bookmarks. -// The caller should g_free the list (not the MUC jids). +// The caller should g_free the list and its contents. GSList *jb_get_all_storage_bookmarks(void) { xmlnode x; @@ -1444,10 +1444,23 @@ const char *p = xmlnode_get_name(x); // If the node is a conference item, let's add the note to our list. if (p && !strcmp(p, "conference")) { + struct bookmark *bm_elt; + const char *autojoin, *name, *nick; const char *fjid = xmlnode_get_attrib(x, "jid"); if (!fjid) continue; - sl_bookmarks = g_slist_append(sl_bookmarks, (char*)fjid); + bm_elt = g_new0(struct bookmark, 1); + bm_elt->roomjid = g_strdup(fjid); + autojoin = xmlnode_get_attrib(x, "autojoin"); + nick = xmlnode_get_attrib(x, "nick"); + name = xmlnode_get_attrib(x, "name"); + if (autojoin && !strcmp(autojoin, "1")) + bm_elt->autojoin = 1; + if (nick) + bm_elt->nick = g_strdup(nick); + if (name) + bm_elt->name = g_strdup(name); + sl_bookmarks = g_slist_append(sl_bookmarks, bm_elt); } } return sl_bookmarks; diff -r 935289bf02ea -r 68580b6be895 mcabber/src/jabglue.h --- a/mcabber/src/jabglue.h Wed Oct 01 20:36:22 2008 +0200 +++ b/mcabber/src/jabglue.h Thu Oct 02 20:00:11 2008 +0200 @@ -42,6 +42,15 @@ gchar *text; }; +struct bookmark { + gchar *roomjid; + gchar *name; + gchar *nick; + guint autojoin; + /* enum room_printstatus pstatus; */ + /* enum room_autowhois awhois; */ +}; + char *jidtodisp(const char *fjid); char *compose_jid(const char *username, const char *servername, const char *resource);