From 50f42cfdef3e77ad912869af931d0796655368df Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Mon, 24 Jul 2017 21:15:23 +0300 Subject: [PATCH] mapwidgethelper: obtain a list of nearby dives Based on a current location (MapLocation), iterate the dive list and add nearby dives (distance smaller than m_smallCircleRadius) to a local QList property (m_selectedDiveIds). Signed-off-by: Lubomir I. Ivanov --- mobile-widgets/qmlmapwidgethelper.cpp | 17 ++++++++++++++++- mobile-widgets/qmlmapwidgethelper.h | 1 + 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/mobile-widgets/qmlmapwidgethelper.cpp b/mobile-widgets/qmlmapwidgethelper.cpp index 27505d192..415cc2483 100644 --- a/mobile-widgets/qmlmapwidgethelper.cpp +++ b/mobile-widgets/qmlmapwidgethelper.cpp @@ -59,7 +59,22 @@ void MapWidgetHelper::reloadMapLocations() void MapWidgetHelper::selectedLocationChanged(MapLocation *location) { - qDebug() << location; + int idx; + struct dive *dive; + m_selectedDiveIds.clear(); + QGeoCoordinate locationCoord = qvariant_cast(location->getRole(MapLocation::Roles::RoleCoordinate)); + for_each_dive (idx, dive) { + struct dive_site *ds = get_dive_site_for_dive(dive); + if (!dive_site_has_gps_location(ds)) + continue; + const qreal latitude = ds->latitude.udeg * 0.000001; + const qreal longitude = ds->longitude.udeg * 0.000001; + QGeoCoordinate dsCoord(latitude, longitude); + if (locationCoord.distanceTo(dsCoord) < m_smallCircleRadius) + m_selectedDiveIds.append(idx); + } + + qDebug() << "selectedDiveIds:" << m_selectedDiveIds; } /* diff --git a/mobile-widgets/qmlmapwidgethelper.h b/mobile-widgets/qmlmapwidgethelper.h index d5cf669fc..514a52161 100644 --- a/mobile-widgets/qmlmapwidgethelper.h +++ b/mobile-widgets/qmlmapwidgethelper.h @@ -27,6 +27,7 @@ private: QObject *m_map; MapLocationModel *m_mapLocationModel; qreal m_smallCircleRadius; + QList m_selectedDiveIds; private slots: void selectedLocationChanged(MapLocation *);