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>
This commit is contained in:
Dirk Hohndel 2015-12-02 14:30:47 -08:00
parent 1bfcf5c0f8
commit 962341ae9f
2 changed files with 23 additions and 3 deletions

View file

@ -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()));