void ui_handle_login_account_success(ProfAccount *account, gboolean secured) { if (account->theme) { if (theme_load(account->theme)) { ui_load_colours(); if (prefs_get_boolean(PREF_ROSTER)) { ui_show_roster(); } else { ui_hide_roster(); } if (prefs_get_boolean(PREF_OCCUPANTS)) { ui_show_all_room_rosters(); } else { ui_hide_all_room_rosters(); } ui_resize(); } else { cons_show("Couldn't find account theme: %s", account->theme); } } resource_presence_t resource_presence = accounts_get_login_presence(account->name); contact_presence_t contact_presence = contact_presence_from_resource_presence(resource_presence); cons_show_login_success(account, secured); title_bar_set_presence(contact_presence); title_bar_set_connected(TRUE); title_bar_set_tls(secured); status_bar_print_message(connection_get_fulljid()); status_bar_update_virtual(); }
void ui_disconnected(void) { wins_lost_connection(); title_bar_set_connected(FALSE); title_bar_set_tls(FALSE); title_bar_set_presence(CONTACT_OFFLINE); status_bar_clear_message(); status_bar_update_virtual(); ui_hide_roster(); }
static void _create_title_bar(void) { int cols = getmaxx(stdscr); win = newwin(1, cols, 0, 0); wbkgd(win, COLOUR_TITLE_TEXT); title_bar_console(); title_bar_set_presence(CONTACT_OFFLINE); wnoutrefresh(win); inp_put_back(); }
void ui_update_presence(const resource_presence_t resource_presence, const char *const message, const char *const show) { contact_presence_t contact_presence = contact_presence_from_resource_presence(resource_presence); title_bar_set_presence(contact_presence); gint priority = accounts_get_priority_for_presence_type(session_get_account_name(), resource_presence); if (message) { cons_show("Status set to %s (priority %d), \"%s\".", show, priority, message); } else { cons_show("Status set to %s (priority %d).", show, priority); } }
void create_title_bar(void) { int cols = getmaxx(stdscr); int row = screen_titlebar_row(); win = newwin(1, cols, row, 0); wbkgd(win, theme_attrs(THEME_TITLE_TEXT)); title_bar_console(); title_bar_set_presence(CONTACT_OFFLINE); title_bar_set_tls(FALSE); title_bar_set_connected(FALSE); wnoutrefresh(win); inp_put_back(); }
void handle_login_account_success(char *account_name) { ProfAccount *account = accounts_get_account(account_name); #ifdef HAVE_LIBOTR otr_on_connect(account); #endif resource_presence_t resource_presence = accounts_get_login_presence(account->name); contact_presence_t contact_presence = contact_presence_from_resource_presence(resource_presence); cons_show_login_success(account); title_bar_set_presence(contact_presence); log_info("%s logged in successfully", account->jid); ui_current_page_off(); status_bar_print_message(account->jid); status_bar_refresh(); accounts_free_account(account); }
static void _handle_idle_time() { gint prefs_time = prefs_get_autoaway_time() * 60000; resource_presence_t current_presence = accounts_get_last_presence(jabber_get_account_name()); unsigned long idle_ms = ui_get_idle_time(); if (!idle) { if ((current_presence == RESOURCE_ONLINE) || (current_presence == RESOURCE_CHAT)) { if (idle_ms >= prefs_time) { idle = TRUE; // handle away mode if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "away") == 0) { presence_update(RESOURCE_AWAY, prefs_get_string(PREF_AUTOAWAY_MESSAGE), 0); if (prefs_get_string(PREF_AUTOAWAY_MESSAGE) != NULL) { int pri = accounts_get_priority_for_presence_type(jabber_get_account_name(), RESOURCE_AWAY); cons_show("Idle for %d minutes, status set to away (priority %d), \"%s\".", prefs_get_autoaway_time(), pri, prefs_get_string(PREF_AUTOAWAY_MESSAGE)); title_bar_set_presence(CONTACT_AWAY); ui_current_page_off(); } else { int pri = accounts_get_priority_for_presence_type(jabber_get_account_name(), RESOURCE_AWAY); cons_show("Idle for %d minutes, status set to away (priority %d).", prefs_get_autoaway_time(), pri); title_bar_set_presence(CONTACT_AWAY); ui_current_page_off(); } // handle idle mode } else if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "idle") == 0) { presence_update(RESOURCE_ONLINE, prefs_get_string(PREF_AUTOAWAY_MESSAGE), idle_ms / 1000); } } } } else { if (idle_ms < prefs_time) { idle = FALSE; // handle check if (prefs_get_boolean(PREF_AUTOAWAY_CHECK)) { if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "away") == 0) { presence_update(RESOURCE_ONLINE, NULL, 0); int pri = accounts_get_priority_for_presence_type(jabber_get_account_name(), RESOURCE_ONLINE); cons_show("No longer idle, status set to online (priority %d).", pri); title_bar_set_presence(CONTACT_ONLINE); ui_current_page_off(); } else if (strcmp(prefs_get_string(PREF_AUTOAWAY_MODE), "idle") == 0) { presence_update(RESOURCE_ONLINE, NULL, 0); title_bar_set_presence(CONTACT_ONLINE); } } } } }
static void _check_autoaway(void) { jabber_conn_status_t conn_status = jabber_get_connection_status(); if (conn_status != JABBER_CONNECTED) { return; } char *mode = prefs_get_string(PREF_AUTOAWAY_MODE); gboolean check = prefs_get_boolean(PREF_AUTOAWAY_CHECK); gint away_time = prefs_get_autoaway_time(); gint xa_time = prefs_get_autoxa_time(); int away_time_ms = away_time * 60000; int xa_time_ms = xa_time * 60000; char *account = jabber_get_account_name(); resource_presence_t curr_presence = accounts_get_last_presence(account); char *curr_status = accounts_get_last_status(account); unsigned long idle_ms = ui_get_idle_time(); switch (activity_state) { case ACTIVITY_ST_ACTIVE: if (idle_ms >= away_time_ms) { if (g_strcmp0(mode, "away") == 0) { if ((curr_presence == RESOURCE_ONLINE) || (curr_presence == RESOURCE_CHAT) || (curr_presence == RESOURCE_DND)) { activity_state = ACTIVITY_ST_AWAY; // save current presence saved_presence = curr_presence; if (saved_status) { free(saved_status); } saved_status = curr_status; // send away presence with last activity char *message = prefs_get_string(PREF_AUTOAWAY_MESSAGE); if (prefs_get_boolean(PREF_LASTACTIVITY)) { cl_ev_presence_send(RESOURCE_AWAY, message, idle_ms / 1000); } else { cl_ev_presence_send(RESOURCE_AWAY, message, 0); } int pri = accounts_get_priority_for_presence_type(account, RESOURCE_AWAY); if (message) { cons_show("Idle for %d minutes, status set to away (priority %d), \"%s\".", away_time, pri, message); } else { cons_show("Idle for %d minutes, status set to away (priority %d).", away_time, pri); } prefs_free_string(message); title_bar_set_presence(CONTACT_AWAY); } } else if (g_strcmp0(mode, "idle") == 0) { activity_state = ACTIVITY_ST_IDLE; // send current presence with last activity cl_ev_presence_send(curr_presence, curr_status, idle_ms / 1000); } } break; case ACTIVITY_ST_IDLE: if (check && (idle_ms < away_time_ms)) { activity_state = ACTIVITY_ST_ACTIVE; cons_show("No longer idle."); // send current presence without last activity cl_ev_presence_send(curr_presence, curr_status, 0); } break; case ACTIVITY_ST_AWAY: if (xa_time_ms > 0 && (idle_ms >= xa_time_ms)) { activity_state = ACTIVITY_ST_XA; // send extended away presence with last activity char *message = prefs_get_string(PREF_AUTOXA_MESSAGE); if (prefs_get_boolean(PREF_LASTACTIVITY)) { cl_ev_presence_send(RESOURCE_XA, message, idle_ms / 1000); } else { cl_ev_presence_send(RESOURCE_XA, message, 0); } int pri = accounts_get_priority_for_presence_type(account, RESOURCE_XA); if (message) { cons_show("Idle for %d minutes, status set to xa (priority %d), \"%s\".", xa_time, pri, message); } else { cons_show("Idle for %d minutes, status set to xa (priority %d).", xa_time, pri); } prefs_free_string(message); title_bar_set_presence(CONTACT_XA); } else if (check && (idle_ms < away_time_ms)) { activity_state = ACTIVITY_ST_ACTIVE; cons_show("No longer idle."); // send saved presence without last activity cl_ev_presence_send(saved_presence, saved_status, 0); contact_presence_t contact_pres = contact_presence_from_resource_presence(saved_presence); title_bar_set_presence(contact_pres); } break; case ACTIVITY_ST_XA: if (check && (idle_ms < away_time_ms)) { activity_state = ACTIVITY_ST_ACTIVE; cons_show("No longer idle."); // send saved presence without last activity cl_ev_presence_send(saved_presence, saved_status, 0); contact_presence_t contact_pres = contact_presence_from_resource_presence(saved_presence); title_bar_set_presence(contact_pres); } break; } prefs_free_string(mode); }