Merge branch 'master' into error_procedur
[situare] / src / gps / gpspositionprivate.cpp
index 4c4d60c..21421c7 100644 (file)
    USA.
 */
 
-#include <QGeoPositionInfoSource>
-#include <QNmeaPositionInfoSource>
 #include <QFile>
 #include <QDir>
 #include <QApplication>
 #include <QDebug>
 #include <QTimer>
 
+#include "common.h"
 #include "gpscommon.h"
 #include "gpsposition.h"
 #include "gpspositionprivate.h"
 GPSPositionPrivate::GPSPositionPrivate(QObject *parent)
     : QObject(parent),
       m_gpsSource(0),
+      m_initialized(false),
       m_running(false),
       m_updateInterval(DEFAULT_UPDATE_INTERVAL)
 {
+    qDebug() << __PRETTY_FUNCTION__;
+
     m_parent = static_cast<GPSPosition*>(parent);
 }
 
+bool GPSPositionPrivate::isInitialized()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    return m_initialized;
+}
+
 void GPSPositionPrivate::setMode(GPSPosition::Mode mode, const QString &filePath)
 {
+    qDebug() << __PRETTY_FUNCTION__;
+
     if (m_gpsSource) {
         disconnect(m_gpsSource, 0, 0, 0);
         delete m_gpsSource;
@@ -51,7 +62,8 @@ void GPSPositionPrivate::setMode(GPSPosition::Mode mode, const QString &filePath
         m_gpsSource = QGeoPositionInfoSource::createDefaultSource(this);
 
         if (!m_gpsSource) {
-            emit m_parent->error(tr("Unable to use GPS"));
+            m_initialized = false;
+            emit m_parent->error(SituareError::GPS_INITIALIZATION_FAILED);
             return;
         }
     }
@@ -65,6 +77,7 @@ void GPSPositionPrivate::setMode(GPSPosition::Mode mode, const QString &filePath
     }
 
     if (m_gpsSource) {
+        m_initialized = true;
         connect(m_gpsSource, SIGNAL(positionUpdated(const QGeoPositionInfo &)),
                 this, SLOT(positionUpdated(const QGeoPositionInfo &)));
         connect(m_gpsSource, SIGNAL(updateTimeout()), this, SLOT(updateTimeout()));
@@ -77,7 +90,7 @@ void GPSPositionPrivate::start()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if (m_gpsSource && !isRunning()) {
+    if (m_initialized && !isRunning()) {
         m_gpsSource->startUpdates();
         m_running = true;
     }
@@ -87,7 +100,7 @@ void GPSPositionPrivate::stop()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if (m_gpsSource && isRunning()) {
+    if (m_initialized && isRunning()) {
         m_gpsSource->stopUpdates();
         m_running = false;
     }
@@ -150,15 +163,7 @@ qreal GPSPositionPrivate::accuracy(const QGeoPositionInfo &positionInfo)
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    QDateTime timestamp;
-
-#ifdef Q_WS_MAEMO_5
-    timestamp = positionInfo.dateTime();
-#else
-    timestamp = positionInfo.timestamp();
-#endif
-
-    if (!timestamp.isValid())
+    if (!positionInfo.timestamp().isValid())
         return GPS_ACCURACY_UNDEFINED;
 
     if (positionInfo.hasAttribute(QGeoPositionInfo::HorizontalAccuracy))