changeset 1805:48e47198a9db

Use urgent flag The urgent sign is set (in MUC rooms only so far)
author Mikael Berthe <mikael@lilotux.net>
date Sun, 21 Mar 2010 15:18:40 +0100
parents 35a1250c111a
children 9daf6b3f30d6
files mcabber/mcabber/hooks.c
diffstat 1 files changed, 16 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/mcabber/hooks.c	Sun Mar 21 15:14:24 2010 +0100
+++ b/mcabber/mcabber/hooks.c	Sun Mar 21 15:18:40 2010 +0100
@@ -196,7 +196,7 @@
   GSList *roster_usr;
   unsigned mucnicklen = 0;
   const char *ename = NULL;
-  gboolean attention = FALSE;
+  gboolean attention = FALSE, mucprivmsg = FALSE;
 
   if (encrypted == ENCRYPTED_PGP)
     message_flags |= HBB_PREFIX_PGPCRYPT;
@@ -283,6 +283,7 @@
           g_free(mmsg);
           wmsg = mmsg = g_strdup_printf("PRIV#*%s %s", resname, msg+4);
         }
+        mucprivmsg = TRUE;
       }
       message_flags |= HBB_PREFIX_HLIGHT;
     } else {
@@ -332,6 +333,20 @@
   // have the message twice...
   scr_write_incoming_message(bjid, wmsg, timestamp, message_flags, mucnicklen);
 
+  // Set urgent (a.k.a. "attention") flag
+  {
+    guint uip;
+    if (is_groupchat) {
+      if (mucprivmsg)     uip = ROSTER_UI_PRIO_MUC_PRIV_MESSAGE;
+      else if (attention) uip = ROSTER_UI_PRIO_MUC_HL_MESSAGE;
+      else                uip = ROSTER_UI_PRIO_MUC_MESSAGE;
+    } else {
+      if (attention) uip = ROSTER_UI_PRIO_ATTENTION_MESSAGE;
+      else           uip = ROSTER_UI_PRIO_PRIVATE_MESSAGE;
+    }
+    scr_setattentionflag_if_needed(bjid, FALSE, uip, prio_max);
+  }
+
   // We don't log the modified message, but the original one
   if (wmsg == mmsg)
     wmsg = bmsg;