Added power save method to GPS.
[situare] / src / gps / gpspositionprivateliblocation.cpp
index 4ce2acd..2da121d 100644 (file)
@@ -35,6 +35,7 @@ GPSPositionPrivate::GPSPositionPrivate(QObject *parent)
     : QObject(parent),
       m_liblocationWrapper(0),
       m_initialized(false),
+      m_powerSave(false),
       m_running(false),
       m_updateInterval(DEFAULT_UPDATE_INTERVAL)
 {
@@ -43,6 +44,22 @@ GPSPositionPrivate::GPSPositionPrivate(QObject *parent)
     m_parent = static_cast<GPSPosition*>(parent);
 }
 
+void GPSPositionPrivate::enablePowerSave(bool enabled)
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    if (isRunning()) {
+        m_powerSave = enabled;
+        if (enabled)
+            m_liblocationWrapper->stopUpdates();
+        else
+            m_liblocationWrapper->startUpdates();
+    }
+    else {
+        m_powerSave = false;
+    }
+}
+
 bool GPSPositionPrivate::isInitialized()
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -131,6 +148,14 @@ void GPSPositionPrivate::requestLastPosition()
     }
 }
 
+void GPSPositionPrivate::requestUpdate()
+{
+    qDebug() << __PRETTY_FUNCTION__;
+
+    if (m_powerSave)
+        m_liblocationWrapper->startUpdates();
+}
+
 void GPSPositionPrivate::positionUpdated(const GeoPositionInfo &positionInfo)
 {
     qDebug() << __PRETTY_FUNCTION__;
@@ -140,6 +165,9 @@ void GPSPositionPrivate::positionUpdated(const GeoPositionInfo &positionInfo)
         emit m_parent->position(QPointF(coordinate.longitude(), coordinate.latitude()),
                       accuracy(positionInfo));
     }
+
+    if (m_powerSave)
+        m_liblocationWrapper->stopUpdates();
 }
 
 void GPSPositionPrivate::locationError(const QString &errorMessage)