aboutsummaryrefslogtreecommitdiff
path: root/launcher/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/tasks')
-rw-r--r--launcher/tasks/Task.cpp24
-rw-r--r--launcher/tasks/Task.h12
2 files changed, 26 insertions, 10 deletions
diff --git a/launcher/tasks/Task.cpp b/launcher/tasks/Task.cpp
index bb71b98c..b4babdd4 100644
--- a/launcher/tasks/Task.cpp
+++ b/launcher/tasks/Task.cpp
@@ -37,8 +37,9 @@
#include <QDebug>
-Task::Task(QObject *parent) : QObject(parent)
+Task::Task(QObject *parent, bool show_debug) : QObject(parent), m_show_debug(show_debug)
{
+ setAutoDelete(false);
}
void Task::setStatus(const QString &new_status)
@@ -63,27 +64,32 @@ void Task::start()
{
case State::Inactive:
{
- qDebug() << "Task" << describe() << "starting for the first time";
+ if (m_show_debug)
+ qDebug() << "Task" << describe() << "starting for the first time";
break;
}
case State::AbortedByUser:
{
- qDebug() << "Task" << describe() << "restarting for after being aborted by user";
+ if (m_show_debug)
+ qDebug() << "Task" << describe() << "restarting for after being aborted by user";
break;
}
case State::Failed:
{
- qDebug() << "Task" << describe() << "restarting for after failing at first";
+ if (m_show_debug)
+ qDebug() << "Task" << describe() << "restarting for after failing at first";
break;
}
case State::Succeeded:
{
- qDebug() << "Task" << describe() << "restarting for after succeeding at first";
+ if (m_show_debug)
+ qDebug() << "Task" << describe() << "restarting for after succeeding at first";
break;
}
case State::Running:
{
- qWarning() << "The launcher tried to start task" << describe() << "while it was already running!";
+ if (m_show_debug)
+ qWarning() << "The launcher tried to start task" << describe() << "while it was already running!";
return;
}
}
@@ -118,7 +124,8 @@ void Task::emitAborted()
}
m_state = State::AbortedByUser;
m_failReason = "Aborted.";
- qDebug() << "Task" << describe() << "aborted.";
+ if (m_show_debug)
+ qDebug() << "Task" << describe() << "aborted.";
emit aborted();
emit finished();
}
@@ -132,7 +139,8 @@ void Task::emitSucceeded()
return;
}
m_state = State::Succeeded;
- qDebug() << "Task" << describe() << "succeeded";
+ if (m_show_debug)
+ qDebug() << "Task" << describe() << "succeeded";
emit succeeded();
emit finished();
}
diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h
index aafaf68c..2baf0188 100644
--- a/launcher/tasks/Task.h
+++ b/launcher/tasks/Task.h
@@ -35,9 +35,11 @@
#pragma once
+#include <QRunnable>
+
#include "QObjectPtr.h"
-class Task : public QObject {
+class Task : public QObject, public QRunnable {
Q_OBJECT
public:
using Ptr = shared_qobject_ptr<Task>;
@@ -45,7 +47,7 @@ class Task : public QObject {
enum class State { Inactive, Running, Succeeded, Failed, AbortedByUser };
public:
- explicit Task(QObject* parent = 0);
+ explicit Task(QObject* parent = 0, bool show_debug_log = true);
virtual ~Task() = default;
bool isRunning() const;
@@ -95,6 +97,9 @@ class Task : public QObject {
void stepStatus(QString status);
public slots:
+ // QRunnable's interface
+ void run() override { start(); }
+
virtual void start();
virtual bool abort() { if(canAbort()) emitAborted(); return canAbort(); };
@@ -117,4 +122,7 @@ class Task : public QObject {
QString m_status;
int m_progress = 0;
int m_progressTotal = 100;
+
+ // TODO: Nuke in favor of QLoggingCategory
+ bool m_show_debug = true;
};