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