diff options
-rw-r--r-- | src/profanity.c | 57 |
1 files changed, 30 insertions, 27 deletions
diff --git a/src/profanity.c b/src/profanity.c index 61e540c0..9b4e4ad7 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -482,37 +482,40 @@ 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 (idle_ms >= prefs_time) { - idle = TRUE; + 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_status(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_status(CONTACT_AWAY); - ui_current_page_off(); + // 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_status(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_status(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); } - - // 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); } } |