aboutsummaryrefslogtreecommitdiff
path: root/launcher/ModDownloadTask.cpp
diff options
context:
space:
mode:
authorswirl <swurl@swurl.xyz>2022-02-03 13:53:30 -0500
committerswirl <swurl@swurl.xyz>2022-02-03 13:53:30 -0500
commite8a4902a3dddd08d65bd1284951ae5954439d1f5 (patch)
treeb5936e950cf149366366db156f90e51c25f2257a /launcher/ModDownloadTask.cpp
parentfcc4420cfec3fcd970ff1f35b8848559c7b5b6ef (diff)
parente2952061af24e0b9a4639d5ff1eb24c57f65830a (diff)
downloadPrismLauncher-e8a4902a3dddd08d65bd1284951ae5954439d1f5.tar.gz
PrismLauncher-e8a4902a3dddd08d65bd1284951ae5954439d1f5.tar.bz2
PrismLauncher-e8a4902a3dddd08d65bd1284951ae5954439d1f5.zip
Merge branch 'feature/download_mods' into develop
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();
+}
+