summaryrefslogtreecommitdiffstats
path: root/map-widget
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2018-10-08 15:43:06 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2018-10-11 16:25:32 -0700
commitdd44dc4ab8fb888dcb3046ae5ecca2b24fe9e44f (patch)
tree7fcbb53d6d256308c7963fa3f825247c68f19018 /map-widget
parent8091497745c385666e38a7911881189dbd0d73e0 (diff)
downloadsubsurface-dd44dc4ab8fb888dcb3046ae5ecca2b24fe9e44f.tar.gz
Map: pass down dive site in prepareForGetDiveCoordinates()
Instead of reading out the global object "displayed_dive_site", pass the dive site to be edited in arguments to prepareForGetDiveCoordinates() and enter edit mode. Simplify the code in LocationInformationWidget by not using signals to call the prepareForGetDiveCoordinates() function. While doing this, collect common code in accept() and reject() in the already existing resetState() function. This is another entry in a series of commits that makes data-flow more clear by removing access to the global "displayed_dive_site" object. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'map-widget')
-rw-r--r--map-widget/qmlmapwidgethelper.cpp14
-rw-r--r--map-widget/qmlmapwidgethelper.h2
2 files changed, 10 insertions, 6 deletions
diff --git a/map-widget/qmlmapwidgethelper.cpp b/map-widget/qmlmapwidgethelper.cpp
index b892cdcea..8164abd3a 100644
--- a/map-widget/qmlmapwidgethelper.cpp
+++ b/map-widget/qmlmapwidgethelper.cpp
@@ -291,16 +291,20 @@ void MapWidgetHelper::exitEditMode()
emit editModeChanged();
}
-void MapWidgetHelper::enterEditMode()
+void MapWidgetHelper::enterEditMode(quint32 uuid)
{
+ // We don't support editing of a dive site that doesn't exist
+ struct dive_site *ds = get_dive_site_by_uuid(uuid);
+ if (!ds)
+ return;
+
m_editMode = true;
- MapLocation *exists = m_mapLocationModel->getMapLocationForUuid(displayed_dive_site.uuid);
+ MapLocation *exists = m_mapLocationModel->getMapLocationForUuid(uuid);
QGeoCoordinate coord;
- // if divesite uuid doesn't exist in the model, add a new MapLocation.
+ // if divesite doesn't exist in the model, add a new MapLocation.
if (!exists) {
coord = m_map->property("center").value<QGeoCoordinate>();
- m_mapLocationModel->add(new MapLocation(displayed_dive_site.uuid, coord,
- QString(displayed_dive_site.name)));
+ m_mapLocationModel->add(new MapLocation(uuid, coord, QString(ds->name)));
} else {
coord = exists->coordinate();
}
diff --git a/map-widget/qmlmapwidgethelper.h b/map-widget/qmlmapwidgethelper.h
index 132e15310..99f62ca08 100644
--- a/map-widget/qmlmapwidgethelper.h
+++ b/map-widget/qmlmapwidgethelper.h
@@ -37,7 +37,7 @@ public:
Q_INVOKABLE void updateCurrentDiveSiteCoordinatesFromMap(quint32 uuid, QGeoCoordinate coord);
Q_INVOKABLE void selectVisibleLocations();
void updateDiveSiteCoordinates(uint32_t uuid, degrees_t latitude, degrees_t longitude);
- void enterEditMode();
+ void enterEditMode(uint32_t uuid);
void exitEditMode();
QString pluginObject();