From 488eb1542336088245841d79549e26938e2d3fd9 Mon Sep 17 00:00:00 2001 From: Berthold Stoeger Date: Fri, 30 Aug 2019 17:38:54 +0200 Subject: Desktop: show all selected dive sites on click When clicking a dive site on the map, the QML code would set the selected dive site, but then all dives of dive sites in the vicinity were set. But still only the clicked-on dive site was shown. Therefore, don't set the list of selected dive sites in QML, but later in DiveListView::selectDives(), where we know all the dives that were selected. This, again, gives nasty entanglement of diverse widgets and models. Signed-off-by: Berthold Stoeger --- map-widget/qml/MapWidget.qml | 4 +--- map-widget/qmlmapwidgethelper.cpp | 6 ++++++ map-widget/qmlmapwidgethelper.h | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'map-widget') diff --git a/map-widget/qml/MapWidget.qml b/map-widget/qml/MapWidget.qml index 5b85aaa24..fb5545e88 100644 --- a/map-widget/qml/MapWidget.qml +++ b/map-widget/qml/MapWidget.qml @@ -69,10 +69,8 @@ Item { drag.target: (mapHelper.editMode && mapHelper.model.isSelected(model.divesite)) ? mapItem : undefined anchors.fill: parent onClicked: { - if (!mapHelper.editMode && model.divesite) { - mapHelper.model.setSelected(model.divesite) + if (!mapHelper.editMode && model.divesite) mapHelper.selectedLocationChanged(model.divesite) - } } onDoubleClicked: map.doubleClickHandler(mapItem.coordinate) onReleased: { diff --git a/map-widget/qmlmapwidgethelper.cpp b/map-widget/qmlmapwidgethelper.cpp index 02bfa78a2..fe43c6fce 100644 --- a/map-widget/qmlmapwidgethelper.cpp +++ b/map-widget/qmlmapwidgethelper.cpp @@ -46,6 +46,11 @@ void MapWidgetHelper::centerOnDiveSite(struct dive_site *ds) } } +void MapWidgetHelper::setSelected(const QVector &divesites) +{ + m_mapLocationModel->setSelected(divesites); +} + void MapWidgetHelper::centerOnSelectedDiveSite() { QVector selDS = m_mapLocationModel->selectedDs(); @@ -115,6 +120,7 @@ void MapWidgetHelper::reloadMapLocations() void MapWidgetHelper::selectionChanged() { + updateEditMode(); m_mapLocationModel->selectionChanged(); } diff --git a/map-widget/qmlmapwidgethelper.h b/map-widget/qmlmapwidgethelper.h index 046cb4ce1..f2c5eb6bb 100644 --- a/map-widget/qmlmapwidgethelper.h +++ b/map-widget/qmlmapwidgethelper.h @@ -37,6 +37,7 @@ public: Q_INVOKABLE void selectVisibleLocations(); Q_INVOKABLE void selectedLocationChanged(struct dive_site *ds); void selectionChanged(); + void setSelected(const QVector &divesites); QString pluginObject(); bool editMode() const; -- cgit v1.2.3-70-g09d2