Added new theme. Made detail screen also themable.
[jspeed] / src / theme.cpp
index 09baddf..c7d97d4 100644 (file)
@@ -31,6 +31,7 @@
 #include "zipreader.h"
 #include "filereader.h"
 #include "themescreen.h"
+#include "detailscreen.h"
 #include "settings.h"
 
 namespace
@@ -39,9 +40,9 @@ namespace
     QString const THEME_SUFFIX = ".jspeed";
 }
 
-Theme::Theme(QWidget* parent): WidgetScreen(parent),
+Theme::Theme(DetailScreen* detailScreen, QWidget* parent): WidgetScreen(parent),
 portraitId_(-1), landscapeId_(-1), reader_(0),
-portrait_(0), landscape_(0), portraitMode_(false)
+portrait_(0), landscape_(0), detailScreen_(detailScreen), portraitMode_(false)
 {
 }
 
@@ -77,7 +78,6 @@ bool Theme::load()
 
         if(read())
         {
-            qDebug() << "Ladattiin " << theme;
             return true;
         }
         else
@@ -136,6 +136,28 @@ bool Theme::read()
         return false;
     }
 
+    QDomNodeList detailConfigs = doc.elementsByTagName("detailscreen");
+
+    if(detailConfigs.size() > 1)
+    {
+        error_ = "Multiple <detailscreen> tags specified";
+        return false;
+    }
+
+    if(detailConfigs.size() == 1)
+    {
+        detailScreen_->removeElements();
+
+        QDomNode color = detailConfigs.at(0).attributes().namedItem("color");
+
+        if(!color.isNull())
+        {
+            detailScreen_->setColor(color.toAttr().value());
+        }
+
+        detailScreen_->load(detailConfigs.at(0), reader_);
+    }
+
     QDomNodeList orientations = doc.elementsByTagName("orientation");
 
     if(orientations.isEmpty())
@@ -204,6 +226,22 @@ bool Theme::read()
             portraitId_ = addWidget(portrait_);
             connectSignals(portrait_);
         }
+
+        if(landscape_ && portrait_)
+        {
+            QRect rect = QApplication::desktop()->screenGeometry();
+
+            if(rect.height() > rect.width())
+            {
+                setCurrentIndex(portraitId_);
+                portraitMode_ = true;
+            }
+            else
+            {
+                setCurrentIndex(landscapeId_);
+                portraitMode_ = false;
+            }
+        }
     }
     else
     {
@@ -233,12 +271,12 @@ QString const& Theme::error() const
 
 bool Theme::portraitEnabled() const
 {
-    return portraitId_ != -1;
+    return portrait_ != 0;
 }
 
 bool Theme::landscapeEnabled() const
 {
-    return landscapeId_ != -1;
+    return landscape_ != 0;
 }
 
 void Theme::reArrange()