From 9f34f4f97d6b355dbb670da488e43c5e7f1cd9e7 Mon Sep 17 00:00:00 2001 From: Dirk Hohndel Date: Tue, 29 Oct 2019 19:19:31 +0100 Subject: Mobile: disconnect model while updating dive list If the dive list is connected to the model while the model is updated with the downloaded dives, sometimes the UI hangs completely. Disconnecting the model and then reconnecting it does add a fairly noticeable delay on longer dive lists, so there are tradeoffs here. Of course the obvious solution is to make reconnecting the model faster... Signed-off-by: Dirk Hohndel --- mobile-widgets/qml/DownloadFromDiveComputer.qml | 13 +++++++++++-- mobile-widgets/qml/main.qml | 9 +++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/mobile-widgets/qml/DownloadFromDiveComputer.qml b/mobile-widgets/qml/DownloadFromDiveComputer.qml index a916a372e..c5a67f551 100644 --- a/mobile-widgets/qml/DownloadFromDiveComputer.qml +++ b/mobile-widgets/qml/DownloadFromDiveComputer.qml @@ -385,19 +385,28 @@ Kirigami.Page { text: qsTr("Accept") bottomPadding: Kirigami.Units.gridUnit / 2 onClicked: { + manager.appendTextToLog("Save downloaded dives that were selected") busy = true rootItem.showBusy() - manager.appendTextToLog("Save downloaded dives that were selected") + manager.appendTextToLog("temporary disconnecting dive list model") + diveList.diveListModel = null + manager.appendTextToLog("Record dives") importModel.recordDives() manager.saveChangesLocal() + manager.appendTextToLog("resetting model and refreshing the dive list") diveModel.resetInternalData() manager.refreshDiveList() + manager.appendTextToLog("pageStack popping Download page") pageStack.pop() - pageStack.push(diveList) + manager.appendTextToLog("setting up the dive list model again") + diveList.diveListModel = diveModel + manager.appendTextToLog("pageStack switching to dive list") + showDiveList() download.text = qsTr("Download") busy = false rootItem.hideBusy() divesDownloaded = false + manager.appendTextToLog("switch to dive list has completed") } } Controls.Label { diff --git a/mobile-widgets/qml/main.qml b/mobile-widgets/qml/main.qml index a31604a12..2ac521ec4 100644 --- a/mobile-widgets/qml/main.qml +++ b/mobile-widgets/qml/main.qml @@ -103,7 +103,16 @@ Kirigami.ApplicationWindow { pageStack.push(mapPage) else pageStack.currentIndex = i + } + function showDiveList() { + if (globalDrawer.drawerOpen) + globalDrawer.close() + var i=pageIndex(diveList) + if (i === -1) + pageStack.push(diveList) + else + pageStack.currentIndex = i } function pageIndex(pageToFind) { -- cgit v1.2.3-70-g09d2