summaryrefslogtreecommitdiffstats
path: root/api/logic/tasks/Task.h
diff options
context:
space:
mode:
authorThomas Groman <tgroman@nuegia.net>2019-09-19 00:41:48 -0700
committerThomas Groman <tgroman@nuegia.net>2019-09-19 00:41:48 -0700
commit32b3ed0a1362a4b0798ad71fac3450fb77cb7e41 (patch)
tree7be7a2f602e6a5af7bc2db86bef9cf2a659c3d3d /api/logic/tasks/Task.h
parent5fb2c6334e7d5237db11695b4c0ec0f2d1e47c88 (diff)
downloadMultiMC-32b3ed0a1362a4b0798ad71fac3450fb77cb7e41.tar
MultiMC-32b3ed0a1362a4b0798ad71fac3450fb77cb7e41.tar.gz
MultiMC-32b3ed0a1362a4b0798ad71fac3450fb77cb7e41.tar.lz
MultiMC-32b3ed0a1362a4b0798ad71fac3450fb77cb7e41.tar.xz
MultiMC-32b3ed0a1362a4b0798ad71fac3450fb77cb7e41.zip
merged from 0.6.7 codebase
Diffstat (limited to 'api/logic/tasks/Task.h')
-rw-r--r--api/logic/tasks/Task.h108
1 files changed, 58 insertions, 50 deletions
diff --git a/api/logic/tasks/Task.h b/api/logic/tasks/Task.h
index 643f8510..72bfeca8 100644
--- a/api/logic/tasks/Task.h
+++ b/api/logic/tasks/Task.h
@@ -1,4 +1,4 @@
-/* Copyright 2013-2018 MultiMC Contributors
+/* Copyright 2013-2019 MultiMC Contributors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,78 +23,86 @@
class MULTIMC_LOGIC_EXPORT Task : public QObject
{
- Q_OBJECT
+ Q_OBJECT
public:
- explicit Task(QObject *parent = 0);
- virtual ~Task() {};
+ enum class State
+ {
+ Inactive,
+ Running,
+ Succeeded,
+ Failed,
+ AbortedByUser
+ };
- bool isRunning() const;
- bool isFinished() const;
- bool wasSuccessful() const;
+public:
+ explicit Task(QObject *parent = 0);
+ virtual ~Task() {};
+
+ bool isRunning() const;
+ bool isFinished() const;
+ bool wasSuccessful() const;
- /*!
- * Returns the string that was passed to emitFailed as the error message when the task failed.
- * If the task hasn't failed, returns an empty string.
- */
- QString failReason() const;
+ /*!
+ * Returns the string that was passed to emitFailed as the error message when the task failed.
+ * If the task hasn't failed, returns an empty string.
+ */
+ QString failReason() const;
- virtual QStringList warnings() const;
+ virtual QStringList warnings() const;
- virtual bool canAbort() const { return false; }
+ virtual bool canAbort() const { return false; }
- QString getStatus()
- {
- return m_status;
- }
+ QString getStatus()
+ {
+ return m_status;
+ }
- qint64 getProgress()
- {
- return m_progress;
- }
+ qint64 getProgress()
+ {
+ return m_progress;
+ }
- qint64 getTotalProgress()
- {
- return m_progressTotal;
- }
+ qint64 getTotalProgress()
+ {
+ return m_progressTotal;
+ }
protected:
- void logWarning(const QString & line);
+ void logWarning(const QString & line);
private:
- QString describe();
+ QString describe();
signals:
- void started();
- void progress(qint64 current, qint64 total);
- void finished();
- void succeeded();
- void failed(QString reason);
- void status(QString status);
+ void started();
+ void progress(qint64 current, qint64 total);
+ void finished();
+ void succeeded();
+ void failed(QString reason);
+ void status(QString status);
public slots:
- virtual void start();
- virtual bool abort() { return false; };
+ virtual void start();
+ virtual bool abort() { return false; };
protected:
- virtual void executeTask() = 0;
+ virtual void executeTask() = 0;
protected slots:
- virtual void emitSucceeded();
- virtual void emitAborted();
- virtual void emitFailed(QString reason);
+ virtual void emitSucceeded();
+ virtual void emitAborted();
+ virtual void emitFailed(QString reason);
public slots:
- void setStatus(const QString &status);
- void setProgress(qint64 current, qint64 total);
+ void setStatus(const QString &status);
+ void setProgress(qint64 current, qint64 total);
private:
- bool m_running = false;
- bool m_finished = false;
- bool m_succeeded = false;
- QStringList m_Warnings;
- QString m_failReason = "";
- QString m_status;
- int m_progress = 0;
- int m_progressTotal = 100;
+ State m_state = State::Inactive;
+ QStringList m_Warnings;
+ QString m_failReason = "";
+ QString m_status;
+ int m_progress = 0;
+ int m_progressTotal = 100;
};