diff options
Diffstat (limited to 'tests/manual/tasking/demo/taskwidget.h')
-rw-r--r-- | tests/manual/tasking/demo/taskwidget.h | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/tests/manual/tasking/demo/taskwidget.h b/tests/manual/tasking/demo/taskwidget.h new file mode 100644 index 00000000000..3ce210eb0d4 --- /dev/null +++ b/tests/manual/tasking/demo/taskwidget.h @@ -0,0 +1,81 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + +#ifndef TASKWIDGET_H +#define TASKWIDGET_H + +#include <tasking/tasktree.h> + +#include <QWidget> + +class StateIndicator; + +QT_BEGIN_NAMESPACE +class QCheckBox; +class QComboBox; +class QLabel; +class QSpinBox; +QT_END_NAMESPACE + +enum class State { + Initial, + Running, + Done, + Error +}; + +enum class ExecuteMode { + Sequential, // default + Parallel +}; + +class StateWidget : public QWidget +{ +public: + StateWidget(); + + void setState(State state); + +protected: + StateIndicator *m_stateIndicator = nullptr; +}; + +class TaskWidget : public StateWidget +{ +public: + TaskWidget(); + + void setBusyTime(int seconds); + int busyTime() const; + void setSuccess(bool success); + bool isSuccess() const; + +private: + QLabel *m_infoLabel = nullptr; + QSpinBox *m_spinBox = nullptr; + QCheckBox *m_checkBox = nullptr; +}; + +class GroupWidget : public StateWidget +{ +public: + GroupWidget(); + + void setExecuteMode(ExecuteMode mode); + Tasking::TaskItem executeMode() const; + + void setWorkflowPolicy(Tasking::WorkflowPolicy policy); + Tasking::TaskItem workflowPolicy() const; + +private: + void updateExecuteMode(); + void updateWorkflowPolicy(); + + QComboBox *m_executeCombo = nullptr; + QComboBox *m_workflowCombo = nullptr; + + ExecuteMode m_executeMode = ExecuteMode::Sequential; + Tasking::WorkflowPolicy m_workflowPolicy = Tasking::WorkflowPolicy::StopOnError; +}; + +#endif // TASKWIDGET_H |