aboutsummaryrefslogtreecommitdiff
path: root/launcher/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/tasks')
-rw-r--r--launcher/tasks/SequentialTask.cpp20
-rw-r--r--launcher/tasks/SequentialTask.h2
2 files changed, 16 insertions, 6 deletions
diff --git a/launcher/tasks/SequentialTask.cpp b/launcher/tasks/SequentialTask.cpp
index 7f03ad2e..f1e1a889 100644
--- a/launcher/tasks/SequentialTask.cpp
+++ b/launcher/tasks/SequentialTask.cpp
@@ -1,5 +1,7 @@
#include "SequentialTask.h"
+#include <QDebug>
+
SequentialTask::SequentialTask(QObject* parent, const QString& task_name) : Task(parent), m_name(task_name), m_currentIndex(-1) {}
SequentialTask::~SequentialTask()
@@ -39,14 +41,15 @@ bool SequentialTask::abort()
emit aborted();
emit finished();
}
- m_queue.clear();
+
+ m_aborted = true;
return true;
}
bool succeeded = m_queue[m_currentIndex]->abort();
- m_queue.clear();
+ m_aborted = succeeded;
- if(succeeded)
+ if (succeeded)
emitAborted();
return succeeded;
@@ -54,10 +57,14 @@ bool SequentialTask::abort()
void SequentialTask::startNext()
{
- if (m_currentIndex != -1) {
- Task::Ptr previous = m_queue[m_currentIndex];
+ if (m_aborted)
+ return;
+
+ if (m_currentIndex != -1 && m_currentIndex < m_queue.size()) {
+ Task::Ptr previous = m_queue.at(m_currentIndex);
disconnect(previous.get(), 0, this, 0);
}
+
m_currentIndex++;
if (m_queue.isEmpty() || m_currentIndex >= m_queue.size()) {
emitSucceeded();
@@ -76,6 +83,8 @@ void SequentialTask::startNext()
setStatus(tr("Executing task %1 out of %2").arg(m_currentIndex + 1).arg(m_queue.size()));
setStepStatus(next->isMultiStep() ? next->getStepStatus() : next->getStatus());
+ setProgress(m_currentIndex + 1, m_queue.count());
+
next->start();
}
@@ -93,7 +102,6 @@ void SequentialTask::subTaskProgress(qint64 current, qint64 total)
setProgress(0, 100);
return;
}
- setProgress(m_currentIndex + 1, m_queue.count());
m_stepProgress = current;
m_stepTotalProgress = total;
diff --git a/launcher/tasks/SequentialTask.h b/launcher/tasks/SequentialTask.h
index e10cb6f7..942ebec2 100644
--- a/launcher/tasks/SequentialTask.h
+++ b/launcher/tasks/SequentialTask.h
@@ -44,4 +44,6 @@ protected:
qint64 m_stepProgress = 0;
qint64 m_stepTotalProgress = 100;
+
+ bool m_aborted = false;
};