mobile UI: make the text of the undo/redo action available to QML

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2020-01-11 15:26:13 -08:00
parent 41072cf48f
commit 8e6cc9b8d0
2 changed files with 32 additions and 1 deletions

View file

@ -16,6 +16,7 @@
#include <QFile>
#include <QtConcurrent>
#include <QFuture>
#include <QUndoStack>
#include <QBluetoothLocalDevice>
@ -269,6 +270,10 @@ QMLManager::QMLManager() : m_locationServiceEnabled(false),
// careful - changing verbose at runtime isn't enough (of course that could be added if we want it)
if (verbose)
connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &QMLManager::divesChanged);
// get updates to the undo/redo texts
connect(Command::getUndoStack(), &QUndoStack::undoTextChanged, this, &QMLManager::undoTextChanged);
connect(Command::getUndoStack(), &QUndoStack::redoTextChanged, this, &QMLManager::redoTextChanged);
}
void QMLManager::applicationStateChanged(Qt::ApplicationState state)
@ -1392,7 +1397,13 @@ void QMLManager::saveChangesCloud(bool forceRemoteSync)
void QMLManager::undoDelete(int)
{
undoAction->activate(QAction::Trigger);
Command::getUndoStack()->undo();
changesNeedSaving();
}
void QMLManager::redo()
{
Command::getUndoStack()->redo();
changesNeedSaving();
}
@ -2199,3 +2210,15 @@ void QMLManager::divesChanged(const QVector<dive *> &dives, DiveField field)
// invalidate_dive_cache(d);
}
}
QString QMLManager::getUndoText() const
{
QString undoText = Command::getUndoStack()->undoText();
return undoText;
}
QString QMLManager::getRedoText() const
{
QString redoText = Command::getUndoStack()->redoText();
return redoText;
}

View file

@ -51,6 +51,8 @@ class QMLManager : public QObject {
Q_PROPERTY(QString pluggedInDeviceName MEMBER m_pluggedInDeviceName NOTIFY pluggedInDeviceNameChanged)
Q_PROPERTY(bool showNonDiveComputers MEMBER m_showNonDiveComputers WRITE setShowNonDiveComputers NOTIFY showNonDiveComputersChanged)
Q_PROPERTY(qPrefCloudStorage::cloud_status oldStatus MEMBER m_oldStatus WRITE setOldStatus NOTIFY oldStatusChanged)
Q_PROPERTY(QString undoText READ getUndoText NOTIFY undoTextChanged) // this is a read-only property
Q_PROPERTY(QString redoText READ getRedoText NOTIFY redoTextChanged) // this is a read-only property
public:
QMLManager();
@ -98,6 +100,9 @@ public:
int DC_deviceId() const;
void DC_setDeviceId(int deviceId);
QString getUndoText() const;
QString getRedoText() const;
Q_INVOKABLE QStringList getProductListFromVendor(const QString& vendor);
Q_INVOKABLE int getMatchingAddress(const QString &vendor, const QString &product);
Q_INVOKABLE int getDetectedVendorIndex();
@ -191,6 +196,7 @@ public slots:
bool toggleCylinders(bool toggle);
bool toggleWeights(bool toggle);
void undoDelete(int id);
void redo();
int addDive();
void applyGpsData();
void populateGpsData();
@ -286,6 +292,8 @@ signals:
void showNonDiveComputersChanged();
void DC_ForceDownloadChanged();
void oldStatusChanged();
void undoTextChanged();
void redoTextChanged();
// From upload process
void uploadFinish(bool success, const QString &text);