Added new theme. Made detail screen also themable.
[jspeed] / src / odometer.cpp
index 161f0b2..41c6fe3 100644 (file)
@@ -33,6 +33,7 @@ namespace
     QString const MILE_UNIT = "mi";
     QString const KM_SPEEDUNIT = "km/h";
     QString const MILE_SPEEDUNIT = "mph";
+    static const int FIX_TIMEOUT = 4000;
     double const DEFAULT_SPEED_TRESHOLD = 8.0;
     double const MIN_SPEED_TRESHOLD = 0.8;
     double const SPEED_IGNORE_LEVEL = 0.01;
@@ -58,6 +59,10 @@ mainTimer_(0), emitUpdate_(true), location_(0), signalTimer_(0)
     signalTimer_->setInterval(1000);
     connect(signalTimer_, SIGNAL(timeout()), this, SIGNAL(timeUpdated()));
     updateUnit();
+    timeoutTimer_ = new QTimer(this);
+    timeoutTimer_->setSingleShot(true);
+    connect(timeoutTimer_, SIGNAL(timeout()), this, SLOT(fixTimeout()));
+
 }
 
 Odometer::~Odometer()
@@ -104,6 +109,7 @@ void Odometer::update(Location::Fix const& fix)
     int elapsed = fixTimer_->elapsed();
 
     fixTimer_->restart();
+    timeoutTimer_->start(FIX_TIMEOUT);
 
     if(fix.kmSpeed > SPEED_IGNORE_LEVEL)
     {
@@ -119,7 +125,7 @@ void Odometer::update(Location::Fix const& fix)
            }
         }
 
-        if(fix.kmSpeed > treshold && elapsed > 200 && elapsed < 8000)
+        if(fix.kmSpeed > treshold && elapsed > 200 && elapsed < FIX_TIMEOUT)
         {
             double km = fix.kmSpeed * (static_cast<double>(elapsed) / (1000 * 3600));
             trip_ += km;
@@ -140,16 +146,19 @@ void Odometer::update(Location::Fix const& fix)
     }
     else
     {
-        if(latestFix_.kmSpeed > SPEED_IGNORE_LEVEL)
-        {
-            latestFix_ = fix;
-            latestFix_.speed = 0.0;
-            latestFix_.kmSpeed = 0.0;
-            emit dataUpdated();
-        }
+        fixTimeout();
+    }
+}
 
-        endTiming();
+void Odometer::fixTimeout()
+{
+    if(latestFix_.kmSpeed > SPEED_IGNORE_LEVEL)
+    {
+        latestFix_ = Location::Fix();
+        emit dataUpdated();
     }
+
+    endTiming();
 }
 
 double Odometer::getTrip() const