mapwidgethelper: add the selectVisibleLocations() method
The new method selectVisibleLocations() contains a routine to find all visible MapLocation objects in the Map viewport and select the dives associated to said MapLocation objects. This method is to be invoked from the QML context menu. Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
This commit is contained in:
committed by
Dirk Hohndel
parent
5db2460168
commit
93896e54db
@@ -144,6 +144,33 @@ void MapWidgetHelper::selectedLocationChanged(MapLocation *location)
|
||||
emit selectedDivesChanged(m_selectedDiveIds);
|
||||
}
|
||||
|
||||
void MapWidgetHelper::selectVisibleLocations()
|
||||
{
|
||||
int idx;
|
||||
struct dive *dive;
|
||||
bool selectedFirst = false;
|
||||
m_selectedDiveIds.clear();
|
||||
for_each_dive (idx, dive) {
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
emit selectedDivesChanged(m_selectedDiveIds);
|
||||
}
|
||||
|
||||
/*
|
||||
* Based on a 2D Map widget circle with center "coord" and radius SMALL_CIRCLE_RADIUS_PX,
|
||||
* obtain a "small circle" with radius m_smallCircleRadius in meters:
|
||||
|
||||
@@ -24,6 +24,7 @@ public:
|
||||
Q_INVOKABLE void copyToClipboardCoordinates(QGeoCoordinate coord, bool formatTraditional);
|
||||
Q_INVOKABLE void calculateSmallCircleRadius(QGeoCoordinate coord);
|
||||
Q_INVOKABLE void updateCurrentDiveSiteCoordinates(quint32 uuid, QGeoCoordinate coord);
|
||||
Q_INVOKABLE void selectVisibleLocations();
|
||||
bool editMode();
|
||||
void setEditMode(bool editMode);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user