ACF $AcfVersion:0$
CSubtaskProgressDialog.h
Go to the documentation of this file.
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ACF-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtWidgets/QDialog>
7#include <QtWidgets/QProgressBar>
8#include <QtWidgets/QLabel>
9#include <QtWidgets/QVBoxLayout>
10#include <QtWidgets/QPushButton>
11#include <QtCore/QMap>
12
13// ACF includes
15
16
17namespace iqtgui
18{
19
20
51{
52 Q_OBJECT
53
54public:
55 typedef QDialog BaseClass;
56
64 const QString& title,
65 const QString& defaultText,
66 QWidget* parentWidget = nullptr);
67
69
70protected:
71 // reimplemented (ibase::CCumulatedProgressManagerBase)
72 virtual void OnProgressChanged(double cumulatedValue) override;
73 virtual void OnTasksChanged() override;
74
75Q_SIGNALS:
80 void OverallProgressChanged(int progress);
81
87
88private Q_SLOTS:
89 void OnCancelButtonClicked();
90 void OnOverallProgressChanged(int progress);
91 void OnSubtasksUpdated();
92
93private:
94 struct SubtaskWidget
95 {
96 QLabel* statusLabelPtr;
97 QLabel* descriptionLabelPtr;
98 QProgressBar* progressBarPtr;
99 QLabel* percentLabelPtr;
100 QWidget* containerPtr;
101 };
102
103 void CreateSubtaskWidget(const QByteArray& taskId, const QString& description);
104 void UpdateSubtaskWidget(const QByteArray& taskId, double progress, TaskStatus status);
105 void RemoveSubtaskWidget(const QByteArray& taskId);
106 QString GetStatusIcon(TaskStatus status) const;
107 QString GetStatusStyleSheet(TaskStatus status) const;
108
109 QLabel* m_overallLabelPtr;
110 QProgressBar* m_overallProgressBarPtr;
111 QLabel* m_subtasksLabelPtr;
112 QWidget* m_subtasksContainerPtr;
113 QVBoxLayout* m_subtasksLayoutPtr;
114 QPushButton* m_cancelButtonPtr;
115
116 QMap<QByteArray, SubtaskWidget> m_subtaskWidgets;
117
118 QString m_defaultText;
119 int m_lastProgressValue;
120};
121
122
123} // namespace iqtgui
124
125
Progress manager delegating cumulated progress result to another manager.
Progress dialog that displays progress of subtasks.
CSubtaskProgressDialog(const QString &title, const QString &defaultText, QWidget *parentWidget=nullptr)
Create a subtask progress dialog.
void SubtasksUpdated()
Signal emitted when subtask list or progress changes.
virtual void OnProgressChanged(double cumulatedValue) override
void OverallProgressChanged(int progress)
Signal emitted when overall progress changes.
virtual void OnTasksChanged() override
Standard GUI specific interfaces and components based on Qt.