# HG changeset patch # User Mikael Berthe # Date 1131813380 -3600 # Node ID 6c3cd3aa4a91e4e8d3425a81eec9aa57bdc40904 # Parent cd52ddef5ce1a3a36f991435b331147fb395a3b2 New 'buddy_format' option diff -r cd52ddef5ce1 -r 6c3cd3aa4a91 mcabber/src/hooks.c --- a/mcabber/src/hooks.c Sat Nov 12 15:02:25 2005 +0100 +++ b/mcabber/src/hooks.c Sat Nov 12 17:36:20 2005 +0100 @@ -145,11 +145,32 @@ time_t timestamp, enum imstatus status, const char *status_msg) { + int buddy_format; + char *bn = NULL; const char *rn = (resname ? resname : "default"); - scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] <%s/%s> %s", + + buddy_format = settings_opt_get_int("buddy_format"); + if (buddy_format) { + const char *name = roster_getname(jid); + if (name && strcmp(name, jid)) { + if (buddy_format == 1) + bn = g_strdup_printf("%s <%s/%s>", name, jid, rn); + else if (buddy_format == 2) + bn = g_strdup_printf("%s/%s", name, rn); + else if (buddy_format == 3) + bn = g_strdup_printf("%s", name); + } + } + + if (!bn) { + bn = g_strdup_printf("<%s/%s>", jid, rn); + } + + scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s", imstatus2char[roster_getstatus(jid, resname)], - imstatus2char[status], jid, rn, + imstatus2char[status], bn, ((status_msg) ? status_msg : "")); + g_free(bn); roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL); buddylist_build(); scr_DrawRoster(); diff -r cd52ddef5ce1 -r 6c3cd3aa4a91 mcabber/src/roster.c --- a/mcabber/src/roster.c Sat Nov 12 15:02:25 2005 +0100 +++ b/mcabber/src/roster.c Sat Nov 12 17:36:20 2005 +0100 @@ -489,6 +489,20 @@ } } +const char *roster_getname(const char *jid) +{ + GSList *sl_user; + roster *roster_usr; + + sl_user = roster_find(jid, jidsearch, + ROSTER_TYPE_USER|ROSTER_TYPE_ROOM|ROSTER_TYPE_AGENT); + if (sl_user == NULL) + return NULL; // Not in the roster... + + roster_usr = (roster*)sl_user->data; + return roster_usr->name; +} + void roster_settype(const char *jid, guint type) { GSList *sl_user; diff -r cd52ddef5ce1 -r 6c3cd3aa4a91 mcabber/src/roster.h --- a/mcabber/src/roster.h Sat Nov 12 15:02:25 2005 +0100 +++ b/mcabber/src/roster.h Sat Nov 12 17:36:20 2005 +0100 @@ -57,6 +57,7 @@ enum imrole role, const char *realjid); void roster_setflags(const char *jid, guint flags, guint value); void roster_msg_setflag(const char *jid, guint value); +const char *roster_getname(const char *jid); void roster_settype(const char *jid, guint type); enum imstatus roster_getstatus(const char *jid, const char *resname); const char *roster_getstatusmsg(const char *jid, const char *resname);