void cons_show_account_list(gchar **accounts) { int size = g_strv_length(accounts); if (size > 0) { cons_show("Accounts:"); int i = 0; for (i = 0; i < size; i++) { if ((jabber_get_connection_status() == JABBER_CONNECTED) && (g_strcmp0(jabber_get_account_name(), accounts[i]) == 0)) { resource_presence_t presence = accounts_get_last_presence(accounts[i]); win_print_time(console, '-'); win_presence_colour_on(console, string_from_resource_presence(presence)); wprintw(console->win, "%s\n", accounts[i]); win_presence_colour_off(console, string_from_resource_presence(presence)); } else { cons_show(accounts[i]); } } cons_show(""); } else { cons_show("No accounts created yet."); cons_show(""); } ui_console_dirty(); cons_alert(); }
void cons_show_software_version(const char * const jid, const char * const presence, const char * const name, const char * const version, const char * const os) { if ((name != NULL) || (version != NULL) || (os != NULL)) { cons_show(""); win_print_time(console, '-'); win_presence_colour_on(console, presence); wprintw(console->win, "%s", jid); win_presence_colour_off(console, presence); wprintw(console->win, ":\n"); } if (name != NULL) { cons_show("Name : %s", name); } if (version != NULL) { cons_show("Version : %s", version); } if (os != NULL) { cons_show("OS : %s", os); } ui_console_dirty(); cons_alert(); }
void ui_room_roster(const char * const room, GList *roster, const char * const presence) { ProfWin *window = wins_get_by_recipient(room); win_print_time(window, '!'); if ((roster == NULL) || (g_list_length(roster) == 0)) { wattron(window->win, COLOUR_ROOMINFO); if (presence == NULL) { wprintw(window->win, "Room is empty.\n"); } else { wprintw(window->win, "No participants %s.\n", presence); } wattroff(window->win, COLOUR_ROOMINFO); } else { int length = g_list_length(roster); wattron(window->win, COLOUR_ROOMINFO); if (presence == NULL) { length++; wprintw(window->win, "%d participants: ", length); wattroff(window->win, COLOUR_ROOMINFO); wattron(window->win, COLOUR_ONLINE); wprintw(window->win, "%s", muc_get_room_nick(room)); wprintw(window->win, ", "); } else { wprintw(window->win, "%d %s: ", length, presence); wattroff(window->win, COLOUR_ROOMINFO); wattron(window->win, COLOUR_ONLINE); } while (roster != NULL) { PContact member = roster->data; const char const *nick = p_contact_barejid(member); const char const *show = p_contact_presence(member); win_presence_colour_on(window, show); wprintw(window->win, "%s", nick); win_presence_colour_off(window, show); if (roster->next != NULL) { wprintw(window->win, ", "); } roster = g_list_next(roster); } wprintw(window->win, "\n"); wattroff(window->win, COLOUR_ONLINE); } if (wins_is_current(window)) { wins_refresh_current(); } }
void win_show_contact(ProfWin *window, PContact contact) { const char *barejid = p_contact_barejid(contact); const char *name = p_contact_name(contact); const char *presence = p_contact_presence(contact); const char *status = p_contact_status(contact); GDateTime *last_activity = p_contact_last_activity(contact); win_print_time(window, '-'); win_presence_colour_on(window, presence); if (name != NULL) { wprintw(window->win, "%s", name); } else { wprintw(window->win, "%s", barejid); } wprintw(window->win, " is %s", presence); if (last_activity != NULL) { GDateTime *now = g_date_time_new_now_local(); GTimeSpan span = g_date_time_difference(now, last_activity); wprintw(window->win, ", idle "); int hours = span / G_TIME_SPAN_HOUR; span = span - hours * G_TIME_SPAN_HOUR; if (hours > 0) { wprintw(window->win, "%dh", hours); } int minutes = span / G_TIME_SPAN_MINUTE; span = span - minutes * G_TIME_SPAN_MINUTE; wprintw(window->win, "%dm", minutes); int seconds = span / G_TIME_SPAN_SECOND; wprintw(window->win, "%ds", seconds); } if (status != NULL) { wprintw(window->win, ", \"%s\"", p_contact_status(contact)); } wprintw(window->win, "\n"); win_presence_colour_off(window, presence); }
void cons_show_login_success(ProfAccount *account) { win_print_time(console, '-'); wprintw(console->win, "%s logged in successfully, ", account->jid); resource_presence_t presence = accounts_get_login_presence(account->name); const char *presence_str = string_from_resource_presence(presence); win_presence_colour_on(console, presence_str); wprintw(console->win, "%s", presence_str); win_presence_colour_off(console, presence_str); wprintw(console->win, " (priority %d)", accounts_get_priority_for_presence_type(account->name, presence)); wprintw(console->win, ".\n"); ui_console_dirty(); cons_alert(); }
void win_show_info(ProfWin *window, PContact contact) { const char *barejid = p_contact_barejid(contact); const char *name = p_contact_name(contact); const char *presence = p_contact_presence(contact); const char *sub = p_contact_subscription(contact); GList *resources = p_contact_get_available_resources(contact); GList *ordered_resources = NULL; GDateTime *last_activity = p_contact_last_activity(contact); WINDOW *win = window->win; win_print_time(window, '-'); wprintw(win, "\n"); win_print_time(window, '-'); win_presence_colour_on(window, presence); wprintw(win, "%s", barejid); if (name != NULL) { wprintw(win, " (%s)", name); } win_presence_colour_off(window, presence); wprintw(win, ":\n"); if (sub != NULL) { win_print_time(window, '-'); wprintw(win, "Subscription: %s\n", sub); } if (last_activity != NULL) { GDateTime *now = g_date_time_new_now_local(); GTimeSpan span = g_date_time_difference(now, last_activity); win_print_time(window, '-'); wprintw(win, "Last activity: "); int hours = span / G_TIME_SPAN_HOUR; span = span - hours * G_TIME_SPAN_HOUR; if (hours > 0) { wprintw(win, "%dh", hours); } int minutes = span / G_TIME_SPAN_MINUTE; span = span - minutes * G_TIME_SPAN_MINUTE; wprintw(win, "%dm", minutes); int seconds = span / G_TIME_SPAN_SECOND; wprintw(win, "%ds", seconds); wprintw(win, "\n"); g_date_time_unref(now); } if (resources != NULL) { win_print_time(window, '-'); wprintw(win, "Resources:\n"); // sort in order of availabiltiy while (resources != NULL) { Resource *resource = resources->data; ordered_resources = g_list_insert_sorted(ordered_resources, resource, (GCompareFunc)resource_compare_availability); resources = g_list_next(resources); } } while (ordered_resources != NULL) { Resource *resource = ordered_resources->data; const char *resource_presence = string_from_resource_presence(resource->presence); win_print_time(window, '-'); win_presence_colour_on(window, resource_presence); wprintw(win, " %s (%d), %s", resource->name, resource->priority, resource_presence); if (resource->status != NULL) { wprintw(win, ", \"%s\"", resource->status); } wprintw(win, "\n"); win_presence_colour_off(window, resource_presence); if (resource->caps_str != NULL) { Capabilities *caps = caps_get(resource->caps_str); if (caps != NULL) { // show identity if ((caps->category != NULL) || (caps->type != NULL) || (caps->name != NULL)) { win_print_time(window, '-'); wprintw(win, " Identity: "); if (caps->name != NULL) { wprintw(win, "%s", caps->name); if ((caps->category != NULL) || (caps->type != NULL)) { wprintw(win, " "); } } if (caps->type != NULL) { wprintw(win, "%s", caps->type); if (caps->category != NULL) { wprintw(win, " "); } } if (caps->category != NULL) { wprintw(win, "%s", caps->category); } wprintw(win, "\n"); } if (caps->software != NULL) { win_print_time(window, '-'); wprintw(win, " Software: %s", caps->software); } if (caps->software_version != NULL) { wprintw(win, ", %s", caps->software_version); } if ((caps->software != NULL) || (caps->software_version != NULL)) { wprintw(win, "\n"); } if (caps->os != NULL) { win_print_time(window, '-'); wprintw(win, " OS: %s", caps->os); } if (caps->os_version != NULL) { wprintw(win, ", %s", caps->os_version); } if ((caps->os != NULL) || (caps->os_version != NULL)) { wprintw(win, "\n"); } } } ordered_resources = g_list_next(ordered_resources); } }
void cons_show_account(ProfAccount *account) { cons_show(""); cons_show("Account %s:", account->name); if (account->enabled) { cons_show ("enabled : TRUE"); } else { cons_show ("enabled : FALSE"); } cons_show ("jid : %s", account->jid); if (account->resource != NULL) { cons_show ("resource : %s", account->resource); } if (account->server != NULL) { cons_show ("server : %s", account->server); } if (account->last_presence != NULL) { cons_show ("Last presence : %s", account->last_presence); } if (account->login_presence != NULL) { cons_show ("Login presence : %s", account->login_presence); } cons_show ("Priority : chat:%d, online:%d, away:%d, xa:%d, dnd:%d", account->priority_chat, account->priority_online, account->priority_away, account->priority_xa, account->priority_dnd); if ((jabber_get_connection_status() == JABBER_CONNECTED) && (g_strcmp0(jabber_get_account_name(), account->name) == 0)) { GList *resources = jabber_get_available_resources(); GList *ordered_resources = NULL; WINDOW *win = console->win; if (resources != NULL) { win_print_time(console, '-'); wprintw(win, "Resources:\n"); // sort in order of availabiltiy while (resources != NULL) { Resource *resource = resources->data; ordered_resources = g_list_insert_sorted(ordered_resources, resource, (GCompareFunc)resource_compare_availability); resources = g_list_next(resources); } } while (ordered_resources != NULL) { Resource *resource = ordered_resources->data; const char *resource_presence = string_from_resource_presence(resource->presence); win_print_time(console, '-'); win_presence_colour_on(console, resource_presence); wprintw(win, " %s (%d), %s", resource->name, resource->priority, resource_presence); if (resource->status != NULL) { wprintw(win, ", \"%s\"", resource->status); } wprintw(win, "\n"); win_presence_colour_off(console, resource_presence); if (resource->caps_str != NULL) { Capabilities *caps = caps_get(resource->caps_str); if (caps != NULL) { // show identity if ((caps->category != NULL) || (caps->type != NULL) || (caps->name != NULL)) { win_print_time(console, '-'); wprintw(win, " Identity: "); if (caps->name != NULL) { wprintw(win, "%s", caps->name); if ((caps->category != NULL) || (caps->type != NULL)) { wprintw(win, " "); } } if (caps->type != NULL) { wprintw(win, "%s", caps->type); if (caps->category != NULL) { wprintw(win, " "); } } if (caps->category != NULL) { wprintw(win, "%s", caps->category); } wprintw(win, "\n"); } if (caps->software != NULL) { win_print_time(console, '-'); wprintw(win, " Software: %s", caps->software); } if (caps->software_version != NULL) { wprintw(win, ", %s", caps->software_version); } if ((caps->software != NULL) || (caps->software_version != NULL)) { wprintw(win, "\n"); } if (caps->os != NULL) { win_print_time(console, '-'); wprintw(win, " OS: %s", caps->os); } if (caps->os_version != NULL) { wprintw(win, ", %s", caps->os_version); } if ((caps->os != NULL) || (caps->os_version != NULL)) { wprintw(win, "\n"); } } } ordered_resources = g_list_next(ordered_resources); } } ui_console_dirty(); cons_alert(); }
void cons_show_caps(const char * const contact, Resource *resource) { WINDOW *win = console->win; cons_show(""); const char *resource_presence = string_from_resource_presence(resource->presence); win_print_time(console, '-'); win_presence_colour_on(console, resource_presence); wprintw(console->win, "%s", contact); win_presence_colour_off(console, resource_presence); wprintw(win, ":\n"); if (resource->caps_str != NULL) { Capabilities *caps = caps_get(resource->caps_str); if (caps != NULL) { // show identity if ((caps->category != NULL) || (caps->type != NULL) || (caps->name != NULL)) { win_print_time(console, '-'); wprintw(win, "Identity: "); if (caps->name != NULL) { wprintw(win, "%s", caps->name); if ((caps->category != NULL) || (caps->type != NULL)) { wprintw(win, " "); } } if (caps->type != NULL) { wprintw(win, "%s", caps->type); if (caps->category != NULL) { wprintw(win, " "); } } if (caps->category != NULL) { wprintw(win, "%s", caps->category); } wprintw(win, "\n"); } if (caps->software != NULL) { win_print_time(console, '-'); wprintw(win, "Software: %s", caps->software); } if (caps->software_version != NULL) { wprintw(win, ", %s", caps->software_version); } if ((caps->software != NULL) || (caps->software_version != NULL)) { wprintw(win, "\n"); } if (caps->os != NULL) { win_print_time(console, '-'); wprintw(win, "OS: %s", caps->os); } if (caps->os_version != NULL) { wprintw(win, ", %s", caps->os_version); } if ((caps->os != NULL) || (caps->os_version != NULL)) { wprintw(win, "\n"); } if (caps->features != NULL) { win_print_time(console, '-'); wprintw(win, "Features:\n"); GSList *feature = caps->features; while (feature != NULL) { win_print_time(console, '-'); wprintw(win, " %s\n", feature->data); feature = g_slist_next(feature); } } } } ui_console_dirty(); cons_alert(); }
void _show_roster_contacts(GSList *list, gboolean show_groups) { GSList *curr = list; 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, p_contact_name(contact)); title = g_string_append(title, ")"); } 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); 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"); } if (presence_sub_request_exists(p_contact_barejid(contact))) { sub = g_string_append(sub, ", request received"); } 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, 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); } }