diff options
Diffstat (limited to 'core/gpslocation.h')
-rw-r--r-- | core/gpslocation.h | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/core/gpslocation.h b/core/gpslocation.h new file mode 100644 index 000000000..82b51a291 --- /dev/null +++ b/core/gpslocation.h @@ -0,0 +1,66 @@ +#ifndef GPSLOCATION_H +#define GPSLOCATION_H + +#include "units.h" +#include <QObject> +#include <QGeoCoordinate> +#include <QGeoPositionInfoSource> +#include <QGeoPositionInfo> +#include <QSettings> +#include <QNetworkReply> +#include <QMap> + +struct gpsTracker { + degrees_t latitude; + degrees_t longitude; + qint64 when; + QString name; + int idx; +}; + +class GpsLocation : QObject { + Q_OBJECT +public: + GpsLocation(void (*showMsgCB)(const char *msg), QObject *parent); + ~GpsLocation(); + static GpsLocation *instance(); + bool applyLocations(); + int getGpsNum() const; + QString getUserid(QString user, QString passwd); + bool hasLocationsSource(); + QString currentPosition(); + + QMap<qint64, gpsTracker> currentGPSInfo() const; + +private: + QGeoPositionInfo lastPos; + QGeoPositionInfoSource *getGpsSource(); + QGeoPositionInfoSource *m_GpsSource; + void status(QString msg); + QSettings *geoSettings; + QNetworkReply *reply; + QString userAgent; + void (*showMessageCB)(const char *msg); + static GpsLocation *m_Instance; + bool waitingForPosition; + QMap<qint64, gpsTracker> m_trackers; + QList<gpsTracker> m_deletedTrackers; + void loadFromStorage(); + void addFixToStorage(gpsTracker >); + void replaceFixToStorage(gpsTracker >); + void deleteFixFromStorage(gpsTracker >); + void deleteFixesFromServer(); + +public slots: + void serviceEnable(bool toggle); + void newPosition(QGeoPositionInfo pos); + void updateTimeout(); + void uploadToServer(); + void downloadFromServer(); + void postError(QNetworkReply::NetworkError error); + void getUseridError(QNetworkReply::NetworkError error); + void clearGpsData(); + void deleteGpsFix(qint64 when); +}; + +#endif // GPSLOCATION_H |