1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-11-03 19:37:16 -05:00

statusbar: reduce duplicate code

status_bar_new() and status_bar_active() are almost identical.
Let's use one helper function to not duplicate code.

I thought about renaming both functions into one and adding another
parameter but didn't come up with a good name for the function that
clearly describes what it does. So staying with current names + helper
functions.
This commit is contained in:
Michael Vetter 2019-06-04 14:50:25 +02:00
parent ea62c3f293
commit 2d00444702

View File

@ -173,7 +173,7 @@ status_bar_inactive(const int win)
} }
void void
status_bar_active(const int win, win_type_t wintype, char *identifier) _create_tab(const int win, win_type_t wintype, char *identifier, gboolean highlight)
{ {
int true_win = win; int true_win = win;
if (true_win == 0) { if (true_win == 0) {
@ -182,7 +182,7 @@ status_bar_active(const int win, win_type_t wintype, char *identifier)
StatusBarTab *tab = malloc(sizeof(StatusBarTab)); StatusBarTab *tab = malloc(sizeof(StatusBarTab));
tab->identifier = strdup(identifier); tab->identifier = strdup(identifier);
tab->highlight = FALSE; tab->highlight = highlight;
tab->window_type = wintype; tab->window_type = wintype;
tab->display_name = NULL; tab->display_name = NULL;
@ -207,39 +207,16 @@ status_bar_active(const int win, win_type_t wintype, char *identifier)
status_bar_draw(); status_bar_draw();
} }
void
status_bar_active(const int win, win_type_t wintype, char *identifier)
{
_create_tab(win, wintype, identifier, FALSE);
}
void void
status_bar_new(const int win, win_type_t wintype, char* identifier) status_bar_new(const int win, win_type_t wintype, char* identifier)
{ {
int true_win = win; _create_tab(win, wintype, identifier, TRUE);
if (true_win == 0) {
true_win = 10;
}
StatusBarTab *tab = malloc(sizeof(StatusBarTab));
tab->identifier = strdup(identifier);
tab->highlight = TRUE;
tab->window_type = wintype;
tab->display_name = NULL;
if (tab->window_type == WIN_CHAT) {
PContact 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) {
Jid *jidp = jid_create(tab->identifier);
tab->display_name = strdup(jidp->localpart);
jid_destroy(jidp);
} else {
tab->display_name = strdup(tab->identifier);
}
}
}
g_hash_table_replace(statusbar->tabs, GINT_TO_POINTER(true_win), tab);
status_bar_draw();
} }
void void