changeset 1977:1d8f9135e000

Use smarter message flag in the main status line The attention sign (!) is used when a personal message is unread, or if we're highlighted in a MUC room.
author Mikael Berthe <mikael@lilotux.net>
date Sat, 26 Mar 2011 13:37:33 +0100
parents e6beab22099b
children 986e514bec97
files mcabber/mcabber/screen.c
diffstat 1 files changed, 22 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/mcabber/mcabber/screen.c	Thu Mar 24 20:53:08 2011 +0100
+++ b/mcabber/mcabber/screen.c	Sat Mar 26 13:37:33 2011 +0100
@@ -1493,18 +1493,36 @@
 {
   char *sm = from_utf8(xmpp_getstatusmsg());
   const char *info = settings_opt_get("info");
+  guint prio = 0;
+  gpointer unread_ptr;
+  char unreadchar;
+
+  unread_ptr = unread_msg(NULL);
+  if (unread_ptr) {
+    prio = buddy_getuiprio(unread_ptr);
+    // If there's an unerad buffer but no priority set, let's consider the
+    // priority is 1.
+    if (!prio && buddy_getflags(unread_ptr) & ROSTER_FLAG_MSG)
+      prio = 1;
+  }
+
+  // Status bar unread message flag
+  if (prio >= ROSTER_UI_PRIO_MUC_HL_MESSAGE)
+    unreadchar = '!';
+  else if (prio > 0)
+    unreadchar = '#';
+  else
+    unreadchar = ' ';
 
   werase(mainstatusWnd);
   if (info) {
     char *info_locale = from_utf8(info);
-    mvwprintw(mainstatusWnd, 0, 0, "%c[%c] %s %s",
-              (unread_msg(NULL) ? '#' : ' '),
+    mvwprintw(mainstatusWnd, 0, 0, "%c[%c] %s %s", unreadchar,
               imstatus2char[xmpp_getstatus()],
               info_locale, (sm ? sm : ""));
     g_free(info_locale);
   } else
-    mvwprintw(mainstatusWnd, 0, 0, "%c[%c] %s",
-              (unread_msg(NULL) ? '#' : ' '),
+    mvwprintw(mainstatusWnd, 0, 0, "%c[%c] %s", unreadchar,
               imstatus2char[xmpp_getstatus()], (sm ? sm : ""));
   if (forceupdate) {
     top_panel(inputPanel);