diff options
author | Lubomir I. Ivanov <neolit123@gmail.com> | 2017-08-09 00:36:33 +0300 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-08-10 09:08:28 -0700 |
commit | 98e869d4f153a30f98d481125050a1b4ba39b9e4 (patch) | |
tree | 38d2c9752a504155ab1b766cc2ee34fef6c69daa /mobile-widgets | |
parent | f21ae69f7be799fe710b55f17f9404d803be9487 (diff) | |
download | subsurface-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.cpp | 22 |
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); |