TaskTree demo: Simplify task creation

Fix workflow policy.
Fix const correctness.
Rename treeRoot into recipe.

Change-Id: Ib0457691001dbb88135027f8c7a34ba671b0b082
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Jarek Kobus
2023-08-30 22:56:53 +02:00
parent d2231365af
commit 7730a329a3

View File

@@ -163,24 +163,22 @@ int main(int argc, char *argv[])
std::unique_ptr<TaskTree> taskTree;
const auto createTask = [](TaskWidget *widget) -> GroupItem {
const auto setupTask = [](TaskWidget *widget) {
return [widget](milliseconds &taskObject) {
taskObject = milliseconds{widget->busyTime() * 1000};
const auto createTask = [](TaskWidget *widget) {
const milliseconds timeout{widget->busyTime() * 1000};
const auto setupTask = [widget, timeout](milliseconds &taskObject) {
taskObject = timeout;
widget->setState(State::Running);
};
};
const Group root {
widget->isSuccess() ? finishAllAndDone : finishAllAndError,
TimeoutTask(setupTask(widget)),
widget->isSuccess() ? stopOnError : finishAllAndError,
TimeoutTask(setupTask),
onGroupDone([widget] { widget->setState(State::Done); }),
onGroupError([widget] { widget->setState(State::Error); })
};
return root;
};
auto treeRoot = [&] {
const auto recipe = [&] {
const Group root {
rootGroup->executeMode(),
rootGroup->workflowPolicy(),
@@ -232,21 +230,21 @@ int main(int argc, char *argv[])
// Non-task GUI handling
auto createTaskTree = [&] {
TaskTree *taskTree = new TaskTree(treeRoot());
const auto createTaskTree = [&] {
TaskTree *taskTree = new TaskTree(recipe());
progressBar->setMaximum(taskTree->progressMaximum());
QObject::connect(taskTree, &TaskTree::progressValueChanged,
progressBar, &QProgressBar::setValue);
return taskTree;
};
auto stopTaskTree = [&] {
const auto stopTaskTree = [&] {
if (taskTree)
taskTree->stop();
// TODO: unlock GUI controls?
};
auto resetTaskTree = [&] {
const auto resetTaskTree = [&] {
if (!taskTree)
return;