summaryrefslogtreecommitdiffstats
path: root/qt-mobile/qmlmanager.cpp
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-01 17:23:29 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2016-01-01 17:26:26 -0800
commitfa338a26b8b4e390c6acc391e159dff8859dd519 (patch)
tree308b43a85884b069cc207c565a4d731097c1f421 /qt-mobile/qmlmanager.cpp
parent14a09689a421a32e812094b5fb99f33b99443266 (diff)
downloadsubsurface-fa338a26b8b4e390c6acc391e159dff8859dd519.tar.gz
QML UI: add feature to add current position when editing dive
This isn't quite perfect yet. If it takes too long to get the GPS fix (i.e., if you save it before you get the fix), this will simply fail and not store a position. But in normal conditions (you check the box, you edit the data, you save), especially when outside on a dive boat, this should work fine. For the other cases we need to implement some kind of callback to still collect the data. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-mobile/qmlmanager.cpp')
-rw-r--r--qt-mobile/qmlmanager.cpp31
1 files changed, 25 insertions, 6 deletions
diff --git a/qt-mobile/qmlmanager.cpp b/qt-mobile/qmlmanager.cpp
index 70bc5264a..f976a4bb6 100644
--- a/qt-mobile/qmlmanager.cpp
+++ b/qt-mobile/qmlmanager.cpp
@@ -328,12 +328,26 @@ void QMLManager::commitChanges(QString diveId, QString location, QString gps, QS
ds = get_dive_site_by_uuid(create_dive_site(qPrintable(location), d->when));
d->dive_site_uuid = ds->uuid;
}
- // now we need to handle the string representations of depth
- // and do something useful...
- //
- // FIXME
- //
- // TODO
+ QString gpsString = getCurrentPosition();
+ if (gpsString != QString("waiting for the next gps location")) {
+ qDebug() << "from commitChanges call to getCurrentPosition returns" << gpsString;
+ double lat, lon;
+ if (parseGpsText(qPrintable(gpsString), &lat, &lon)) {
+ struct dive_site *ds = get_dive_site_by_uuid(d->dive_site_uuid);
+ if (ds) {
+ ds->latitude.udeg = lat * 1000000;
+ ds->longitude.udeg = lon * 1000000;
+ } else {
+ degrees_t latData, lonData;
+ latData.udeg = lat;
+ lonData.udeg = lon;
+ d->dive_site_uuid = create_dive_site_with_gps("new site", latData, lonData, d->when);
+ }
+ qDebug() << "set up dive site with new GPS data";
+ }
+ } else {
+ qDebug() << "still don't have a position - will need to implement some sort of callback";
+ }
if (get_dive_duration_string(d->duration.seconds, tr("h:"), tr("min")) != duration) {
diveChanged = true;
int h = 0, m = 0, s = 0;
@@ -442,6 +456,11 @@ QString QMLManager::addDive()
return DiveListModel::instance()->startAddDive();
}
+QString QMLManager::getCurrentPosition()
+{
+ return locationProvider->currentPosition();
+}
+
void QMLManager::applyGpsData()
{
locationProvider->applyLocations();