aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/modrinth
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/modplatform/modrinth')
-rw-r--r--launcher/modplatform/modrinth/ModrinthPackExportTask.cpp79
1 files changed, 41 insertions, 38 deletions
diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp
index 029b47a5..331fbf94 100644
--- a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp
+++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp
@@ -17,6 +17,7 @@
*/
#include "ModrinthPackExportTask.h"
+#include <qtconcurrentrun.h>
#include <QFileInfoList>
#include <QMessageBox>
#include "MMCZip.h"
@@ -34,57 +35,59 @@ ModrinthPackExportTask::ModrinthPackExportTask(const QString& name,
void ModrinthPackExportTask::executeTask()
{
- QFileInfoList files;
- if (!MMCZip::collectFileListRecursively(instance->gameRoot(), nullptr, &files, filter)) {
- emitFailed(tr("Could not collect list of files"));
- return;
- }
-
- setStatus("Adding files...");
+ QtConcurrent::run(QThreadPool::globalInstance(), [this] {
+ QFileInfoList files;
+ if (!MMCZip::collectFileListRecursively(instance->gameRoot(), nullptr, &files, filter)) {
+ emitFailed(tr("Could not collect list of files"));
+ return;
+ }
- QuaZip zip(output);
- if (!zip.open(QuaZip::mdCreate)) {
- QFile::remove(output);
- emitFailed(tr("Could not create file"));
- return;
- }
+ setStatus("Adding files...");
- {
- QuaZipFile indexFile(&zip);
- if (!indexFile.open(QIODevice::WriteOnly, QuaZipNewInfo("modrinth.index.json"))) {
+ QuaZip zip(output);
+ if (!zip.open(QuaZip::mdCreate)) {
QFile::remove(output);
-
- emitFailed(tr("Could not create index"));
+ emitFailed(tr("Could not create file"));
return;
}
- indexFile.write(generateIndex());
- }
- // should exist
- QDir dotMinecraft(instance->gameRoot());
+ {
+ QuaZipFile indexFile(&zip);
+ if (!indexFile.open(QIODevice::WriteOnly, QuaZipNewInfo("modrinth.index.json"))) {
+ QFile::remove(output);
- {
- size_t i = 0;
- for (const QFileInfo& file : files) {
- setProgress(i, files.length());
- if (!JlCompress::compressFile(&zip, file.absoluteFilePath(),
- "overrides/" + dotMinecraft.relativeFilePath(file.absoluteFilePath()))) {
- emitFailed(tr("Could not compress %1").arg(file.absoluteFilePath()));
+ emitFailed(tr("Could not create index"));
return;
}
- i++;
+ indexFile.write(generateIndex());
}
- }
- zip.close();
+ // should exist
+ QDir dotMinecraft(instance->gameRoot());
+
+ {
+ size_t i = 0;
+ for (const QFileInfo& file : files) {
+ setProgress(i, files.length());
+ if (!JlCompress::compressFile(&zip, file.absoluteFilePath(),
+ "overrides/" + dotMinecraft.relativeFilePath(file.absoluteFilePath()))) {
+ emitFailed(tr("Could not compress %1").arg(file.absoluteFilePath()));
+ return;
+ }
+ i++;
+ }
+ }
- if (zip.getZipError() != 0) {
- QFile::remove(output);
- emitFailed(tr("A zip error occured"));
- return;
- }
+ zip.close();
+
+ if (zip.getZipError() != 0) {
+ QFile::remove(output);
+ emitFailed(tr("A zip error occured"));
+ return;
+ }
- emitSucceeded();
+ emitSucceeded();
+ });
}
QByteArray ModrinthPackExportTask::generateIndex()