diff options
-rw-r--r-- | src/profanity.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/src/profanity.c b/src/profanity.c index f56a296b..4fcf045f 100644 --- a/src/profanity.c +++ b/src/profanity.c @@ -172,19 +172,35 @@ _check_autoaway() return; } - gint prefs_time = prefs_get_autoaway_time() * 60000; + gint autoaway_time = prefs_get_autoaway_time() * 60000; unsigned long idle_ms = ui_get_idle_time(); char *pref_autoaway_mode = prefs_get_string(PREF_AUTOAWAY_MODE); + if (idle) { + if (idle_ms < autoaway_time) { + idle = FALSE; - if (!idle) { - resource_presence_t current_presence = accounts_get_last_presence(jabber_get_account_name()); + // handle check + if (prefs_get_boolean(PREF_AUTOAWAY_CHECK)) { + if (strcmp(pref_autoaway_mode, "away") == 0) { + cl_ev_presence_send(autoaway_pre_presence, NULL, 0); + ui_end_auto_away(autoaway_pre_presence); + } else if (strcmp(pref_autoaway_mode, "idle") == 0) { + cl_ev_presence_send(autoaway_pre_presence, NULL, 0); + contact_presence_t contact_presence = contact_presence_from_resource_presence(autoaway_pre_presence); + ui_titlebar_presence(contact_presence); + } + } + } + } else { + char *account_name = jabber_get_account_name(); + resource_presence_t current_presence = accounts_get_last_presence(account_name); autoaway_pre_presence = current_presence; if ((current_presence == RESOURCE_ONLINE) || (current_presence == RESOURCE_CHAT) || (current_presence == RESOURCE_DND)) { - if (idle_ms >= prefs_time) { + if (idle_ms >= autoaway_time) { idle = TRUE; char *pref_autoaway_message = prefs_get_string(PREF_AUTOAWAY_MESSAGE); @@ -197,24 +213,6 @@ _check_autoaway() } else if (strcmp(pref_autoaway_mode, "idle") == 0) { cl_ev_presence_send(current_presence, pref_autoaway_message, idle_ms / 1000); } - - prefs_free_string(pref_autoaway_message); - } - } - - } else { - if (idle_ms < prefs_time) { - idle = FALSE; - - // handle check - if (prefs_get_boolean(PREF_AUTOAWAY_CHECK)) { - if (strcmp(pref_autoaway_mode, "away") == 0) { - cl_ev_presence_send(autoaway_pre_presence, NULL, 0); - ui_end_auto_away(autoaway_pre_presence); - } else if (strcmp(pref_autoaway_mode, "idle") == 0) { - cl_ev_presence_send(autoaway_pre_presence, NULL, 0); - ui_titlebar_presence(contact_presence_from_resource_presence(autoaway_pre_presence)); - } } } } |