diff options
author | James Booth <boothj5@gmail.com> | 2018-03-10 22:41:55 +0000 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2018-03-10 22:41:55 +0000 |
commit | 4bf67fb35ac0fa9d78f3fe32d5ef14d146b39b6a (patch) | |
tree | 7783e024c6c47d7c15cbbb544565f255021a75e0 | |
parent | 95b639a21f77c825a36076562363154216cdad05 (diff) | |
download | profani-tty-4bf67fb35ac0fa9d78f3fe32d5ef14d146b39b6a.tar.gz |
Use jid prefs in statusbar
-rw-r--r-- | src/ui/core.c | 4 | ||||
-rw-r--r-- | src/ui/statusbar.c | 58 | ||||
-rw-r--r-- | src/ui/statusbar.h | 4 |
3 files changed, 60 insertions, 6 deletions
diff --git a/src/ui/core.c b/src/ui/core.c index a0ca8495..5246d06a 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -388,7 +388,7 @@ ui_handle_login_account_success(ProfAccount *account, gboolean secured) title_bar_set_connected(TRUE); title_bar_set_tls(secured); - status_bar_set_prompt(connection_get_fulljid()); + status_bar_set_fulljid(connection_get_fulljid()); } void @@ -481,7 +481,7 @@ ui_disconnected(void) title_bar_set_connected(FALSE); title_bar_set_tls(FALSE); title_bar_set_presence(CONTACT_OFFLINE); - status_bar_clear_prompt(); + status_bar_clear_fulljid(); ui_hide_roster(); } diff --git a/src/ui/statusbar.c b/src/ui/statusbar.c index 28b20f01..3515b0a7 100644 --- a/src/ui/statusbar.c +++ b/src/ui/statusbar.c @@ -62,6 +62,7 @@ typedef struct _status_bar_tab_t { typedef struct _status_bar_t { gchar *time; char *prompt; + char *fulljid; GHashTable *tabs; int current_tab; } StatusBar; @@ -71,7 +72,7 @@ static StatusBar *statusbar; static WINDOW *statusbar_win; static int _status_bar_draw_time(int pos); -static void _status_bar_draw_prompt(int pos); +static void _status_bar_draw_maintext(int pos); static int _status_bar_draw_bracket(gboolean current, int pos, char* ch); static int _status_bar_draw_extended_tabs(int pos); static int _status_bar_draw_tab(StatusBarTab *tab, int pos, int num); @@ -88,6 +89,7 @@ status_bar_init(void) statusbar = malloc(sizeof(StatusBar)); statusbar->time = NULL; statusbar->prompt = NULL; + statusbar->fulljid = NULL; statusbar->tabs = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)_destroy_tab); StatusBarTab *console = malloc(sizeof(StatusBarTab)); console->window_type = WIN_CONSOLE; @@ -115,6 +117,12 @@ status_bar_close(void) if (statusbar->prompt) { free(statusbar->prompt); } + if (statusbar->fulljid) { + free(statusbar->fulljid); + } + if (statusbar->tabs) { + g_hash_table_destroy(statusbar->tabs); + } free(statusbar); } } @@ -220,6 +228,29 @@ status_bar_clear_prompt(void) } void +status_bar_set_fulljid(const char *const fulljid) +{ + if (statusbar->fulljid) { + free(statusbar->fulljid); + statusbar->fulljid = NULL; + } + statusbar->fulljid = strdup(fulljid); + + status_bar_draw(); +} + +void +status_bar_clear_fulljid(void) +{ + if (statusbar->fulljid) { + free(statusbar->fulljid); + statusbar->fulljid = NULL; + } + + status_bar_draw(); +} + +void status_bar_draw(void) { werase(statusbar_win); @@ -229,7 +260,7 @@ status_bar_draw(void) pos = _status_bar_draw_time(pos); - _status_bar_draw_prompt(pos); + _status_bar_draw_maintext(pos); pos = getmaxx(stdscr) - _tabs_width(); gint max_tabs = prefs_get_statusbartabs(); @@ -389,10 +420,31 @@ _status_bar_draw_time(int pos) } static void -_status_bar_draw_prompt(int pos) +_status_bar_draw_maintext(int pos) { if (statusbar->prompt) { mvwprintw(statusbar_win, 0, pos, statusbar->prompt); + return; + } + + if (statusbar->fulljid) { + char *pref = prefs_get_string(PREF_STATUSBAR_SELF); + if (g_strcmp0(pref, "off") == 0) { + return; + } + if (g_strcmp0(pref, "user") == 0) { + Jid *jidp = jid_create(statusbar->fulljid); + mvwprintw(statusbar_win, 0, pos, jidp->localpart); + jid_destroy(jidp); + return; + } + if (g_strcmp0(pref, "barejid") == 0) { + Jid *jidp = jid_create(statusbar->fulljid); + mvwprintw(statusbar_win, 0, pos, jidp->barejid); + jid_destroy(jidp); + return; + } + mvwprintw(statusbar_win, 0, pos, statusbar->fulljid); } } diff --git a/src/ui/statusbar.h b/src/ui/statusbar.h index ce1f5482..de8b51cc 100644 --- a/src/ui/statusbar.h +++ b/src/ui/statusbar.h @@ -39,8 +39,10 @@ void status_bar_init(void); void status_bar_draw(void); void status_bar_close(void); void status_bar_resize(void); -void status_bar_clear_prompt(void); void status_bar_set_prompt(const char *const prompt); +void status_bar_clear_prompt(void); +void status_bar_set_fulljid(const char *const fulljid); +void status_bar_clear_fulljid(void); void status_bar_current(int i); #endif |