From 06343d189ea9a58713fff0482b7cb8e48190f8a0 Mon Sep 17 00:00:00 2001
From: alecpl <alec@alec.pl>
Date: Wed, 22 Oct 2008 13:41:22 -0400
Subject: [PATCH] - Added option focus_on_new_message (#1485374)

---
 CHANGELOG                             |    4 ++++
 program/steps/mail/check_recent.inc   |    3 +++
 program/steps/settings/func.inc       |    9 ++++++++-
 program/localization/en_US/labels.inc |    1 +
 program/localization/pl_PL/labels.inc |    1 +
 program/localization/ru_RU/labels.inc |    1 +
 config/main.inc.php.dist              |    3 +++
 program/js/app.js                     |   10 ++++++++++
 program/steps/settings/save_prefs.inc |    1 +
 program/localization/en_GB/labels.inc |    1 +
 10 files changed, 33 insertions(+), 1 deletions(-)

diff --git a/CHANGELOG b/CHANGELOG
index b54a297..e0caecf 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,10 @@
 CHANGELOG RoundCube Webmail
 ---------------------------
 
+2008/10/22 (alec)
+----------
+- Added option focus_on_new_message (#1485374)
+
 2008/10/18 (alec)
 ----------
 - Fix html2text class autoloading on Windows (#1485505)
diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist
index 253c29e..6c5b98a 100644
--- a/config/main.inc.php.dist
+++ b/config/main.inc.php.dist
@@ -355,6 +355,9 @@
 // default setting if preview pane is enabled
 $rcmail_config['preview_pane'] = FALSE;
 
+// focus new window if new message arrives
+$rcmail_config['focus_on_new_message'] = true;
+
 // Clear Trash on logout
 $rcmail_config['logout_purge'] = FALSE;
 
diff --git a/program/js/app.js b/program/js/app.js
index fc99871..6994d18 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -3582,6 +3582,16 @@
       }
     };
 
+  // notifies that a new message(s) has hit the mailbox
+  this.new_message_focus = function()
+    {
+    // focus main window
+    if (this.env.framed && window.parent)
+      window.parent.focus();
+    else
+      window.focus();
+    }
+
   // add row to contacts list
   this.add_contact_row = function(cid, cols, select)
     {
diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc
index f8f19d3..48656c2 100644
--- a/program/localization/en_GB/labels.inc
+++ b/program/localization/en_GB/labels.inc
@@ -232,6 +232,7 @@
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
 $labels['2047folding'] = 'Full RFC 2047 (other)';
 $labels['advancedoptions'] = 'Advanced options';
+$labels['focusonnewmessage'] = 'Focus browser window on new message';
 $labels['messagesdisplaying'] = 'Displaying Messages';
 $labels['messagescomposition'] = 'Composing Messages';
 $labels['folder'] = 'Folder';
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 1fdf753..904450b 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -290,6 +290,7 @@
 $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
 $labels['2047folding'] = 'Full RFC 2047 (other)';
 $labels['advancedoptions'] = 'Advanced options';
+$labels['focusonnewmessage'] = 'Focus browser window on new message';
 
 $labels['folder']  = 'Folder';
 $labels['folders']  = 'Folders';
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index d8c94f4..ecf430f 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -231,6 +231,7 @@
 $labels['autosavedraft'] = 'Automatyczny zapis tworzonej wiadomości';
 $labels['everynminutes'] = 'co $n minut';
 $labels['never'] = 'nigdy';
+$labels['focusonnewmessage'] = 'Informuj przeglądarkę o nowej wiadomości';
 $labels['folder'] = 'Folder';
 $labels['folders'] = 'Foldery';
 $labels['foldername'] = 'Nazwa folderu';
diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc
index 17a2a8a..9578844 100644
--- a/program/localization/ru_RU/labels.inc
+++ b/program/localization/ru_RU/labels.inc
@@ -237,6 +237,7 @@
 $labels['miscfolding'] = 'RFC 2047/2231  (наибольшая совместимость)';
 $labels['2047folding'] = 'RFC 2047  (для старых программ)';
 $labels['advancedoptions'] = 'Дополнительные настройки';
+$labels['focusonnewmessage'] = 'Фокусировать окно браузера при новом сообщении';
 $labels['folder'] = 'Папка';
 $labels['folders'] = 'Папки';
 $labels['foldername'] = 'Имя папки';
diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index e84d7ba..07313c1 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -41,6 +41,9 @@
       $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text());
       $OUTPUT->command('set_quota', rcmail_quota_content($IMAP->get_quota()));
 
+      if (rcmail::get_instance()->config->get('focus_on_new_message',true))
+        $OUTPUT->command('new_message_focus');
+
       // add new message headers to list
       $a_headers = array();
       for ($i=$recent_count, $id=$count_all-$recent_count+1; $i>0; $i--, $id++)
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 6e8c6b5..1b28d3b 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -148,6 +148,13 @@
   
   $table = new html_table(array('cols' => 2));
 
+  if (!isset($no_override['focus_on_new_message'])) {
+    $field_id = 'rcmfd_focus_on_new_message';
+    $input_focus_on_new_message = new html_checkbox(array('name' => '_focus_on_new_message', 'id' => $field_id, 'value' => 1));
+    $table->add('title', html::label($field_id, Q(rcube_label('focusonnewmessage'))));
+    $table->add(null, $input_focus_on_new_message->show($config['focus_on_new_message']?1:0));
+  }
+
   // show config parameter for preview pane
   if (!isset($no_override['preview_pane'])) {
     $field_id = 'rcmfd_preview';
@@ -294,7 +301,7 @@
     $table->add('title', html::label($field_id, Q(rcube_label('skipdeleted'))));
     $table->add(null, $input_purge->show($config['skip_deleted']?1:0));
   }
-  
+
   // Trash purging on logout
   if (!isset($no_override['logout_purge'])) {
     $field_id = 'rcmfd_logout_purge';
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index beeb1df..3f6328d 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -30,6 +30,7 @@
   'htmleditor'   => isset($_POST['_htmleditor']) ? TRUE : FALSE,
   'inline_images'   => isset($_POST['_inline_images']) ? TRUE : FALSE,
   'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE,
+  'focus_on_new_message' => isset($_POST['_focus_on_new_message']) ? TRUE : FALSE,
   'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE,
   'skip_deleted' => isset($_POST['_skip_deleted']) ? TRUE : FALSE,
   'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? TRUE : FALSE,

--
Gitblit v1.9.1