diff options
Diffstat (limited to 'launcher/minecraft/mod/tasks')
-rw-r--r-- | launcher/minecraft/mod/tasks/BasicFolderLoadTask.h | 13 | ||||
-rw-r--r-- | launcher/minecraft/mod/tasks/LocalModParseTask.cpp | 12 | ||||
-rw-r--r-- | launcher/minecraft/mod/tasks/LocalModParseTask.h | 5 |
3 files changed, 27 insertions, 3 deletions
diff --git a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h index 2944c747..cc02a9b9 100644 --- a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h +++ b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h @@ -17,7 +17,7 @@ class BasicFolderLoadTask : public Task Q_OBJECT public: struct Result { - QMap<QString, Resource*> resources; + QMap<QString, Resource::Ptr> resources; }; using ResultPtr = std::shared_ptr<Result>; @@ -27,6 +27,10 @@ public: public: BasicFolderLoadTask(QDir dir) : Task(nullptr, false), m_dir(dir), m_result(new Result) {} + + [[nodiscard]] bool canAbort() const override { return true; } + bool abort() override { m_aborted = true; return true; } + void executeTask() override { m_dir.refresh(); @@ -35,10 +39,15 @@ public: m_result->resources.insert(resource->internal_id(), resource); } - emitSucceeded(); + if (m_aborted) + emitAborted(); + else + emitSucceeded(); } private: QDir m_dir; ResultPtr m_result; + + bool m_aborted = false; }; diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index 8a0273c9..c486bd46 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -497,6 +497,12 @@ void LocalModParseTask::processAsLitemod() zip.close(); } +bool LocalModParseTask::abort() +{ + m_aborted = true; + return true; +} + void LocalModParseTask::executeTask() { switch(m_type) @@ -513,5 +519,9 @@ void LocalModParseTask::executeTask() default: break; } - emitSucceeded(); + + if (m_aborted) + emitAborted(); + else + emitSucceeded(); } diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.h b/launcher/minecraft/mod/tasks/LocalModParseTask.h index e0a10218..4bbf3c85 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.h @@ -20,6 +20,9 @@ public: return m_result; } + [[nodiscard]] bool canAbort() const override { return true; } + bool abort() override; + LocalModParseTask(int token, ResourceType type, const QFileInfo & modFile); void executeTask() override; @@ -35,4 +38,6 @@ private: ResourceType m_type; QFileInfo m_modFile; ResultPtr m_result; + + bool m_aborted = false; }; |