diff options
Diffstat (limited to 'logic/tasks/Task.cpp')
-rw-r--r-- | logic/tasks/Task.cpp | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/logic/tasks/Task.cpp b/logic/tasks/Task.cpp index eaeff4c2..3c4e3188 100644 --- a/logic/tasks/Task.cpp +++ b/logic/tasks/Task.cpp @@ -23,12 +23,18 @@ Task::Task(QObject *parent) : QObject(parent) void Task::setStatus(const QString &new_status) { - emit status(new_status); + if(m_status != new_status) + { + m_status = new_status; + emit status(m_status); + } } -void Task::setProgress(int new_progress) +void Task::setProgress(qint64 current, qint64 total) { - emit progress(new_progress, 100); + m_progress = current; + m_progressTotal = total; + emit progress(m_progress, m_progressTotal); } void Task::start() @@ -41,6 +47,7 @@ void Task::start() void Task::emitFailed(QString reason) { m_running = false; + m_finished = true; m_succeeded = false; m_failReason = reason; qCritical() << "Task failed: " << reason; @@ -52,6 +59,7 @@ void Task::emitSucceeded() { if (!m_running) { return; } // Don't succeed twice. m_running = false; + m_finished = true; m_succeeded = true; qDebug() << "Task succeeded"; emit succeeded(); @@ -63,6 +71,11 @@ bool Task::isRunning() const return m_running; } +bool Task::isFinished() const +{ + return m_finished; +} + bool Task::successful() const { return m_succeeded; |