cutter/src/common/RefreshDeferrer.cpp

38 lines
796 B
C++
Raw Normal View History

2019-01-12 19:25:43 +00:00
#include "RefreshDeferrer.h"
#include "widgets/CutterDockWidget.h"
RefreshDeferrer::RefreshDeferrer(RefreshDeferrerAccumulator *acc, QObject *parent) : QObject(parent),
acc(acc)
{
}
RefreshDeferrer::~RefreshDeferrer()
{
delete acc;
}
bool RefreshDeferrer::attemptRefresh(RefreshDeferrerParams params)
{
if (dockWidget->isVisibleToUser()) {
return true;
} else {
dirty = true;
acc->accumulate(params);
return false;
}
}
void RefreshDeferrer::registerFor(CutterDockWidget *dockWidget)
{
this->dockWidget = dockWidget;
connect(dockWidget, &CutterDockWidget::becameVisibleToUser, this, [this]() {
if(dirty) {
emit refreshNow(acc->result());
acc->clear();
dirty = false;
}
});
}