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:
@ -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;
|
||||
};
|
||||
|
Reference in New Issue
Block a user