summaryrefslogtreecommitdiffstats
path: root/subsurface-core
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-12-02 14:30:47 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-12-02 14:30:47 -0800
commit962341ae9f781e10a6276b9f7d81d9da72bd90f6 (patch)
tree2ddacc7c572902d04620e5851edd0d5dcbbdbc33 /subsurface-core
parent1bfcf5c0f820633e7f9387722438370f0a3a5a48 (diff)
downloadsubsurface-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.cpp21
-rw-r--r--subsurface-core/gpslocation.h5
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);