aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
authorflow <flowlnlnln@gmail.com>2022-07-21 16:43:08 -0300
committerflow <flowlnlnln@gmail.com>2022-09-20 18:36:08 -0300
commitebd46705d503a8627e759327e93c5a8432d4e47f (patch)
tree63d5900c7f26696381abc35240cd3958b986ffbb /launcher
parent72d2ca234e80fe65bb6a7d5fe106b01d9dc6f096 (diff)
downloadPrismLauncher-ebd46705d503a8627e759327e93c5a8432d4e47f.tar.gz
PrismLauncher-ebd46705d503a8627e759327e93c5a8432d4e47f.tar.bz2
PrismLauncher-ebd46705d503a8627e759327e93c5a8432d4e47f.zip
refactor: move creation of CF file download task to a separate function
Signed-off-by: flow <flowlnlnln@gmail.com>
Diffstat (limited to 'launcher')
-rw-r--r--launcher/modplatform/flame/FlameInstanceCreationTask.cpp143
-rw-r--r--launcher/modplatform/flame/FlameInstanceCreationTask.h1
2 files changed, 51 insertions, 93 deletions
diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
index 431c8b3d..6ec1060c 100644
--- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
+++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp
@@ -154,6 +154,7 @@ bool FlameCreationTask::createInstance()
void FlameCreationTask::idResolverSucceeded(QEventLoop& loop)
{
auto results = m_mod_id_resolver->getResults();
+
// first check for blocked mods
QString text;
QList<QUrl> urls;
@@ -176,109 +177,65 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop)
message_dialog->setModal(true);
if (message_dialog->exec()) {
- m_files_job = new NetJob(tr("Mod download"), APPLICATION->network());
- for (const auto& result : m_mod_id_resolver->getResults().files) {
- QString filename = result.fileName;
- if (!result.required) {
- filename += ".disabled";
- }
-
- auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename);
- auto path = FS::PathCombine(m_stagingPath, relpath);
-
- switch (result.type) {
- case Flame::File::Type::Folder: {
- logWarning(tr("This 'Folder' may need extracting: %1").arg(relpath));
- // fall-through intentional, we treat these as plain old mods and dump them wherever.
- }
- case Flame::File::Type::SingleFile:
- case Flame::File::Type::Mod: {
- if (!result.url.isEmpty()) {
- qDebug() << "Will download" << result.url << "to" << path;
- auto dl = Net::Download::makeFile(result.url, path);
- m_files_job->addNetAction(dl);
- }
- break;
- }
- case Flame::File::Type::Modpack:
- logWarning(tr("Nesting modpacks in modpacks is not implemented, nothing was downloaded: %1").arg(relpath));
- break;
- case Flame::File::Type::Cmod2:
- case Flame::File::Type::Ctoc:
- case Flame::File::Type::Unknown:
- logWarning(tr("Unrecognized/unhandled PackageType for: %1").arg(relpath));
- break;
- }
- }
-
- m_mod_id_resolver.reset();
- connect(m_files_job.get(), &NetJob::succeeded, this, [&]() {
- m_files_job.reset();
- emitSucceeded();
- });
- connect(m_files_job.get(), &NetJob::failed, [&](QString reason) {
- m_files_job.reset();
- setError(reason);
- });
- connect(m_files_job.get(), &NetJob::progress, [&](qint64 current, qint64 total) { setProgress(current, total); });
- connect(m_files_job.get(), &NetJob::finished, &loop, &QEventLoop::quit);
-
- setStatus(tr("Downloading mods..."));
- m_files_job->start();
+ setupDownloadJob(loop);
} else {
m_mod_id_resolver.reset();
setError("Canceled");
}
} else {
- // TODO extract to function ?
- m_files_job = new NetJob(tr("Mod download"), APPLICATION->network());
- for (const auto& result : m_mod_id_resolver->getResults().files) {
- QString filename = result.fileName;
- if (!result.required) {
- filename += ".disabled";
- }
+ setupDownloadJob(loop);
+ }
+}
+
+void FlameCreationTask::setupDownloadJob(QEventLoop& loop)
+{
+ m_files_job = new NetJob(tr("Mod download"), APPLICATION->network());
+ for (const auto& result : m_mod_id_resolver->getResults().files) {
+ QString filename = result.fileName;
+ if (!result.required) {
+ filename += ".disabled";
+ }
- auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename);
- auto path = FS::PathCombine(m_stagingPath, relpath);
+ auto relpath = FS::PathCombine("minecraft", result.targetFolder, filename);
+ auto path = FS::PathCombine(m_stagingPath, relpath);
- switch (result.type) {
- case Flame::File::Type::Folder: {
- logWarning(tr("This 'Folder' may need extracting: %1").arg(relpath));
- // fall-through intentional, we treat these as plain old mods and dump them wherever.
- }
- case Flame::File::Type::SingleFile:
- case Flame::File::Type::Mod: {
- if (!result.url.isEmpty()) {
- qDebug() << "Will download" << result.url << "to" << path;
- auto dl = Net::Download::makeFile(result.url, path);
- m_files_job->addNetAction(dl);
- }
- break;
+ switch (result.type) {
+ case Flame::File::Type::Folder: {
+ logWarning(tr("This 'Folder' may need extracting: %1").arg(relpath));
+ // fall-through intentional, we treat these as plain old mods and dump them wherever.
+ }
+ case Flame::File::Type::SingleFile:
+ case Flame::File::Type::Mod: {
+ if (!result.url.isEmpty()) {
+ qDebug() << "Will download" << result.url << "to" << path;
+ auto dl = Net::Download::makeFile(result.url, path);
+ m_files_job->addNetAction(dl);
}
- case Flame::File::Type::Modpack:
- logWarning(tr("Nesting modpacks in modpacks is not implemented, nothing was downloaded: %1").arg(relpath));
- break;
- case Flame::File::Type::Cmod2:
- case Flame::File::Type::Ctoc:
- case Flame::File::Type::Unknown:
- logWarning(tr("Unrecognized/unhandled PackageType for: %1").arg(relpath));
- break;
+ break;
}
+ case Flame::File::Type::Modpack:
+ logWarning(tr("Nesting modpacks in modpacks is not implemented, nothing was downloaded: %1").arg(relpath));
+ break;
+ case Flame::File::Type::Cmod2:
+ case Flame::File::Type::Ctoc:
+ case Flame::File::Type::Unknown:
+ logWarning(tr("Unrecognized/unhandled PackageType for: %1").arg(relpath));
+ break;
}
+ }
- m_mod_id_resolver.reset();
- connect(m_files_job.get(), &NetJob::succeeded, this, [&]() {
- m_files_job.reset();
- emitSucceeded();
- });
- connect(m_files_job.get(), &NetJob::failed, [&](QString reason) {
- m_files_job.reset();
- setError(reason);
- });
- connect(m_files_job.get(), &NetJob::progress, [&](qint64 current, qint64 total) { setProgress(current, total); });
- connect(m_files_job.get(), &NetJob::finished, &loop, &QEventLoop::quit);
+ m_mod_id_resolver.reset();
+ connect(m_files_job.get(), &NetJob::succeeded, this, [&]() {
+ m_files_job.reset();
+ emitSucceeded();
+ });
+ connect(m_files_job.get(), &NetJob::failed, [&](QString reason) {
+ m_files_job.reset();
+ setError(reason);
+ });
+ connect(m_files_job.get(), &NetJob::progress, [&](qint64 current, qint64 total) { setProgress(current, total); });
+ connect(m_files_job.get(), &NetJob::finished, &loop, &QEventLoop::quit);
- setStatus(tr("Downloading mods..."));
- m_files_job->start();
- }
+ setStatus(tr("Downloading mods..."));
+ m_files_job->start();
}
diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.h b/launcher/modplatform/flame/FlameInstanceCreationTask.h
index efb099d9..be11f805 100644
--- a/launcher/modplatform/flame/FlameInstanceCreationTask.h
+++ b/launcher/modplatform/flame/FlameInstanceCreationTask.h
@@ -23,6 +23,7 @@ class FlameCreationTask final : public InstanceCreationTask {
private slots:
void idResolverSucceeded(QEventLoop&);
+ void setupDownloadJob(QEventLoop&);
private:
QWidget* m_parent = nullptr;