Added new theme. Made detail screen also themable.
[jspeed] / src / detailscreen.cpp
index 660ba27..4599e4c 100644 (file)
 namespace
 {
     QString const FONT = "Tahoma";
-    QString const BACKGROUND = ":/resources/themes/default/background.png";
+    QString const DEFAULT_BACKGROUND_COLOR = "#000";
+    QString const DEFAULT_COLOR = "#fff";
     int const FONT_SIZE = 20;
     int const START_HEIGHT = 80;
     int const ITEM_WIDTH = 130;
+
 }
 
-DetailScreen::DetailScreen(QWidget* parent): GraphicsScreen(parent)
+DetailScreen::DetailScreen(QWidget* parent): ThemeScreen(parent)
 {
     QString unit = Odometer::getUnit();
     QString speedUnit = Odometer::getSpeedUnit();
 
-    QGraphicsPixmapItem* background = new QGraphicsPixmapItem(QPixmap(BACKGROUND));
-    getScene()->addItem(background);
+    getScene()->setBackgroundBrush(QBrush(QColor(DEFAULT_BACKGROUND_COLOR)));
 
     tripLabel_ = createItem(tr("Trip"));
     trip_ = createItem(roundDouble(Odometer::instance().getTrip()));
@@ -76,6 +77,7 @@ DetailScreen::DetailScreen(QWidget* parent): GraphicsScreen(parent)
     strength_ = new QGraphicsPixmapItem;
     currentStrength_ = getStrength();
     strength_->setPixmap(QPixmap(":/resources/signal_" + QString::number(currentStrength_) + ".png"));
+    strength_->setZValue(999);
     getScene()->addItem(strength_);
 
     connect(&(Odometer::instance()), SIGNAL(timeUpdated()), this, SLOT(updateTime()));
@@ -86,6 +88,8 @@ DetailScreen::DetailScreen(QWidget* parent): GraphicsScreen(parent)
 
 void DetailScreen::update()
 {
+    ThemeScreen::update();
+
     speed_->setPlainText(roundDouble(Odometer::instance().getLatestFix().speed));
     trip_->setPlainText(roundDouble(Odometer::instance().getTrip()));
     total_->setPlainText(roundDouble(Odometer::instance().getTotal()));
@@ -123,7 +127,7 @@ void DetailScreen::updateUnits()
 
 void DetailScreen::reArrange()
 {
-    GraphicsScreen::reArrange();
+    ThemeScreen::reArrange();
 
     int width = getScene()->width();
     int height = getScene()->height();
@@ -175,7 +179,8 @@ QGraphicsTextItem* DetailScreen::createItem(QString const& text)
     QFont font(FONT, FONT_SIZE);
     font.setBold(true);
     item->setFont(font);
-    item->setDefaultTextColor(QColor("#fff"));
+    item->setDefaultTextColor(QColor(DEFAULT_COLOR));
+    item->setZValue(999);
     getScene()->addItem(item);
     return item;
 }
@@ -183,9 +188,11 @@ QGraphicsTextItem* DetailScreen::createItem(QString const& text)
 QGraphicsLineItem* DetailScreen::createLine()
 {
     QGraphicsLineItem* item = new QGraphicsLineItem;
-    QPen pen(QColor("#ddd"));
-    pen.setWidth(1);
-    item->setPen(pen);
+    QColor pColor(DEFAULT_COLOR);
+    QPen p(pColor);
+    p.setWidth(1);
+    item->setPen(p);
+    item->setZValue(999);
     getScene()->addItem(item);
     return item;
 }
@@ -216,3 +223,34 @@ int DetailScreen::getStrength()
     double strength = round(Odometer::instance().getSignalStrength() / 25.0);
     return static_cast<int>(strength);
 }
+
+void DetailScreen::setColor(QString const& color)
+{
+    QColor c(color);
+
+    tripLabel_->setDefaultTextColor(c);
+    trip_->setDefaultTextColor(c);
+    tripUnit_->setDefaultTextColor(c);
+    totalLabel_->setDefaultTextColor(c);
+    total_->setDefaultTextColor(c);
+    totalUnit_->setDefaultTextColor(c);
+    speedLabel_->setDefaultTextColor(c);
+    speed_->setDefaultTextColor(c);
+    speedUnit_->setDefaultTextColor(c);
+    avgSpeedLabel_->setDefaultTextColor(c);
+    avgSpeed_->setDefaultTextColor(c);
+    avgSpeedUnit_->setDefaultTextColor(c);
+    maxSpeedLabel_->setDefaultTextColor(c);
+    maxSpeed_->setDefaultTextColor(c);
+    maxSpeedUnit_->setDefaultTextColor(c);
+    tripTimeLabel_->setDefaultTextColor(c);
+    tripTime_->setDefaultTextColor(c);
+    totalTimeLabel_->setDefaultTextColor(c);
+    totalTime_->setDefaultTextColor(c);
+
+    QPen p(c);
+    p.setWidth(1);
+
+    line1_->setPen(p);
+    line2_->setPen(p);
+}