Mercurial > hg
changeset 516:e5008032edb8
Add option 'show_status_in_buffer'
author | Mikael Berthe <mikael@lilotux.net> |
---|---|
date | Mon, 14 Nov 2005 18:16:59 +0100 |
parents | 180f0a6e4ac9 |
children | d8f4a0fc77d3 |
files | mcabber/src/hooks.c |
diffstat | 1 files changed, 15 insertions(+), 10 deletions(-) [+] |
line wrap: on
line diff
--- a/mcabber/src/hooks.c Mon Nov 14 15:29:03 2005 +0100 +++ b/mcabber/src/hooks.c Mon Nov 14 18:16:59 2005 +0100 @@ -146,9 +146,12 @@ const char *status_msg) { int buddy_format; + int st_in_buf; + enum imstatus oldstat; char *bn = NULL; const char *rn = (resname ? resname : "default"); + st_in_buf = settings_opt_get_int("show_status_in_buffer"); buddy_format = settings_opt_get_int("buddy_format"); if (buddy_format) { const char *name = roster_getname(jid); @@ -166,20 +169,22 @@ bn = g_strdup_printf("<%s/%s>", jid, rn); } + oldstat = roster_getstatus(jid, resname); scr_LogPrint(LPRINT_LOGNORM, "Buddy status has changed: [%c>%c] %s %s", - imstatus2char[roster_getstatus(jid, resname)], - imstatus2char[status], bn, + imstatus2char[oldstat], imstatus2char[status], bn, ((status_msg) ? status_msg : "")); g_free(bn); - // Write the status change in the buddy's buffer, only if it already exists - if (scr_BuddyBufferExists(jid)) { - bn = g_strdup_printf("Buddy status has changed: [%c>%c] %s", - imstatus2char[roster_getstatus(jid, resname)], - imstatus2char[status], - ((status_msg) ? status_msg : "")); - scr_WriteIncomingMessage(jid, bn, 0, HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG); - g_free(bn); + if (st_in_buf == 2 || + (st_in_buf == 1 && (status == offline || oldstat == offline))) { + // Write the status change in the buddy's buffer, only if it already exists + if (scr_BuddyBufferExists(jid)) { + bn = g_strdup_printf("Buddy status has changed: [%c>%c] %s", + imstatus2char[oldstat], imstatus2char[status], + ((status_msg) ? status_msg : "")); + scr_WriteIncomingMessage(jid, bn, 0, HBB_PREFIX_INFO|HBB_PREFIX_NOFLAG); + g_free(bn); + } } roster_setstatus(jid, rn, prio, status, status_msg, role_none, NULL);