diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-01-09 14:07:58 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-01-10 20:44:21 -0800 |
commit | 33142ed7f861648b77a24d9b905bd04e23213a13 (patch) | |
tree | f1e88f5d15f583fc39be12c72d94d008d0069fd0 /subsurface-core/gpslocation.h | |
parent | 7701975d9804f9ce1f62a10a1a2d890f7c1b82d1 (diff) | |
download | subsurface-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.h | 11 |
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 >); + void deleteFixFromStorage(gpsTracker >); 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 |