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),
m_pluggedInDeviceName(""),
m_showNonDiveComputers(false),
undoAction(Command::undoAction(this)),
m_oldStatus(qPrefCloudStorage::CS_UNKNOWN)
{
m_instance = this;
@ -1383,24 +1384,10 @@ void QMLManager::saveChangesCloud(bool forceRemoteSync)
git_local_only = glo;
}
bool QMLManager::undoDelete(int id)
bool QMLManager::undoDelete(int)
{
if (!deletedDive || deletedDive->id != id) {
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));
undoAction->activate(QAction::Trigger);
changesNeedSaving();
deletedDive = NULL;
deletedTrip = NULL;
return true;
}

View file

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