From 6e6cce770b671cea58251475546c77c5bc1468be Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Thu, 14 Apr 2016 06:01:36 -0700 Subject: QML UI: keep QML manager and the UI in sync about selected dive The manager can now directly update the index of the selected dive, and the UI tells the manager the timestamp of the currently selected dive. This allows the manager to pick the best possible dive as selected dive if things change (for example if the dive list gets reloaded because it changed in cloud storage). Fixes #1009 Signed-off-by: Dirk Hohndel --- mobile-widgets/qml/DiveDetails.qml | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'mobile-widgets/qml') diff --git a/mobile-widgets/qml/DiveDetails.qml b/mobile-widgets/qml/DiveDetails.qml index d562e0a98..262f2042c 100644 --- a/mobile-widgets/qml/DiveDetails.qml +++ b/mobile-widgets/qml/DiveDetails.qml @@ -9,6 +9,7 @@ import org.kde.kirigami 1.0 as Kirigami Kirigami.Page { id: diveDetailsPage property alias currentIndex: diveDetailsListView.currentIndex + property alias currentItem: diveDetailsListView.currentItem property alias dive_id: detailsEdit.dive_id property alias number: detailsEdit.number property alias date: detailsEdit.dateText @@ -25,6 +26,7 @@ Kirigami.Page { property alias startpressure: detailsEdit.startpressureText property alias endpressure: detailsEdit.endpressureText property alias gasmix: detailsEdit.gasmixText + property int updateCurrentIdx: manager.updateSelectedDive title: diveDetailsListView.currentItem ? diveDetailsListView.currentItem.modelData.dive.location : "Dive details" state: "view" @@ -108,6 +110,17 @@ Kirigami.Page { // if we were in view mode, don't accept the event and pop the page } + onUpdateCurrentIdxChanged: { + if (diveDetailsListView.currentIndex != updateCurrentIdx) { + diveDetailsListView.currentIndex = updateCurrentIdx + manager.selectedDiveTimestamp = diveDetailsListView.currentItem.modelData.dive.timestamp + } + } + + onCurrentItemChanged: { + manager.selectedDiveTimestamp = diveDetailsListView.currentItem.modelData.dive.timestamp + } + function showDiveIndex(index) { currentIndex = index; diveDetailsListView.positionViewAtIndex(index, ListView.Beginning); -- cgit v1.2.3-70-g09d2