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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#include "abstractoperation.h"
#include <QTimer>
AbstractOperation::AbstractOperation(QObject *parent):
QObject(parent),
m_timeoutTimer(new QTimer(this)),
m_operationState(BasicOperationState::Ready),
m_progress(0.0)
{
connect(m_timeoutTimer, &QTimer::timeout, this, &AbstractOperation::onOperationTimeout);
m_timeoutTimer->setSingleShot(true);
m_timeoutTimer->setInterval(30000);
}
void AbstractOperation::finish()
{
stopTimeout();
setOperationState(AbstractOperation::Finished);
emit finished();
}
int AbstractOperation::operationState() const
{
return m_operationState;
}
void AbstractOperation::setTimeout(int msec)
{
m_timeoutTimer->setInterval(msec);
}
double AbstractOperation::progress() const
{
return m_progress;
}
void AbstractOperation::onOperationTimeout()
{
finishWithError(BackendError::TimeoutError, QStringLiteral("Operation timeout (generic)"));
}
void AbstractOperation::setOperationState(int state)
{
m_operationState = state;
}
void AbstractOperation::finishWithError(BackendError::ErrorType error, const QString &errorString)
{
setError(error, errorString);
finish();
}
void AbstractOperation::setProgress(double newProgress)
{
if(qFuzzyCompare(m_progress, newProgress)) {
return;
}
m_progress = newProgress;
emit progressChanged();
}
void AbstractOperation::startTimeout()
{
m_timeoutTimer->start();
}
void AbstractOperation::stopTimeout()
{
m_timeoutTimer->stop();
}
|