Fixes to speed alarm and poi alerts. Added flicker effect. Some new fields to text...
[jspeed] / src / speedalarm.cpp
index b4908e7..ad3637e 100644 (file)
  */
 
 #include <QtCore/QFile>
-#include <QMediaPlayer>
+#include <QtCore/QTimer>
 #include "speedalarm.h"
 #include "settings.h"
 #include "odometer.h"
 #include "poialerts.h"
 #include "mediaplayer.h"
 
-SpeedAlarm::SpeedAlarm(): QObject(0), loaded_(false), enabled_(false), isOver_(false)
+
+SpeedAlarm::SpeedAlarm(): QObject(0), loaded_(false),
+enabled_(false), isOver_(false), timer_(0)
+{
+}
+
+SpeedAlarm::~SpeedAlarm()
 {
+    delete timer_;
 }
 
 SpeedAlarm& SpeedAlarm::instance()
@@ -82,7 +89,7 @@ void SpeedAlarm::loadConfig()
             return;
         }
 
-        threshold_ = Settings::instance().value("alarm_threshold", 0).toInt();
+        threshold_ = Settings::instance().value("alarm_threshold", 0).toDouble();
 
         start();
     }
@@ -109,10 +116,45 @@ void SpeedAlarm::onDataUpdated()
         {
             MediaPlayer::play(soundFile_);
             isOver_ = true;
+            emit speedExceedChanged(true);
+            startAlarmTimer();
         }
     }
     else
     {
+        if(isOver_)
+        {
+            emit speedExceedChanged(false);
+        }
+
         isOver_ = false;
     }
 }
+
+void SpeedAlarm::startAlarmTimer()
+{
+    if(timer_)
+    {
+        timer_->stop();
+        delete timer_;
+        timer_ = 0;
+    }
+
+    timer_ = new QTimer;
+    timer_->setInterval(ALARM_INTERVAL * 1000);
+    connect(timer_, SIGNAL(timeout()), this, SLOT(playAlarmSound()));
+    timer_->start();
+}
+
+void SpeedAlarm::playAlarmSound()
+{
+    if(isOver_)
+    {
+        MediaPlayer::play(soundFile_);
+    }
+    else
+    {
+        delete timer_;
+        timer_ = 0;
+    }
+}