From 9a44c9221139428fa4e3bdf560f6bfdc6fcbe75d Mon Sep 17 00:00:00 2001 From: flow Date: Thu, 2 Jun 2022 19:34:08 -0300 Subject: feat: add MultipleOptionsTask This is a variation of a Sequential Task, in which a subtask failing will prompt the next one to execute, and a subtask being successful will stop the task. This way, this can be used for easily managing fallbacks with tasks. :D Signed-off-by: flow --- launcher/tasks/MultipleOptionsTask.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 launcher/tasks/MultipleOptionsTask.h (limited to 'launcher/tasks/MultipleOptionsTask.h') diff --git a/launcher/tasks/MultipleOptionsTask.h b/launcher/tasks/MultipleOptionsTask.h new file mode 100644 index 00000000..7c508b00 --- /dev/null +++ b/launcher/tasks/MultipleOptionsTask.h @@ -0,0 +1,19 @@ +#pragma once + +#include "SequentialTask.h" + +/* This task type will attempt to do run each of it's subtasks in sequence, + * until one of them succeeds. When that happens, the remaining tasks will not run. + * */ +class MultipleOptionsTask : public SequentialTask +{ + Q_OBJECT +public: + explicit MultipleOptionsTask(QObject *parent = nullptr, const QString& task_name = ""); + virtual ~MultipleOptionsTask() = default; + +private +slots: + void startNext() override; + void subTaskFailed(const QString &msg) override; +}; -- cgit