aboutsummaryrefslogtreecommitdiff
path: root/launcher/tasks
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-07-31 17:56:51 -0300
committerflow <flowlnlnln@gmail.com>2022-09-20 18:36:09 -0300
commit6a50fa35ec0dcb8b91ffc0ce70d4d8b9ee5d9fb8 (patch)
treea43093e5776a1786c7ef7ccbad4d51572de1a56c /launcher/tasks
parent654157096985d0cec0d3b7bb53f39a5c0157206e (diff)
downloadPrismLauncher-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.h12
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;
};