summaryrefslogtreecommitdiffstats
path: root/commands/command_base.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'commands/command_base.cpp')
-rw-r--r--commands/command_base.cpp56
1 files changed, 56 insertions, 0 deletions
diff --git a/commands/command_base.cpp b/commands/command_base.cpp
new file mode 100644
index 000000000..bef9da09c
--- /dev/null
+++ b/commands/command_base.cpp
@@ -0,0 +1,56 @@
+// SPDX-License-Identifier: GPL-2.0
+
+#include "command_base.h"
+#include "core/qthelper.h" // for updateWindowTitle()
+#include "core/subsurface-qt/DiveListNotifier.h"
+
+namespace Command {
+
+static QUndoStack undoStack;
+
+// General commands
+void init()
+{
+ QObject::connect(&undoStack, &QUndoStack::cleanChanged, &updateWindowTitle);
+}
+
+void clear()
+{
+ undoStack.clear();
+}
+
+void setClean()
+{
+ undoStack.setClean();
+}
+
+bool isClean()
+{
+ return undoStack.isClean();
+}
+
+QAction *undoAction(QObject *parent)
+{
+ return undoStack.createUndoAction(parent, QCoreApplication::translate("Command", "&Undo"));
+}
+
+QAction *redoAction(QObject *parent)
+{
+ return undoStack.createRedoAction(parent, QCoreApplication::translate("Command", "&Redo"));
+}
+
+bool execute(Base *cmd)
+{
+ if (cmd->workToBeDone()) {
+ undoStack.push(cmd);
+ emit diveListNotifier.commandExecuted();
+ return true;
+ } else {
+ delete cmd;
+ return false;
+ }
+}
+
+} // namespace Command
+
+