aboutsummaryrefslogtreecommitdiff
path: root/launcher/tasks/ConcurrentTask.h
diff options
context:
space:
mode:
authorRachel Powers <508861+Ryex@users.noreply.github.com>2023-03-30 11:22:55 -0700
committerRachel Powers <508861+Ryex@users.noreply.github.com>2023-05-01 10:45:34 -0700
commitf997529cd4fb077b06d05da9c6ff0c23b85b4ebb (patch)
tree56817cf6faba1e4dac8f7cd515651e79a02fa62b /launcher/tasks/ConcurrentTask.h
parentae75585b52078ca6d89b4014668c08d9aea4a17b (diff)
downloadPrismLauncher-f997529cd4fb077b06d05da9c6ff0c23b85b4ebb.tar.gz
PrismLauncher-f997529cd4fb077b06d05da9c6ff0c23b85b4ebb.tar.bz2
PrismLauncher-f997529cd4fb077b06d05da9c6ff0c23b85b4ebb.zip
feat: better task tracking
Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com>
Diffstat (limited to 'launcher/tasks/ConcurrentTask.h')
-rw-r--r--launcher/tasks/ConcurrentTask.h20
1 files changed, 12 insertions, 8 deletions
diff --git a/launcher/tasks/ConcurrentTask.h b/launcher/tasks/ConcurrentTask.h
index d074d2e2..93469766 100644
--- a/launcher/tasks/ConcurrentTask.h
+++ b/launcher/tasks/ConcurrentTask.h
@@ -1,7 +1,10 @@
#pragma once
+#include <QUuid>
+#include <QHash>
#include <QQueue>
#include <QSet>
+#include <memory>
#include "tasks/Task.h"
@@ -16,10 +19,7 @@ public:
bool canAbort() const override { return true; }
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; }
+ auto getStepProgress() const -> QList<TaskStepProgress> override;
void addTask(Task::Ptr task);
@@ -39,14 +39,15 @@ slots:
void subTaskSucceeded(Task::Ptr);
void subTaskFailed(Task::Ptr, const QString &msg);
- void subTaskStatus(const QString &msg);
- void subTaskProgress(qint64 current, qint64 total);
+ void subTaskStatus(Task::Ptr task, const QString &msg);
+ void subTaskProgress(Task::Ptr task, qint64 current, qint64 total);
+ void subTaskStepProgress(Task::Ptr task, QList<TaskStepProgress> task_step_progress);
protected:
// NOTE: This is not thread-safe.
[[nodiscard]] unsigned int totalSize() const { return m_queue.size() + m_doing.size() + m_done.size(); }
- void setStepStatus(QString status) { m_step_status = status; emit stepStatus(status); };
+ void updateStepProgress();
virtual void updateState();
@@ -56,9 +57,12 @@ protected:
QQueue<Task::Ptr> m_queue;
- QHash<Task*, Task::Ptr> m_doing;
+ QHash<Task*, Task::Ptr> m_doing;
QHash<Task*, Task::Ptr> m_done;
QHash<Task*, Task::Ptr> m_failed;
+ QHash<Task*, Task::Ptr> m_succeeded;
+
+ QHash<QUuid, std::shared_ptr<TaskStepProgress>> m_task_progress;
int m_total_max_size;