diff options
author | Tomaz Canabrava <tomaz.canabrava@gmail.com> | 2015-06-07 09:31:18 -0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2015-06-07 08:04:37 -0700 |
commit | 03147d69ba5c8ff17877a35d8a320efe263fd885 (patch) | |
tree | 848df2f7c6de285d0ad6aa12c9534db77d24516f /qt-ui | |
parent | 48d2d4a94252f1b2baec6fcdb95cb8e714bbeaef (diff) | |
download | subsurface-03147d69ba5c8ff17877a35d8a320efe263fd885.tar.gz |
Plot the current dive site in edit mode
We were ignoring the displayed_dive_site
as we were adding it and the changes weren't
accepted yet.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/globe.cpp | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp index 1546a8bb5..b8e0ec87e 100644 --- a/qt-ui/globe.cpp +++ b/qt-ui/globe.cpp @@ -187,9 +187,6 @@ void GlobeGPS::mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit unit) void GlobeGPS::repopulateLabels() { - if (!current_dive) - return; - struct dive_site *ds; int idx; QMap<QString, GeoDataPlacemark *> locationMap; @@ -200,9 +197,12 @@ void GlobeGPS::repopulateLabels() loadedDives = new GeoDataDocument; for_each_dive_site(idx, ds) { + if (ds->uuid == displayed_dive_site.uuid) + continue; if (dive_site_has_gps_location(ds)) { GeoDataPlacemark *place = new GeoDataPlacemark(ds->name); place->setCoordinate(ds->longitude.udeg / 1000000.0, ds->latitude.udeg / 1000000.0, 0, GeoDataCoordinates::Degree); + // don't add dive locations twice, unless they are at least 50m apart if (locationMap[QString(ds->name)]) { GeoDataCoordinates existingLocation = locationMap[QString(ds->name)]->coordinate(); @@ -221,9 +221,18 @@ void GlobeGPS::repopulateLabels() } } + if (displayed_dive_site.uuid && dive_site_has_gps_location(&displayed_dive_site)) { + GeoDataPlacemark *place = new GeoDataPlacemark(displayed_dive_site.name); + place->setCoordinate(displayed_dive_site.longitude.udeg / 1000000.0, + displayed_dive_site.latitude.udeg / 1000000.0, 0, GeoDataCoordinates::Degree); + locationMap[QString(displayed_dive_site.name)] = place; + loadedDives->append(place); + } model()->treeModel()->addDocument(loadedDives); + struct dive_site *center = displayed_dive_site.uuid != 0 ? - &displayed_dive_site : get_dive_site_by_uuid(current_dive->dive_site_uuid); + &displayed_dive_site : current_dive ? + get_dive_site_by_uuid(current_dive->dive_site_uuid) : NULL; if(center) centerOn(displayed_dive_site.longitude.udeg / 1000000.0, displayed_dive_site.latitude.udeg / 1000000.0, true); } |