Location service: make message delivery configurable

Instead of directly using the status output for the QML UI, set up the
function used to display messages to the user as part of the constructor.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-11-18 18:10:58 -08:00
parent d70f85ce35
commit 0b804e5b21
3 changed files with 7 additions and 5 deletions

View file

@ -1,5 +1,4 @@
#include "qt-mobile/gpslocation.h"
#include "qt-mobile/qmlmanager.h"
#include "pref.h"
#include "dive.h"
#include "helpers.h"
@ -14,8 +13,9 @@
#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(QObject *parent)
GpsLocation::GpsLocation(void (*showMsgCB)(const char *), QObject *parent)
{
showMessageCB = showMsgCB;
// create a QSettings object that's separate from the main application settings
geoSettings = new QSettings(QSettings::NativeFormat, QSettings::UserScope,
QString("org.subsurfacedivelog"), QString("subsurfacelocation"), this);
@ -80,7 +80,8 @@ void GpsLocation::updateTimeout()
void GpsLocation::status(QString msg)
{
qDebug() << msg;
qmlUiShowMessage(qPrintable(msg));
if (showMessageCB)
(*showMessageCB)(qPrintable(msg));
}
QString GpsLocation::getUserid(QString user, QString passwd)

View file

@ -13,7 +13,7 @@ class GpsLocation : QObject
{
Q_OBJECT
public:
GpsLocation(QObject *parent);
GpsLocation(void (*showMsgCB)(const char *msg), QObject *parent);
bool applyLocations();
int getGpsNum() const;
QString getUserid(QString user, QString passwd);
@ -25,6 +25,7 @@ private:
QSettings *geoSettings;
QNetworkReply *reply;
QString userAgent;
void (*showMessageCB)(const char *msg);
signals:

View file

@ -19,7 +19,7 @@ QMLManager::QMLManager() :
m_locationServiceEnabled(false)
{
// create location manager service
locationProvider = new GpsLocation(this);
locationProvider = new GpsLocation(&qmlUiShowMessage, this);
// Initialize cloud credentials.
setCloudUserName(prefs.cloud_storage_email);