Merge branch 'master' into error_procedur
[situare] / src / gps / gpspositionprivate.cpp
index 1c4ac9f..21421c7 100644 (file)
@@ -33,6 +33,7 @@
 GPSPositionPrivate::GPSPositionPrivate(QObject *parent)
     : QObject(parent),
       m_gpsSource(0),
+      m_initialized(false),
       m_running(false),
       m_updateInterval(DEFAULT_UPDATE_INTERVAL)
 {
@@ -41,6 +42,13 @@ GPSPositionPrivate::GPSPositionPrivate(QObject *parent)
     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__;
@@ -54,6 +62,7 @@ void GPSPositionPrivate::setMode(GPSPosition::Mode mode, const QString &filePath
         m_gpsSource = QGeoPositionInfoSource::createDefaultSource(this);
 
         if (!m_gpsSource) {
+            m_initialized = false;
             emit m_parent->error(SituareError::GPS_INITIALIZATION_FAILED);
             return;
         }
@@ -68,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()));
@@ -80,7 +90,7 @@ void GPSPositionPrivate::start()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if (m_gpsSource && !isRunning()) {
+    if (m_initialized && !isRunning()) {
         m_gpsSource->startUpdates();
         m_running = true;
     }
@@ -90,7 +100,7 @@ void GPSPositionPrivate::stop()
 {
     qDebug() << __PRETTY_FUNCTION__;
 
-    if (m_gpsSource && isRunning()) {
+    if (m_initialized && isRunning()) {
         m_gpsSource->stopUpdates();
         m_running = false;
     }