aboutsummaryrefslogtreecommitdiffstats
path: root/subsurface-core/gpslocation.h
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-09 14:07:58 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-10 20:44:21 -0800
commit33142ed7f861648b77a24d9b905bd04e23213a13 (patch)
treef1e88f5d15f583fc39be12c72d94d008d0069fd0 /subsurface-core/gpslocation.h
parent7701975d9804f9ce1f62a10a1a2d890f7c1b82d1 (diff)
downloadsubsurface-33142ed7f861648b77a24d9b905bd04e23213a13.tar.gz
Reimplement the internal repesentation of GPS fixes
Instead of using the Settings as our data structure and constantly accessing them, we now have a QMap for the GPS fixes and only access the Settings to keep them in sync with the QMap. This should significantly speed things up. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'subsurface-core/gpslocation.h')
-rw-r--r--subsurface-core/gpslocation.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/subsurface-core/gpslocation.h b/subsurface-core/gpslocation.h
index 0c722a5f4..dc8496924 100644
--- a/subsurface-core/gpslocation.h
+++ b/subsurface-core/gpslocation.h
@@ -8,12 +8,14 @@
#include <QGeoPositionInfo>
#include <QSettings>
#include <QNetworkReply>
+#include <QMap>
struct gpsTracker {
degrees_t latitude;
degrees_t longitude;
- quint64 when;
+ qint64 when;
QString name;
+ int idx;
};
class GpsLocation : QObject
@@ -29,7 +31,7 @@ public:
bool hasLocationsSource();
QString currentPosition();
- QVector<gpsTracker> currentGPSInfo() const;
+ QMap<qint64, gpsTracker> currentGPSInfo() const;
private:
QGeoPositionInfo lastPos;
@@ -42,6 +44,9 @@ private:
void (*showMessageCB)(const char *msg);
static GpsLocation *m_Instance;
bool waitingForPosition;
+ QMap<qint64, gpsTracker> m_trackers;
+ void addFixToStorage(gpsTracker &gt);
+ void deleteFixFromStorage(gpsTracker &gt);
public slots:
void serviceEnable(bool toggle);
@@ -52,7 +57,7 @@ public slots:
void postError(QNetworkReply::NetworkError error);
void getUseridError(QNetworkReply::NetworkError error);
void clearGpsData();
- void deleteGpsFix(quint64 when);
+ void deleteGpsFix(qint64 when);
};
#endif // GPSLOCATION_H