From bf494b1b07654103cd0c0867e37326e618b58f4d Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 11 Jan 2014 18:06:46 +0000 Subject: Refactored setting window recipient --- src/ui/core.c | 57 ++++++++++++++++++++++++++----------------------------- src/ui/titlebar.c | 5 +++-- 2 files changed, 30 insertions(+), 32 deletions(-) (limited to 'src/ui') diff --git a/src/ui/core.c b/src/ui/core.c index 4ff43ff1..622261b6 100644 --- a/src/ui/core.c +++ b/src/ui/core.c @@ -501,6 +501,24 @@ _ui_close_read_wins(void) return count; } +GString * +_get_recipient_string(ProfWin *window) +{ + GString *result = g_string_new(""); + PContact contact = roster_get_contact(window->from); + if (contact != NULL) { + if (p_contact_name(contact) != NULL) { + g_string_append(result, p_contact_name(contact)); + } else { + g_string_append(result, window->from); + } + } else { + g_string_append(result, window->from); + } + + return result; +} + static void _ui_switch_win(const int i) { @@ -517,16 +535,9 @@ _ui_switch_win(const int i) status_bar_current(1); status_bar_active(1); } else { - PContact contact = roster_get_contact(new_current->from); - if (contact != NULL) { - if (p_contact_name(contact) != NULL) { - title_bar_set_recipient(p_contact_name(contact)); - } else { - title_bar_set_recipient(new_current->from); - } - } else { - title_bar_set_recipient(new_current->from); - } + GString *recipient_str = _get_recipient_string(new_current); + title_bar_set_recipient(recipient_str->str); + g_string_free(recipient_str, TRUE); title_bar_draw(); status_bar_current(i); status_bar_active(i); @@ -551,16 +562,9 @@ _ui_next_win(void) status_bar_current(1); status_bar_active(1); } else { - PContact contact = roster_get_contact(new_current->from); - if (contact != NULL) { - if (p_contact_name(contact) != NULL) { - title_bar_set_recipient(p_contact_name(contact)); - } else { - title_bar_set_recipient(new_current->from); - } - } else { - title_bar_set_recipient(new_current->from); - } + GString *recipient_str = _get_recipient_string(new_current); + title_bar_set_recipient(recipient_str->str); + g_string_free(recipient_str, TRUE); title_bar_draw(); status_bar_current(i); status_bar_active(i); @@ -584,16 +588,9 @@ _ui_previous_win(void) status_bar_current(1); status_bar_active(1); } else { - PContact contact = roster_get_contact(new_current->from); - if (contact != NULL) { - if (p_contact_name(contact) != NULL) { - title_bar_set_recipient(p_contact_name(contact)); - } else { - title_bar_set_recipient(new_current->from); - } - } else { - title_bar_set_recipient(new_current->from); - } + GString *recipient_str = _get_recipient_string(new_current); + title_bar_set_recipient(recipient_str->str); + g_string_free(recipient_str, TRUE); title_bar_draw(); status_bar_current(i); status_bar_active(i); diff --git a/src/ui/titlebar.c b/src/ui/titlebar.c index 04492b62..37827979 100644 --- a/src/ui/titlebar.c +++ b/src/ui/titlebar.c @@ -29,7 +29,7 @@ static WINDOW *title_bar; static char *current_title = NULL; -static const char *recipient = NULL; +static char *recipient = NULL; static GTimer *typing_elapsed; static int dirty; static contact_presence_t current_status; @@ -132,7 +132,8 @@ _title_bar_set_recipient(const char * const from) g_timer_destroy(typing_elapsed); typing_elapsed = NULL; } - recipient = from; + free(recipient); + recipient = strdup(from); if (current_title != NULL) { free(current_title); -- cgit 1.4.1-2-gfad0