aboutsummaryrefslogtreecommitdiff
path: root/launcher/tasks
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-09-26 08:25:12 -0300
committerGitHub <noreply@github.com>2022-09-26 08:25:12 -0300
commit370c3aa5985698351e706e61c660a3a566a5f09b (patch)
tree5bd62ceec118396d676cf3799edafdb806e4375d /launcher/tasks
parent58a5331f7bafb149c18f560a0363daab65521262 (diff)
parentdd6f670dec7dfd1a9ad6f4595ad5447ac735c737 (diff)
downloadPrismLauncher-370c3aa5985698351e706e61c660a3a566a5f09b.tar.gz
PrismLauncher-370c3aa5985698351e706e61c660a3a566a5f09b.tar.bz2
PrismLauncher-370c3aa5985698351e706e61c660a3a566a5f09b.zip
Merge pull request #894 from flowln/update_from_external_source
epic PR
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..3d607dca 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 setAbortable(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;
};