Index: /trunk/roundcubemail/program/steps/settings/func.inc
===================================================================
--- /trunk/roundcubemail/program/steps/settings/func.inc	(revision 1539)
+++ /trunk/roundcubemail/program/steps/settings/func.inc	(revision 1540)
@@ -146,4 +146,37 @@
     }
 
+  // show drop-down for available skins
+  if (!isset($no_override['skin']))
+    {
+    $skins = rcmail_get_skins();
+
+    if (count($skins) > 1)
+      {
+      $field_id = 'rcmfd_skin';
+      $input_skin = new html_select(array('name'=>'_skin', 'id'=>$field_id));
+      
+      foreach($skins as $skin)
+        $input_skin->add($skin, $skin);
+
+      $out .= sprintf("<tr><td class=\"title\"><lable for=\"%s\">%s</label></td><td>%s</td></tr>\n",
+		    $field_id,
+		    Q(rcube_label('skin')),
+		    $input_skin->show($config['skin']));
+      }
+    }
+
+  $out .= "</table></fieldset>\n<fieldset><legend>" . Q(rcube_label('mailboxview')) . "</legend>\n<table" . $attrib_str . ">\n\n";
+
+  // show config parameter for preview pane
+  if (!isset($no_override['preview_pane']))
+    {
+    $field_id = 'rcmfd_preview';
+    $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1));
+    $out .= sprintf("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\n",
+                    $field_id,
+                    Q(rcube_label('previewpane')),
+                    $input_preview->show($config['preview_pane']?1:0));
+    }
+
   if (!isset($no_override['mdn_requests']))
     {
@@ -158,17 +191,4 @@
                     Q(rcube_label('mdnrequests')),
                     $select_mdn_requests->show($config['mdn_requests']));
-    }
-
-  $out .= "</table></fieldset>\n<fieldset><legend>" . Q(rcube_label('mailboxview')) . "</legend>\n<table" . $attrib_str . ">\n\n";
-
-  // show config parameter for preview pane
-  if (!isset($no_override['preview_pane']))
-    {
-    $field_id = 'rcmfd_preview';
-    $input_preview = new html_checkbox(array('name' => '_preview_pane', 'id' => $field_id, 'value' => 1));
-    $out .= sprintf("<tr><td class=\"title\"><label for=\"%s\">%s</label></td><td>%s</td></tr>\n",
-                    $field_id,
-                    Q(rcube_label('previewpane')),
-                    $input_preview->show($config['preview_pane']?1:0));
     }
 
@@ -341,4 +361,27 @@
   }
 
+function rcmail_get_skins()
+  {
+  $path = 'skins';
+  $skins = array();
+
+  $dir = opendir($path);
+  
+  if (!$dir)
+	return false;
+  
+  while (($file = readdir($dir)) !== false)
+    {
+    $filename = $path.'/'.$file;
+    if (is_dir($filename) && is_readable($filename) 
+	&& !in_array($file, array('.', '..', '.svn')))
+      $skins[] = $file;
+    }
+
+  closedir($dir);
+
+  return $skins;
+  }
+
 
 // register UI objects
Index: /trunk/roundcubemail/program/steps/settings/save_prefs.inc
===================================================================
--- /trunk/roundcubemail/program/steps/settings/save_prefs.inc	(revision 1539)
+++ /trunk/roundcubemail/program/steps/settings/save_prefs.inc	(revision 1540)
@@ -36,4 +36,5 @@
   'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0,
   'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0,
+  'skin' => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['default_skin'],
   );
 
@@ -47,4 +48,7 @@
   $RCMAIL->load_language(get_input_value('_language', RCUBE_INPUT_POST));
 }
+
+// switch skin
+$OUTPUT->set_skin($a_user_prefs['skin']);
 
 // force min size
