about summary refs log tree commit diff stats
path: root/title_bar.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2012-05-27 20:36:31 +0100
committerJames Booth <boothj5@gmail.com>2012-05-27 20:36:31 +0100
commitdd9f6f825ea7b602f3064ca4a6099dfb5cd9910d (patch)
treee55549537342d40031b4b41d903a8622dac6c175 /title_bar.c
parentf5eab875884feda2b1e40e0dcd76150ca1b0763f (diff)
downloadprofani-tty-dd9f6f825ea7b602f3064ca4a6099dfb5cd9910d.tar.gz
Commands for presence updates
Diffstat (limited to 'title_bar.c')
-rw-r--r--title_bar.c53
1 files changed, 26 insertions, 27 deletions
diff --git a/title_bar.c b/title_bar.c
index 2b0e08b5..c487801a 100644
--- a/title_bar.c
+++ b/title_bar.c
@@ -24,15 +24,16 @@
 #include <string.h>
 #include <ncurses.h>
 
+#include "common.h"
 #include "ui.h"
 
 static WINDOW *title_bar;
 static char *current_title = NULL;
-static int connected = FALSE;
 static int dirty;
+static jabber_presence_t current_status;
 
-void _title_bar_draw_title(void);
-void _title_bar_draw_status(void);
+static void _title_bar_draw_title(void);
+static void _title_bar_draw_status(void);
 
 void create_title_bar(void)
 {
@@ -42,7 +43,7 @@ void create_title_bar(void)
     title_bar = newwin(1, cols, 0, 0);
     wbkgd(title_bar, COLOR_PAIR(3));
     title_bar_title();
-    title_bar_disconnected();
+    title_bar_set_status(PRESENCE_OFFLINE);
     dirty = TRUE;
 }
 
@@ -52,18 +53,6 @@ void title_bar_title(void)
     dirty = TRUE;
 }
 
-void title_bar_connected(void)
-{
-    connected = TRUE;
-    _title_bar_draw_status();
-}
-
-void title_bar_disconnected(void)
-{
-    connected = FALSE;
-    _title_bar_draw_status();
-}
-
 void title_bar_resize(void)
 {
     int rows, cols;
@@ -96,18 +85,13 @@ void title_bar_show(const char * const title)
     _title_bar_draw_title();
 }
 
-void _title_bar_draw_title(void)
+void title_bar_set_status(jabber_presence_t status)
 {
-    wmove(title_bar, 0, 0);
-    int i;
-    for (i = 0; i < 45; i++)
-        waddch(title_bar, ' ');
-    mvwprintw(title_bar, 0, 0, " %s", current_title);
-    
-    dirty = TRUE;
+    current_status = status;
+    _title_bar_draw_status();
 }
 
-void _title_bar_draw_status(void)
+static void _title_bar_draw_status()
 {
     int rows, cols;
     getmaxyx(stdscr, rows, cols);
@@ -116,10 +100,13 @@ void _title_bar_draw_status(void)
     mvwaddch(title_bar, 0, cols - 14, '[');
     wattroff(title_bar, COLOR_PAIR(4));
 
-    if (connected == TRUE)
+    if (current_status == PRESENCE_ONLINE) {
         mvwprintw(title_bar, 0, cols - 13, " ...online ");
-    else
+    } else if (current_status == PRESENCE_AWAY) {
+        mvwprintw(title_bar, 0, cols - 13, " .....away ");
+    } else {
         mvwprintw(title_bar, 0, cols - 13, " ..offline ");
+    }
     
     wattron(title_bar, COLOR_PAIR(4));
     mvwaddch(title_bar, 0, cols - 2, ']');
@@ -127,3 +114,15 @@ void _title_bar_draw_status(void)
     
     dirty = TRUE;
 }
+
+static void _title_bar_draw_title(void)
+{
+    wmove(title_bar, 0, 0);
+    int i;
+    for (i = 0; i < 45; i++)
+        waddch(title_bar, ' ');
+    mvwprintw(title_bar, 0, 0, " %s", current_title);
+    
+    dirty = TRUE;
+}
+