diff options
author | flow <flowlnlnln@gmail.com> | 2022-07-31 17:56:51 -0300 |
---|---|---|
committer | flow <flowlnlnln@gmail.com> | 2022-09-20 18:36:09 -0300 |
commit | 6a50fa35ec0dcb8b91ffc0ce70d4d8b9ee5d9fb8 (patch) | |
tree | a43093e5776a1786c7ef7ccbad4d51572de1a56c /launcher/tasks | |
parent | 654157096985d0cec0d3b7bb53f39a5c0157206e (diff) | |
download | PrismLauncher-6a50fa35ec0dcb8b91ffc0ce70d4d8b9ee5d9fb8.tar.gz PrismLauncher-6a50fa35ec0dcb8b91ffc0ce70d4d8b9ee5d9fb8.tar.bz2 PrismLauncher-6a50fa35ec0dcb8b91ffc0ce70d4d8b9ee5d9fb8.zip |
feat: add canAbort() status change in Task
By now, it's a recurring pattern of wanting to restrict aborting in
certain situations. This avoids further code duplication, and adds a
signal that external users can hook up to to respond to such change.
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher/tasks')
-rw-r--r-- | launcher/tasks/Task.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index 2baf0188..f2872643 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -68,7 +68,7 @@ class Task : public QObject, public QRunnable { virtual QStringList warnings() const; - virtual bool canAbort() const { return false; } + virtual bool canAbort() const { return m_can_abort; } auto getState() const -> State { return m_state; } @@ -96,6 +96,10 @@ class Task : public QObject, public QRunnable { void status(QString status); void stepStatus(QString status); + /** Emitted when the canAbort() status has changed. + */ + void abortStatusChanged(bool can_abort); + public slots: // QRunnable's interface void run() override { start(); } @@ -103,6 +107,8 @@ class Task : public QObject, public QRunnable { virtual void start(); virtual bool abort() { if(canAbort()) emitAborted(); return canAbort(); }; + void setAbortStatus(bool can_abort) { m_can_abort = can_abort; emit abortStatusChanged(can_abort); } + protected: virtual void executeTask() = 0; @@ -125,4 +131,8 @@ class Task : public QObject, public QRunnable { // TODO: Nuke in favor of QLoggingCategory bool m_show_debug = true; + + private: + // Change using setAbortStatus + bool m_can_abort = false; }; |