mobile/undo: create undo-action and connect to undo of dive deletion

Still buggy: Removing a dive followed by undo shows the wrong dive
in the list. But clicking on it gives the correct dive.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Berthold Stoeger 2019-11-14 22:19:58 +01:00 committed by Dirk Hohndel
parent c0095f690f
commit 9fb52cc45c
2 changed files with 6 additions and 16 deletions

View file

@ -155,6 +155,7 @@ QMLManager::QMLManager() : m_locationServiceEnabled(false),
alreadySaving(false), alreadySaving(false),
m_pluggedInDeviceName(""), m_pluggedInDeviceName(""),
m_showNonDiveComputers(false), m_showNonDiveComputers(false),
undoAction(Command::undoAction(this)),
m_oldStatus(qPrefCloudStorage::CS_UNKNOWN) m_oldStatus(qPrefCloudStorage::CS_UNKNOWN)
{ {
m_instance = this; m_instance = this;
@ -1383,24 +1384,10 @@ void QMLManager::saveChangesCloud(bool forceRemoteSync)
git_local_only = glo; git_local_only = glo;
} }
bool QMLManager::undoDelete(int id) bool QMLManager::undoDelete(int)
{ {
if (!deletedDive || deletedDive->id != id) { undoAction->activate(QAction::Trigger);
appendTextToLog("Trying to undo delete but can't find the deleted dive");
return false;
}
if (deletedTrip)
insert_trip(deletedTrip, &trip_table);
if (deletedDive->divetrip) {
struct dive_trip *trip = deletedDive->divetrip;
deletedDive->divetrip = NULL;
add_dive_to_trip(deletedDive, trip);
}
record_dive(deletedDive);
DiveListModel::instance()->insertDive(get_idx_by_uniq_id(deletedDive->id));
changesNeedSaving(); changesNeedSaving();
deletedDive = NULL;
deletedTrip = NULL;
return true; return true;
} }

View file

@ -19,6 +19,8 @@
#include "core/settings/qPrefCloudStorage.h" #include "core/settings/qPrefCloudStorage.h"
#include "core/subsurface-qt/divelistnotifier.h" #include "core/subsurface-qt/divelistnotifier.h"
class QAction;
class QMLManager : public QObject { class QMLManager : public QObject {
Q_OBJECT Q_OBJECT
Q_PROPERTY(QString logText READ logText WRITE setLogText NOTIFY logTextChanged) Q_PROPERTY(QString logText READ logText WRITE setLogText NOTIFY logTextChanged)
@ -264,6 +266,7 @@ private:
bool m_showNonDiveComputers; bool m_showNonDiveComputers;
struct dive *m_copyPasteDive = NULL; struct dive *m_copyPasteDive = NULL;
struct dive_components what; struct dive_components what;
QAction *undoAction;
bool verifyCredentials(QString email, QString password, QString pin); bool verifyCredentials(QString email, QString password, QString pin);