From 1b58041cac455e11a1bd2395d5e1afaf2d182076 Mon Sep 17 00:00:00 2001
From: "Robert C. Helling" <[email protected]>
Date: Mon, 11 Apr 2016 21:06:19 +0200
Subject: [PATCH] Upon undoing a dive deletion select that dive
To: [email protected]

Before it had the next dive still selected.

Fixes #1053

Signed-off-by: Robert C. Helling <[email protected]>
---
 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)


Attachment: signature.asc
Description: Message signed with OpenPGP using GPGMail

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to