about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2013-04-27 22:39:51 +0100
committerJames Booth <boothj5@gmail.com>2013-04-27 22:39:51 +0100
commite02ab52a4e48832a97af77ec402a67dc5d7fbf17 (patch)
treed208fe3ac2acef238c8190298d0be0dd83f64ed9 /src
parent070c3ae6cc1a0282b3d2e3fe277994eaa734f972 (diff)
downloadprofani-tty-e02ab52a4e48832a97af77ec402a67dc5d7fbf17.tar.gz
Only set autoaway when status is "online" or "chat"
fixes #122
Diffstat (limited to 'src')
-rw-r--r--src/profanity.c57
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);
             }
         }