aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/committable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'SQLiteStudio3/coreSQLiteStudio/committable.cpp')
-rw-r--r--SQLiteStudio3/coreSQLiteStudio/committable.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/SQLiteStudio3/coreSQLiteStudio/committable.cpp b/SQLiteStudio3/coreSQLiteStudio/committable.cpp
new file mode 100644
index 0000000..892437a
--- /dev/null
+++ b/SQLiteStudio3/coreSQLiteStudio/committable.cpp
@@ -0,0 +1,41 @@
+#include "committable.h"
+#include <QDebug>
+
+Committable::ConfirmFunction Committable::confirmFunc = nullptr;
+QList<Committable*> Committable::instances;
+
+Committable::Committable()
+{
+ instances << this;
+}
+
+Committable::~Committable()
+{
+ instances.removeOne(this);
+}
+
+void Committable::init(Committable::ConfirmFunction confirmFunc)
+{
+ Committable::confirmFunc = confirmFunc;
+}
+
+bool Committable::canQuit()
+{
+ if (!confirmFunc)
+ {
+ qCritical() << "No confirm function defined for Committable!";
+ return true;
+ }
+
+ QList<Committable*> uncommitedInstances;
+ for (Committable* c : instances)
+ {
+ if (c->isUncommited())
+ uncommitedInstances << c;
+ }
+
+ if (uncommitedInstances.size() == 0)
+ return true;
+
+ return confirmFunc(uncommitedInstances);
+}