aboutsummaryrefslogtreecommitdiff
path: root/launcher/ModDownloadTask.cpp
diff options
context:
space:
mode:
authorswirl <swurl@swurl.xyz>2022-02-03 13:45:20 -0500
committerswirl <swurl@swurl.xyz>2022-02-03 13:45:20 -0500
commite2952061af24e0b9a4639d5ff1eb24c57f65830a (patch)
treeb5936e950cf149366366db156f90e51c25f2257a /launcher/ModDownloadTask.cpp
parentfcc4420cfec3fcd970ff1f35b8848559c7b5b6ef (diff)
parent11841c47e62ecdafc09eecd1998cff722ebcd1e7 (diff)
downloadPrismLauncher-e2952061af24e0b9a4639d5ff1eb24c57f65830a.tar.gz
PrismLauncher-e2952061af24e0b9a4639d5ff1eb24c57f65830a.tar.bz2
PrismLauncher-e2952061af24e0b9a4639d5ff1eb24c57f65830a.zip
Merge branch 'feature/download_mods' of git://github.com/timoreo22/PolyMC into feature/download_mods
Diffstat (limited to 'launcher/ModDownloadTask.cpp')
-rw-r--r--launcher/ModDownloadTask.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/launcher/ModDownloadTask.cpp b/launcher/ModDownloadTask.cpp
new file mode 100644
index 00000000..08a02d29
--- /dev/null
+++ b/launcher/ModDownloadTask.cpp
@@ -0,0 +1,39 @@
+#include "ModDownloadTask.h"
+#include "Application.h"
+
+ModDownloadTask::ModDownloadTask(const QUrl sourceUrl,const QString filename, const std::shared_ptr<ModFolderModel> mods)
+: m_sourceUrl(sourceUrl), mods(mods), filename(filename) {
+}
+
+void ModDownloadTask::executeTask() {
+ setStatus(tr("Downloading mod:\n%1").arg(m_sourceUrl.toString()));
+
+ m_filesNetJob.reset(new NetJob(tr("Mod download"), APPLICATION->network()));
+ m_filesNetJob->addNetAction(Net::Download::makeFile(m_sourceUrl, mods->dir().absoluteFilePath(filename)));
+ connect(m_filesNetJob.get(), &NetJob::succeeded, this, &ModDownloadTask::downloadSucceeded);
+ connect(m_filesNetJob.get(), &NetJob::progress, this, &ModDownloadTask::downloadProgressChanged);
+ connect(m_filesNetJob.get(), &NetJob::failed, this, &ModDownloadTask::downloadFailed);
+ m_filesNetJob->start();
+}
+
+void ModDownloadTask::downloadSucceeded()
+{
+ emitSucceeded();
+ m_filesNetJob.reset();
+}
+
+void ModDownloadTask::downloadFailed(QString reason)
+{
+ emitFailed(reason);
+ m_filesNetJob.reset();
+}
+
+void ModDownloadTask::downloadProgressChanged(qint64 current, qint64 total)
+{
+ emit progress(current, total);
+}
+
+bool ModDownloadTask::abort() {
+ return m_filesNetJob->abort();
+}
+