about summary refs log tree commit diff stats
path: root/src/ui/statusbar.c
diff options
context:
space:
mode:
authorJohn Hernandez <129467592+H3rnand3zzz@users.noreply.github.com>2023-04-04 02:14:52 +0200
committerJohn Hernandez <129467592+H3rnand3zzz@users.noreply.github.com>2023-04-10 16:28:44 +0200
commit7d290b04d50c59075d7cd6efa0650f7b8b9d4c77 (patch)
tree792b446d55b5a2a9a306816b3a399326643132b6 /src/ui/statusbar.c
parent0740d692dc401dd8614fcbc9f628086279ca3c93 (diff)
downloadprofani-tty-7d290b04d50c59075d7cd6efa0650f7b8b9d4c77.tar.gz
Fixes Statusbar tabs and Cleanup
- Fixes statusbar tabs.
Bug: Statusbar used nickname if it was set in roster,
irrelevant to /statusbar chat setting.
Expected behaviour would be using this setting set as "user" to show nickname,
and to show jid with "jid" setting.
Other solution is to give a user control over it with another settings.
- _status_bar_draw_maintext cleaned up, no changes to behaviour
Diffstat (limited to 'src/ui/statusbar.c')
-rw-r--r--src/ui/statusbar.c52
1 files changed, 38 insertions, 14 deletions
diff --git a/src/ui/statusbar.c b/src/ui/statusbar.c
index 38d28c31..08ecdcd7 100644
--- a/src/ui/statusbar.c
+++ b/src/ui/statusbar.c
@@ -182,10 +182,7 @@ status_bar_inactive(const int win)
 void
 _create_tab(const int win, win_type_t wintype, char* identifier, gboolean highlight)
 {
-    int true_win = win;
-    if (true_win == 0) {
-        true_win = 10;
-    }
+    int true_win = win == 0 ? 10 : win;
 
     StatusBarTab* tab = malloc(sizeof(StatusBarTab));
     tab->identifier = strdup(identifier);
@@ -198,11 +195,12 @@ _create_tab(const int win, win_type_t wintype, char* identifier, gboolean highli
         if (roster_exists()) {
             contact = roster_get_contact(tab->identifier);
         }
-        if (contact && p_contact_name(contact)) {
-            tab->display_name = strdup(p_contact_name(contact));
-        } else {
-            char* pref = prefs_get_string(PREF_STATUSBAR_CHAT);
-            if (g_strcmp0("user", pref) == 0) {
+        const char* pcontact_name = contact ? p_contact_name(contact) : NULL;
+        auto_char char* pref = prefs_get_string(PREF_STATUSBAR_CHAT);
+        if (g_strcmp0("user", pref) == 0) {
+            if (pcontact_name) {
+                tab->display_name = strdup(pcontact_name);
+            } else {
                 Jid* jidp = jid_create(tab->identifier);
                 if (jidp) {
                     tab->display_name = jidp->localpart != NULL ? strdup(jidp->localpart) : strdup(jidp->barejid);
@@ -210,10 +208,9 @@ _create_tab(const int win, win_type_t wintype, char* identifier, gboolean highli
                 } else {
                     tab->display_name = strdup(tab->identifier);
                 }
-            } else {
-                tab->display_name = strdup(tab->identifier);
             }
-            g_free(pref);
+        } else {
+            tab->display_name = strdup(tab->identifier);
         }
     }
 
@@ -518,12 +515,17 @@ _status_bar_draw_maintext(int pos)
     const char* maintext = NULL;
     auto_jid Jid* jidp = NULL;
     auto_char char* self = prefs_get_string(PREF_STATUSBAR_SELF);
+
     if (statusbar->prompt) {
         mvwprintw(statusbar_win, 0, pos, "%s", statusbar->prompt);
         return utf8_display_len(statusbar->prompt);
-    } else if (g_strcmp0(self, "off") == 0) {
+    }
+
+    if (g_strcmp0(self, "off") == 0) {
         return pos;
-    } else if (statusbar->fulljid) {
+    }
+
+    if (statusbar->fulljid) {
         jidp = jid_create(statusbar->fulljid);
         if (g_strcmp0(self, "user") == 0) {
             maintext = jidp->localpart;
@@ -538,6 +540,28 @@ _status_bar_draw_maintext(int pos)
         return pos;
     }
 
+    if (statusbar->fulljid) {
+        auto_char char* pref = prefs_get_string(PREF_STATUSBAR_SELF);
+
+        if (g_strcmp0(pref, "off") == 0) {
+            return pos;
+        }
+        if (g_strcmp0(pref, "user") == 0) {
+            Jid* jidp = jid_create(statusbar->fulljid);
+            mvwprintw(statusbar_win, 0, pos, "%s", jidp->localpart);
+            jid_destroy(jidp);
+            return pos;
+        }
+        if (g_strcmp0(pref, "barejid") == 0) {
+            Jid* jidp = jid_create(statusbar->fulljid);
+            mvwprintw(statusbar_win, 0, pos, "%s", jidp->barejid);
+            jid_destroy(jidp);
+            return pos;
+        }
+
+        mvwprintw(statusbar_win, 0, pos, "%s", statusbar->fulljid);
+    }
+
     gboolean actlist_tabmode = _tabmode_is_actlist();
     auto_gchar gchar* maintext_ = NULL;
     if (actlist_tabmode) {