From 7a32e9c7e82a884d58ec2774d0148e5075a4791c Mon Sep 17 00:00:00 2001
From: thomascube <thomas@roundcube.net>
Date: Wed, 29 Feb 2012 03:44:16 -0500
Subject: [PATCH] Decorate search filter drop-down with a more Larry like style

---
 skins/larry/templates/mail.html |    2 
 skins/larry/styles.css          |   22 +++++++++--
 skins/larry/ui.js               |   38 +++++++++++++++----
 3 files changed, 49 insertions(+), 13 deletions(-)

diff --git a/skins/larry/styles.css b/skins/larry/styles.css
index 494a992..ab70453 100644
--- a/skins/larry/styles.css
+++ b/skins/larry/styles.css
@@ -66,10 +66,6 @@
 	color: #aaa;
 }
 
-select.selector {
-	padding: 2px 4px;
-}
-
 .bold {
 	font-weight: bold;
 }
@@ -1446,6 +1442,24 @@
 	text-decoration: none;
 }
 
+a.dropdownselector {
+	position: absolute;
+	z-index: 1;
+}
+
+select.decorated {
+	position: relative;
+	z-index: 10;
+	opacity: 0;
+	-khtml-appearance: none;
+	padding: 2px 4px;
+	cursor: pointer;
+}
+
+html.opera select.decorated {
+	opacity: 1;
+}
+
 
 /*** popup menus ***/
 
diff --git a/skins/larry/templates/mail.html b/skins/larry/templates/mail.html
index cb1e165..ca4ea4b 100644
--- a/skins/larry/templates/mail.html
+++ b/skins/larry/templates/mail.html
@@ -45,7 +45,7 @@
 
 <!-- search filter -->
 <div id="searchfilter">
-	<roundcube:object name="searchfilter" class="searchfilter selector" />
+	<roundcube:object name="searchfilter" class="searchfilter decorated" />
 </div>
 
 <!-- toolbar -->
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index aed41bb..5e12186 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -173,15 +173,37 @@
     // turn a group of fieldsets into tabs
     $('.tabbed').each(function(idx, elem){ init_tabs(elem); })
 
-    $(document.body).bind('mouseup', body_mouseup)
-    .bind('keyup', function(e){
-      if (e.keyCode == 27) {
-        for (var id in popups) {
-          if (popups[id].is(':visible'))
-            show_popup(id, false);
+    // decorate select elements
+    if (!bw.opera) {
+      $('select.decorated').each(function(){
+        var title = $('option', this).first().text();
+        if ($('option:selected', this).val() != '')
+          title = $('option:selected', this).text();
+        var select = $(this)
+          .change(function(){
+            var val = $('option:selected', this).text();
+            $(this).next().children().html(val);
+          });
+
+        $('<a class="menuselector dropdownselector"><span class="handle">' + title + '</span></a>')
+          .offset(select.position())
+          .insertAfter(select)
+          .children().width(select.width() - 5);
+
+        select.parent().css('position', 'relative');
+      });
+    }
+
+    $(document.body)
+      .bind('mouseup', body_mouseup)
+      .bind('keyup', function(e){
+        if (e.keyCode == 27) {
+          for (var id in popups) {
+            if (popups[id].is(':visible'))
+              show_popup(id, false);
+          }
         }
-      }
-    });
+      });
 
     $('iframe').load(function(e){
       // this = iframe

--
Gitblit v1.9.1