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 <QFile>
#include <QtConcurrent> #include <QtConcurrent>
#include <QFuture> #include <QFuture>
#include <QUndoStack>
#include <QBluetoothLocalDevice> #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) // careful - changing verbose at runtime isn't enough (of course that could be added if we want it)
if (verbose) if (verbose)
connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &QMLManager::divesChanged); 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) void QMLManager::applicationStateChanged(Qt::ApplicationState state)
@ -1392,7 +1397,13 @@ void QMLManager::saveChangesCloud(bool forceRemoteSync)
void QMLManager::undoDelete(int) void QMLManager::undoDelete(int)
{ {
undoAction->activate(QAction::Trigger); Command::getUndoStack()->undo();
changesNeedSaving();
}
void QMLManager::redo()
{
Command::getUndoStack()->redo();
changesNeedSaving(); changesNeedSaving();
} }
@ -2199,3 +2210,15 @@ void QMLManager::divesChanged(const QVector<dive *> &dives, DiveField field)
// invalidate_dive_cache(d); // 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(QString pluggedInDeviceName MEMBER m_pluggedInDeviceName NOTIFY pluggedInDeviceNameChanged)
Q_PROPERTY(bool showNonDiveComputers MEMBER m_showNonDiveComputers WRITE setShowNonDiveComputers NOTIFY showNonDiveComputersChanged) 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(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: public:
QMLManager(); QMLManager();
@ -98,6 +100,9 @@ public:
int DC_deviceId() const; int DC_deviceId() const;
void DC_setDeviceId(int deviceId); void DC_setDeviceId(int deviceId);
QString getUndoText() const;
QString getRedoText() const;
Q_INVOKABLE QStringList getProductListFromVendor(const QString& vendor); Q_INVOKABLE QStringList getProductListFromVendor(const QString& vendor);
Q_INVOKABLE int getMatchingAddress(const QString &vendor, const QString &product); Q_INVOKABLE int getMatchingAddress(const QString &vendor, const QString &product);
Q_INVOKABLE int getDetectedVendorIndex(); Q_INVOKABLE int getDetectedVendorIndex();
@ -191,6 +196,7 @@ public slots:
bool toggleCylinders(bool toggle); bool toggleCylinders(bool toggle);
bool toggleWeights(bool toggle); bool toggleWeights(bool toggle);
void undoDelete(int id); void undoDelete(int id);
void redo();
int addDive(); int addDive();
void applyGpsData(); void applyGpsData();
void populateGpsData(); void populateGpsData();
@ -286,6 +292,8 @@ signals:
void showNonDiveComputersChanged(); void showNonDiveComputersChanged();
void DC_ForceDownloadChanged(); void DC_ForceDownloadChanged();
void oldStatusChanged(); void oldStatusChanged();
void undoTextChanged();
void redoTextChanged();
// From upload process // From upload process
void uploadFinish(bool success, const QString &text); void uploadFinish(bool success, const QString &text);