From 1b58041cac455e11a1bd2395d5e1afaf2d182076 Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 11 Apr 2016 21:06:19 +0200 Subject: [PATCH] Upon undoing a dive deletion select that dive To: subsurface@subsurface-divelog.org Before it had the next dive still selected. Fixes #1053 Signed-off-by: Robert C. Helling --- mobile-widgets/qml/DiveDetails.qml | 3 ++- mobile-widgets/qmlmanager.cpp | 5 +++-- mobile-widgets/qmlmanager.h | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/mobile-widgets/qml/DiveDetails.qml b/mobile-widgets/qml/DiveDetails.qml index 3d146ce..d562e0a 100644 --- a/mobile-widgets/qml/DiveDetails.qml +++ b/mobile-widgets/qml/DiveDetails.qml @@ -54,11 +54,12 @@ Kirigami.Page { onTriggered: { contextDrawer.close() var deletedId = diveDetailsListView.currentItem.modelData.dive.id + var deletedIndex = diveDetailsListView.currentIndex manager.deleteDive(deletedId) stackView.pop() showPassiveNotification("Dive deleted", 3000, "Undo", function() { - manager.undoDelete(deletedId) + diveDetailsListView.currentIndex = manager.undoDelete(deletedId) ? deletedIndex : diveDetailsListView.currentIndex }); } } diff --git a/mobile-widgets/qmlmanager.cpp b/mobile-widgets/qmlmanager.cpp index 6ea9b57..c225f68 100644 --- a/mobile-widgets/qmlmanager.cpp +++ b/mobile-widgets/qmlmanager.cpp @@ -816,11 +816,11 @@ void QMLManager::saveChangesCloud(bool forceRemoteSync) alreadySaving = false; } -void QMLManager::undoDelete(int id) +bool QMLManager::undoDelete(int id) { if (!deletedDive || deletedDive->id != id) { qDebug() << "can't find the deleted dive"; - return; + return false; } if (deletedTrip) insert_trip(&deletedTrip); @@ -840,6 +840,7 @@ void QMLManager::undoDelete(int id) changesNeedSaving(); deletedDive = NULL; deletedTrip = NULL; + return true; } void QMLManager::deleteDive(int id) diff --git a/mobile-widgets/qmlmanager.h b/mobile-widgets/qmlmanager.h index 9609bad..6a0ba45 100644 --- a/mobile-widgets/qmlmanager.h +++ b/mobile-widgets/qmlmanager.h @@ -103,7 +103,7 @@ public slots: void saveChangesLocal(); void saveChangesCloud(bool forceRemoteSync); void deleteDive(int id); - void undoDelete(int id); + bool undoDelete(int id); QString addDive(); void addDiveAborted(int id); void applyGpsData(); -- 2.6.4 (Apple Git-63)