summaryrefslogtreecommitdiffstats
path: root/mobile-widgets
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-08-09 00:36:33 +0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-08-10 09:08:28 -0700
commit98e869d4f153a30f98d481125050a1b4ba39b9e4 (patch)
tree38d2c9752a504155ab1b766cc2ee34fef6c69daa /mobile-widgets
parentf21ae69f7be799fe710b55f17f9404d803be9487 (diff)
downloadsubsurface-98e869d4f153a30f98d481125050a1b4ba39b9e4.tar.gz
mapwidgethelper: fix wrong logic in selectVisibleLocations()
Looking for already existing locations with m_mapLocationModel->getMapLocationForUuid() will not cover dive sites which are too close to each other and are skipped when creating MapLocations. See reloadMapLocations() and the usage of MIN_DISTANCE_BETWEEN_DIVE_SITES_M. Constructing a new QGeoCoordinate for the already retrieved dive site (ds) coordinates ensures that we are traversing *all* dive sites at the backend and not only those visible on the map. Fixes the issue where not all dives in the DiveList are selected, even if a dive clearly happened on a location currently visible in the map viewport (map -> context menu -> select visible dive locations). Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
Diffstat (limited to 'mobile-widgets')
-rw-r--r--mobile-widgets/qmlmapwidgethelper.cpp22
1 files changed, 11 insertions, 11 deletions
diff --git a/mobile-widgets/qmlmapwidgethelper.cpp b/mobile-widgets/qmlmapwidgethelper.cpp
index 1b9c9a909..9cc452642 100644
--- a/mobile-widgets/qmlmapwidgethelper.cpp
+++ b/mobile-widgets/qmlmapwidgethelper.cpp
@@ -154,18 +154,18 @@ void MapWidgetHelper::selectVisibleLocations()
struct dive_site *ds = get_dive_site_for_dive(dive);
if (!dive_site_has_gps_location(ds))
continue;
- MapLocation *loc = m_mapLocationModel->getMapLocationForUuid(ds->uuid);
- if (loc) {
- QPointF point;
- QMetaObject::invokeMethod(m_map, "fromCoordinate", Q_RETURN_ARG(QPointF, point),
- Q_ARG(QGeoCoordinate, loc->coordinate()));
- if (!qIsNaN(point.x())) {
- if (!selectedFirst) {
- m_mapLocationModel->setSelectedUuid(ds->uuid, false);
- selectedFirst = true;
- }
- m_selectedDiveIds.append(idx);
+ const qreal latitude = ds->latitude.udeg * 0.000001;
+ const qreal longitude = ds->longitude.udeg * 0.000001;
+ QGeoCoordinate dsCoord(latitude, longitude);
+ QPointF point;
+ QMetaObject::invokeMethod(m_map, "fromCoordinate", Q_RETURN_ARG(QPointF, point),
+ Q_ARG(QGeoCoordinate, dsCoord));
+ if (!qIsNaN(point.x())) {
+ if (!selectedFirst) {
+ m_mapLocationModel->setSelectedUuid(ds->uuid, false);
+ selectedFirst = true;
}
+ m_selectedDiveIds.append(idx);
}
}
emit selectedDivesChanged(m_selectedDiveIds);