Merge pull request #1052 from flowln/resource_model
This commit is contained in:
@ -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();
|
||||
}
|
||||
|
@ -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;
|
||||
};
|
||||
|
Reference in New Issue
Block a user