diff options
author | Petr Mrázek <peterix@gmail.com> | 2019-08-04 03:27:53 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2019-08-04 03:27:53 +0200 |
commit | a3ffa3d6659e00e0762017cf64911db0183a250c (patch) | |
tree | 565b2d69b1d8d7e711682801410ff8a234e3931d /api/logic/minecraft/mod/LocalModParseTask.h | |
parent | 7d13e3119801862b9fdf64b11a45c41a64b4fc46 (diff) | |
download | MultiMC-a3ffa3d6659e00e0762017cf64911db0183a250c.tar MultiMC-a3ffa3d6659e00e0762017cf64911db0183a250c.tar.gz MultiMC-a3ffa3d6659e00e0762017cf64911db0183a250c.tar.lz MultiMC-a3ffa3d6659e00e0762017cf64911db0183a250c.tar.xz MultiMC-a3ffa3d6659e00e0762017cf64911db0183a250c.zip |
NOISSUE asynchronous, parallel mod folder listing and mod resolving
Diffstat (limited to 'api/logic/minecraft/mod/LocalModParseTask.h')
-rw-r--r-- | api/logic/minecraft/mod/LocalModParseTask.h | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/api/logic/minecraft/mod/LocalModParseTask.h b/api/logic/minecraft/mod/LocalModParseTask.h new file mode 100644 index 00000000..0f119ba6 --- /dev/null +++ b/api/logic/minecraft/mod/LocalModParseTask.h @@ -0,0 +1,37 @@ +#pragma once +#include <QRunnable> +#include <QDebug> +#include <QObject> +#include "Mod.h" +#include "ModDetails.h" + +class LocalModParseTask : public QObject, public QRunnable +{ + Q_OBJECT +public: + struct Result { + QString id; + std::shared_ptr<ModDetails> details; + }; + using ResultPtr = std::shared_ptr<Result>; + ResultPtr result() const { + return m_result; + } + + LocalModParseTask(int token, Mod::ModType type, const QFileInfo & modFile); + void run(); + +signals: + void finished(int token); + +private: + void processAsZip(); + void processAsFolder(); + void processAsLitemod(); + +private: + int m_token; + Mod::ModType m_type; + QFileInfo m_modFile; + ResultPtr m_result; +}; |