about summary refs log tree commit diff stats
path: root/src/ui/windows.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-02-17 16:39:37 +0000
committerJames Booth <boothj5@gmail.com>2013-02-17 16:39:37 +0000
commite955df889445b7d30b02aaaf7f0bd92b7044f67a (patch)
tree0c5ae2ed1a2808d06388f0952bf1e6e44f79e7a5 /src/ui/windows.c
parent91289b8d8d08635e6ced62f1280c1eb2bdbfd87e (diff)
downloadprofani-tty-e955df889445b7d30b02aaaf7f0bd92b7044f67a.tar.gz
Colour title on /caps and /software output
Diffstat (limited to 'src/ui/windows.c')
-rw-r--r--src/ui/windows.c97
1 files changed, 77 insertions, 20 deletions
diff --git a/src/ui/windows.c b/src/ui/windows.c
index 7a34b17a..71aa1223 100644
--- a/src/ui/windows.c
+++ b/src/ui/windows.c
@@ -103,7 +103,7 @@ static void _win_resize_all(void);
 static gint _win_get_unread(void);
 static void _win_show_history(WINDOW *win, int win_index,
     const char * const contact);
-static void _win_show_info(WINDOW *win, PContact pcontact, gboolean show_caps);
+static void _win_show_info(WINDOW *win, PContact pcontact);
 static gboolean _new_release(char *found_version);
 static void _ui_draw_win_title(void);
 static void _presence_colour_on(WINDOW *win, const char * const presence);
@@ -1184,7 +1184,7 @@ cons_show_wins(void)
 void
 cons_show_info(PContact pcontact)
 {
-    _win_show_info(console->win, pcontact, FALSE);
+    _win_show_info(console->win, pcontact);
 
     if (current_index == 0) {
         dirty = TRUE;
@@ -1194,9 +1194,74 @@ cons_show_info(PContact pcontact)
 }
 
 void
-cons_show_caps(PContact pcontact)
+cons_show_caps(const char * const contact, Resource *resource)
 {
-    _win_show_info(console->win, pcontact, TRUE);
+    WINDOW *win = console->win;
+    cons_show("");
+    const char *resource_presence = string_from_resource_presence(resource->presence);
+    _win_show_time(win, '-');
+    _presence_colour_on(win, resource_presence);
+    wprintw(win, "%s", contact);
+    _presence_colour_off(win, resource_presence);
+    wprintw(win, ":\n");
+
+    if (resource->caps_str != NULL) {
+        Capabilities *caps = caps_get(resource->caps_str);
+        if (caps != NULL) {
+            // show identity
+            if ((caps->category != NULL) || (caps->type != NULL) || (caps->name != NULL)) {
+                _win_show_time(win, '-');
+                wprintw(win, "  Identity: ");
+                if (caps->name != NULL) {
+                    wprintw(win, "%s", caps->name);
+                    if ((caps->category != NULL) || (caps->type != NULL)) {
+                        wprintw(win, " ");
+                    }
+                }
+                if (caps->type != NULL) {
+                    wprintw(win, "%s", caps->type);
+                    if (caps->category != NULL) {
+                        wprintw(win, " ");
+                    }
+                }
+                if (caps->category != NULL) {
+                    wprintw(win, "%s", caps->category);
+                }
+                wprintw(win, "\n");
+            }
+            if (caps->software != NULL) {
+                _win_show_time(win, '-');
+                wprintw(win, "  Software: %s", caps->software);
+            }
+            if (caps->software_version != NULL) {
+                wprintw(win, ", %s", caps->software_version);
+            }
+            if ((caps->software != NULL) || (caps->software_version != NULL)) {
+                wprintw(win, "\n");
+            }
+            if (caps->os != NULL) {
+                _win_show_time(win, '-');
+                wprintw(win, "  OS: %s", caps->os);
+            }
+            if (caps->os_version != NULL) {
+                wprintw(win, ", %s", caps->os_version);
+            }
+            if ((caps->os != NULL) || (caps->os_version != NULL)) {
+                wprintw(win, "\n");
+            }
+
+            if (caps->features != NULL) {
+                _win_show_time(win, '-');
+                wprintw(win, "  Features:\n");
+                GSList *feature = caps->features;
+                while (feature != NULL) {
+                    _win_show_time(win, '-');
+                    wprintw(win, "    %s\n", feature->data);
+                    feature = g_slist_next(feature);
+                }
+            }
+        }
+    }
 
     if (current_index == 0) {
         dirty = TRUE;
@@ -1206,12 +1271,16 @@ cons_show_caps(PContact pcontact)
 }
 
 void
-cons_show_software_version(const char * const jid, const char * const name,
-    const char * const version, const char * const os)
+cons_show_software_version(const char * const jid, const char * const  presence,
+    const char * const name, const char * const version, const char * const os)
 {
     if ((name != NULL) || (version != NULL) || (os != NULL)) {
         cons_show("");
-        cons_show("%s:", jid);
+        _win_show_time(console->win, '-');
+        _presence_colour_on(console->win, presence);
+        wprintw(console->win, "%s", jid);
+        _presence_colour_off(console->win, presence);
+        wprintw(console->win, ":\n");
     }
     if (name != NULL) {
         cons_show("  Name    : %s", name);
@@ -2431,7 +2500,7 @@ _win_show_history(WINDOW *win, int win_index, const char * const contact)
 }
 
 static void
-_win_show_info(WINDOW *win, PContact pcontact, gboolean show_caps)
+_win_show_info(WINDOW *win, PContact pcontact)
 {
     const char *barejid = p_contact_barejid(pcontact);
     const char *name = p_contact_name(pcontact);
@@ -2551,18 +2620,6 @@ _win_show_info(WINDOW *win, PContact pcontact, gboolean show_caps)
                 if ((caps->os != NULL) || (caps->os_version != NULL)) {
                     wprintw(win, "\n");
                 }
-
-                if (show_caps && caps->features != NULL) {
-                    _win_show_time(win, '-');
-                    wprintw(win, "    Features:\n");
-                    GSList *feature = caps->features;
-                    while (feature != NULL) {
-                        _win_show_time(win, '-');
-                        wprintw(win, "      %s\n", feature->data);
-                        feature = g_slist_next(feature);
-                    }
-                }
-
             }
         }