feat: Use a single progress dialog when doing multiple tasks
This puts all mod downloading tasks inside a SequentialTask, which is, for more than one task, a multi step task. This is handled by the ProgressDialog by showing both the global progress of tasks executed, and the individual progress of each of them.
This commit is contained in:
parent
e22d54abd3
commit
9b8493c304
7 changed files with 172 additions and 105 deletions
|
@ -9,13 +9,21 @@ class SequentialTask : public Task
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit SequentialTask(QObject *parent = 0);
|
||||
virtual ~SequentialTask() {};
|
||||
explicit SequentialTask(QObject *parent = nullptr, const QString& task_name = "");
|
||||
virtual ~SequentialTask();
|
||||
|
||||
inline auto isMultiStep() const -> bool override { return m_queue.size() > 1; };
|
||||
auto getStepProgress() const -> qint64 override;
|
||||
auto getStepTotalProgress() const -> qint64 override;
|
||||
|
||||
inline auto getStepStatus() const -> QString override { return m_step_status; }
|
||||
|
||||
void addTask(Task::Ptr task);
|
||||
|
||||
protected:
|
||||
void executeTask();
|
||||
protected slots:
|
||||
void executeTask() override;
|
||||
public slots:
|
||||
bool abort() override;
|
||||
|
||||
private
|
||||
slots:
|
||||
|
@ -24,7 +32,19 @@ slots:
|
|||
void subTaskStatus(const QString &msg);
|
||||
void subTaskProgress(qint64 current, qint64 total);
|
||||
|
||||
signals:
|
||||
void stepStatus(QString status);
|
||||
|
||||
private:
|
||||
void setStepStatus(QString status) { m_step_status = status; };
|
||||
|
||||
private:
|
||||
QString m_name;
|
||||
QString m_step_status;
|
||||
|
||||
QQueue<Task::Ptr > m_queue;
|
||||
int m_currentIndex;
|
||||
|
||||
qint64 m_stepProgress = 0;
|
||||
qint64 m_stepTotalProgress = 100;
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue