aboutsummaryrefslogtreecommitdiffstats
path: root/SQLiteStudio3/coreSQLiteStudio/committable.cpp
blob: dd35244085ad2ce108baaa47e8c94e10340ec0d3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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*> uncommittedInstances;
    for (Committable* c : instances)
    {
        if (c->isUncommitted())
            uncommittedInstances << c;
    }

    if (uncommittedInstances.size() == 0)
        return true;

    return confirmFunc(uncommittedInstances);
}