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);