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);
}
|