diff options
Diffstat (limited to 'src/ui/console.c')
-rw-r--r-- | src/ui/console.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/ui/console.c b/src/ui/console.c index 95c7d9b0..992ac9b5 100644 --- a/src/ui/console.c +++ b/src/ui/console.c @@ -1240,6 +1240,49 @@ cons_navigation_help(void) } void +cons_show_roster_group(const char * const group, GSList *list) +{ + 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; + 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); + + curr = g_slist_next(curr); + } + + ui_console_dirty(); + cons_alert(); +} + +void cons_show_roster(GSList *list) { GSList *curr = list; @@ -1247,6 +1290,7 @@ cons_show_roster(GSList *list) cons_show("Roster:"); while(curr) { + PContact contact = curr->data; GString *title = g_string_new(" "); title = g_string_append(title, p_contact_barejid(contact)); @@ -1268,6 +1312,22 @@ cons_show_roster(GSList *list) } 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); } |