Mercurial > hg
changeset 504:321ae11e7ddb
Prettier display for "/room names"
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Mon, 31 Oct 2005 23:04:51 +0100 |
parents | ddec224c2318 |
children | 7ffb1a3ed1b8 |
files | mcabber/src/commands.c |
diffstat | 1 files changed, 43 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/commands.c Mon Oct 31 22:35:35 2005 +0100 +++ b/mcabber/src/commands.c Mon Oct 31 23:04:51 2005 +0100 @@ -838,6 +838,48 @@ g_free(buffer); } +// room_names() is a variation of do_info(), for chatrooms only +static void room_names(void) +{ + gpointer bud; + const char *jid; + char *buffer; + GSList *resources; + + if (!current_buddy) return; + bud = BUDDATA(current_buddy); + + if (buddy_gettype(bud) != ROSTER_TYPE_ROOM) { + scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom"); + return; + } + + jid = buddy_getjid(bud); + + buffer = g_new(char, 128); + snprintf(buffer, 127, "Room members:"); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + + resources = buddy_getresources(bud); + for ( ; resources ; resources = g_slist_next(resources) ) { + enum imstatus rstatus; + const char *rst_msg; + + rstatus = buddy_getstatus(bud, resources->data); + rst_msg = buddy_getstatusmsg(bud, resources->data); + + snprintf(buffer, 127, "[%c] %s", imstatus2char[rstatus], + (char*)resources->data); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + if (rst_msg) { + snprintf(buffer, 127, "Status message: %s", rst_msg); + scr_WriteIncomingMessage(jid, buffer, 0, HBB_PREFIX_INFO); + } + } + + g_free(buffer); +} + static void do_rename(char *arg) { gpointer bud; @@ -1136,7 +1178,7 @@ scr_LogPrint(LPRINT_NORMAL, "This isn't a chatroom"); return; } - do_info(NULL); + room_names(); } else if (!strncasecmp(arg, "nick", 4)) { gchar *cmd; arg += 4;