diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2015-12-02 14:30:47 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-12-02 14:30:47 -0800 |
commit | 962341ae9f781e10a6276b9f7d81d9da72bd90f6 (patch) | |
tree | 2ddacc7c572902d04620e5851edd0d5dcbbdbc33 /subsurface-core | |
parent | 1bfcf5c0f820633e7f9387722438370f0a3a5a48 (diff) | |
download | subsurface-962341ae9f781e10a6276b9f7d81d9da72bd90f6.tar.gz |
Add instance method for GpsLocation
This way we can call members from different parts of the code.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'subsurface-core')
-rw-r--r-- | subsurface-core/gpslocation.cpp | 21 | ||||
-rw-r--r-- | subsurface-core/gpslocation.h | 5 |
2 files changed, 23 insertions, 3 deletions
diff --git a/subsurface-core/gpslocation.cpp b/subsurface-core/gpslocation.cpp index e75856a98..532c142b6 100644 --- a/subsurface-core/gpslocation.cpp +++ b/subsurface-core/gpslocation.cpp @@ -13,8 +13,12 @@ #define GPS_FIX_ADD_URL "http://api.subsurface-divelog.org/api/dive/add/" #define GET_WEBSERVICE_UID_URL "https://cloud.subsurface-divelog.org/webuserid/" +GpsLocation *GpsLocation::m_Instance = NULL; + GpsLocation::GpsLocation(void (*showMsgCB)(const char *), QObject *parent) { + Q_ASSERT_X(m_Instance == NULL, "GpsLocation", "GpsLocation recreated"); + m_Instance = this; showMessageCB = showMsgCB; // create a QSettings object that's separate from the main application settings geoSettings = new QSettings(QSettings::NativeFormat, QSettings::UserScope, @@ -22,6 +26,18 @@ GpsLocation::GpsLocation(void (*showMsgCB)(const char *), QObject *parent) userAgent = getUserAgent(); } +GpsLocation *GpsLocation::instance() +{ + Q_ASSERT(m_Instance != NULL); + + return m_Instance; +} + +GpsLocation::~GpsLocation() +{ + m_Instance = NULL; +} + QGeoPositionInfoSource *GpsLocation::getGpsSource() { static QGeoPositionInfoSource *gpsSource = NULL; @@ -31,7 +47,10 @@ QGeoPositionInfoSource *GpsLocation::getGpsSource() gpsSource = QGeoPositionInfoSource::createDefaultSource(this); initGpsSource = true; if (gpsSource != 0) { - status("created GPS source"); +#ifndef SUBSURFACE_MOBILE + if (verbose) +#endif + status("created GPS source"); QString msg = QString("have position source %1").arg(gpsSource->sourceName()); connect(gpsSource, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(newPosition(QGeoPositionInfo))); connect(gpsSource, SIGNAL(updateTimeout()), this, SLOT(updateTimeout())); diff --git a/subsurface-core/gpslocation.h b/subsurface-core/gpslocation.h index e0e825cb1..8fb3bb947 100644 --- a/subsurface-core/gpslocation.h +++ b/subsurface-core/gpslocation.h @@ -14,6 +14,8 @@ class GpsLocation : QObject Q_OBJECT public: GpsLocation(void (*showMsgCB)(const char *msg), QObject *parent); + ~GpsLocation(); + static GpsLocation *instance(); void applyLocations(); int getGpsNum() const; QString getUserid(QString user, QString passwd); @@ -27,8 +29,7 @@ private: QNetworkReply *reply; QString userAgent; void (*showMessageCB)(const char *msg); - -signals: + static GpsLocation *m_Instance; public slots: void serviceEnable(bool toggle); |