# HG changeset patch # User Mikael Berthe # Date 1131988619 -3600 # Node ID e5008032edb817eb4fafcd518562e32aacffa48a # Parent 180f0a6e4ac90f5a350e853a9ca9817528de1f00 Add option 'show_status_in_buffer' diff -r 180f0a6e4ac9 -r e5008032edb8 mcabber/src/hooks.c --- 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);