diff options
author | James Booth <boothj5@gmail.com> | 2013-07-03 23:44:51 +0100 |
---|---|---|
committer | James Booth <boothj5@gmail.com> | 2013-07-03 23:44:51 +0100 |
commit | 581c1e8b951d7b9841cec56d5ebf9d3c138e6ce9 (patch) | |
tree | 45645cc4fa432bc48be631aa6782469abadc4269 /src/ui | |
parent | 817857e4c0d986226b7c213debca9de4f32e979a (diff) | |
download | profani-tty-581c1e8b951d7b9841cec56d5ebf9d3c138e6ce9.tar.gz |
Coloured contact and subscription in /roster and /group output
Diffstat (limited to 'src/ui')
-rw-r--r-- | src/ui/console.c | 117 |
1 files changed, 62 insertions, 55 deletions
diff --git a/src/ui/console.c b/src/ui/console.c index 67f3fa28..ee5ad221 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -43,6 +43,7 @@ static ProfWin* console; static void _cons_splash_logo(void); +void _show_roster_contacts(GSList *list, gboolean show_groups); ProfWin * cons_create(void) @@ -1307,17 +1308,9 @@ cons_navigation_help(void) } void -cons_show_roster_group(const char * const group, GSList *list) +_show_roster_contacts(GSList *list, gboolean show_groups) { GSList *curr = list; - cons_show(""); - - if (curr != NULL) { - cons_show("%s:", group); - } else { - cons_show("No group named %s exists.", group); - } - while(curr) { PContact contact = curr->data; @@ -1328,10 +1321,24 @@ cons_show_roster_group(const char * const group, GSList *list) title = g_string_append(title, strdup(p_contact_name(contact))); title = g_string_append(title, ")"); } - cons_show(title->str); + + const char *presence = p_contact_presence(contact); + win_print_time(console, '-'); + if (p_contact_subscribed(contact)) { + win_presence_colour_on(console, presence); + wprintw(console->win, "%s\n", title->str); + win_presence_colour_off(console, presence); + } else { + win_presence_colour_on(console, "offline"); + wprintw(console->win, "%s\n", title->str); + win_presence_colour_off(console, "offline"); + } + g_string_free(title, TRUE); - GString *sub = g_string_new(" Subscription : "); + win_print_time(console, '-'); + wprintw(console->win, " Subscription : "); + GString *sub = g_string_new(""); sub = g_string_append(sub, p_contact_subscription(contact)); if (p_contact_pending_out(contact)) { sub = g_string_append(sub, ", request sent"); @@ -1339,12 +1346,54 @@ cons_show_roster_group(const char * const group, GSList *list) if (presence_sub_request_exists(p_contact_barejid(contact))) { sub = g_string_append(sub, ", request received"); } - cons_show(sub->str); + if (p_contact_subscribed(contact)) { + wattron(console->win, COLOUR_SUBSCRIBED); + } else { + wattron(console->win, COLOUR_UNSUBSCRIBED); + } + wprintw(console->win, "%s\n", sub->str); + if (p_contact_subscribed(contact)) { + wattroff(console->win, COLOUR_SUBSCRIBED); + } else { + wattroff(console->win, COLOUR_UNSUBSCRIBED); + } + g_string_free(sub, TRUE); + if (show_groups) { + GSList *groups = p_contact_groups(contact); + if (groups != NULL) { + GString *groups_str = g_string_new(" Groups : "); + while (groups != NULL) { + g_string_append(groups_str, strdup(groups->data)); + if (g_slist_next(groups) != NULL) { + g_string_append(groups_str, ", "); + } + groups = g_slist_next(groups); + } + + cons_show(groups_str->str); + g_string_free(groups_str, TRUE); + } + } + curr = g_slist_next(curr); } +} + +void +cons_show_roster_group(const char * const group, GSList *list) +{ + cons_show(""); + + if (list != NULL) { + cons_show("%s:", group); + } else { + cons_show("No group named %s exists.", group); + } + + _show_roster_contacts(list, FALSE); ui_console_dirty(); cons_alert(); } @@ -1352,52 +1401,10 @@ cons_show_roster_group(const char * const group, GSList *list) void cons_show_roster(GSList *list) { - GSList *curr = list; cons_show(""); cons_show("Roster:"); - while(curr) { - - PContact contact = curr->data; - GString *title = g_string_new(" "); - title = g_string_append(title, p_contact_barejid(contact)); - if (p_contact_name(contact) != NULL) { - title = g_string_append(title, " ("); - title = g_string_append(title, strdup(p_contact_name(contact))); - title = g_string_append(title, ")"); - } - cons_show(title->str); - g_string_free(title, TRUE); - - GString *sub = g_string_new(" Subscription : "); - sub = g_string_append(sub, p_contact_subscription(contact)); - if (p_contact_pending_out(contact)) { - sub = g_string_append(sub, ", request sent"); - } - if (presence_sub_request_exists(p_contact_barejid(contact))) { - sub = g_string_append(sub, ", request received"); - } - cons_show(sub->str); - g_string_free(sub, TRUE); - - GSList *groups = p_contact_groups(contact); - if (groups != NULL) { - GString *groups_str = g_string_new(" Groups : "); - while (groups != NULL) { - g_string_append(groups_str, strdup(groups->data)); - if (g_slist_next(groups) != NULL) { - g_string_append(groups_str, ", "); - } - groups = g_slist_next(groups); - } - - cons_show(groups_str->str); - g_string_free(groups_str, TRUE); - } - - curr = g_slist_next(curr); - } - + _show_roster_contacts(list, TRUE); ui_console_dirty(); cons_alert(); } |