Merge pull request #1052 from flowln/resource_model

This commit is contained in:
Sefa Eyeoglu
2022-08-28 16:52:53 +02:00
committed by GitHub
46 changed files with 2080 additions and 1237 deletions

View File

@ -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();
}

View File

@ -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;
};