From 6d67255a5d604217a7f8e4ef3783b8fb199f6946 Mon Sep 17 00:00:00 2001
From: Thomas Bruederli <thomas@roundcube.net>
Date: Fri, 22 Nov 2013 05:15:37 -0500
Subject: [PATCH] Remember compose-options collapse status and display them by default; Use abstracted functions to read and set UI settings. To be replaced with local storage...

---
 skins/larry/ui.js |   46 +++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 39 insertions(+), 7 deletions(-)

diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index 75dcba8..7cc7954 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -44,11 +44,13 @@
   this.show_header_row = show_header_row;
   this.hide_header_row = hide_header_row;
   this.update_quota = update_quota;
+  this.get_pref = get_pref;
+  this.save_pref = save_pref;
 
 
   // set minimal mode on small screens (don't wait for document.ready)
   if (window.$ && document.body) {
-    var minmode = rcmail.get_cookie('minimalmode');
+    var minmode = get_pref('minimalmode');
     if (parseInt(minmode) || (minmode === null && $(window).height() < 850)) {
       $(document.body).addClass('minimal');
     }
@@ -68,6 +70,24 @@
   }
 
   /**
+   * Get preference stored in browser
+   */
+  function get_pref(key)
+  {
+    return rcmail.get_cookie(key);
+  }
+
+  /**
+   * Saves preference value to browser storage
+   */
+  function save_pref(key, val)
+  {
+    var exp = new Date();
+    exp.setYear(exp.getFullYear() + 1);
+    rcmail.set_cookie(key, val, exp);
+  }
+
+  /**
    * Initialize UI
    * Called on document.ready
    */
@@ -82,7 +102,7 @@
 
     $('#taskbar .minmodetoggle').click(function(e){
       var ismin = $(document.body).toggleClass('minimal').hasClass('minimal');
-      rcmail.set_cookie('minimalmode', ismin?1:0);
+      save_pref('minimalmode', ismin?1:0);
       $(window).resize();
     });
 
@@ -133,8 +153,13 @@
           $('#composeoptionstoggle').toggleClass('remove');
           $('#composeoptions').toggle();
           layout_composeview();
+          save_pref('composeoptions', $('#composeoptions').is(':visible') ? '1' : '0');
           return false;
         }).css('cursor', 'pointer');
+
+        if (get_pref('composeoptions') !== '0') {
+          $('#composeoptionstoggle').click();
+        }
 
         // adjust hight when textarea starts to scroll
         $("textarea[name='_to'], textarea[name='_cc'], textarea[name='_bcc']").change(function(e){ adjust_compose_editfields(this); }).change();
@@ -605,7 +630,7 @@
     var button = $(e.target),
       frame = $('#mailpreviewframe'),
       visible = !frame.is(':visible'),
-      splitter = mailviewsplit.pos || parseInt(rcmail.get_cookie('mailviewsplitter') || 320),
+      splitter = mailviewsplit.pos || parseInt(get_pref('mailviewsplitter') || 320),
       topstyles, bottomstyles, uid;
 
     frame.toggle();
@@ -1178,7 +1203,7 @@
       $(window).resize(onResize);
 
     // read saved position from cookie
-    var cookie = rcmail.get_cookie(this.id);
+    var cookie = this.get_cookie();
     if (cookie && !isNaN(cookie)) {
       this.pos = parseFloat(cookie);
       this.resize();
@@ -1333,13 +1358,20 @@
   };
 
   /**
+   * Get saved splitter position from cookie
+   */
+  this.get_cookie = function()
+  {
+    return window.UI ? UI.get_pref(this.id) : null;
+  };
+
+  /**
    * Saves splitter position in cookie
    */
   this.set_cookie = function()
   {
-    var exp = new Date();
-    exp.setYear(exp.getFullYear() + 1);
-    rcmail.set_cookie(this.id, this.pos, exp);
+    if (window.UI)
+      UI.save_pref(this.id, this.pos);
   };
 
 } // end class rcube_splitter

--
Gitblit v1.9.1