aboutsummaryrefslogtreecommitdiff
path: root/launcher/minecraft/mod/tasks
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/minecraft/mod/tasks')
-rw-r--r--launcher/minecraft/mod/tasks/BasicFolderLoadTask.h13
-rw-r--r--launcher/minecraft/mod/tasks/LocalModParseTask.cpp12
-rw-r--r--launcher/minecraft/mod/tasks/LocalModParseTask.h5
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;
};