diff options
author | swirl <swurl@swurl.xyz> | 2022-02-03 13:45:20 -0500 |
---|---|---|
committer | swirl <swurl@swurl.xyz> | 2022-02-03 13:45:20 -0500 |
commit | e2952061af24e0b9a4639d5ff1eb24c57f65830a (patch) | |
tree | b5936e950cf149366366db156f90e51c25f2257a /launcher/ModDownloadTask.cpp | |
parent | fcc4420cfec3fcd970ff1f35b8848559c7b5b6ef (diff) | |
parent | 11841c47e62ecdafc09eecd1998cff722ebcd1e7 (diff) | |
download | PrismLauncher-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.cpp | 39 |
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(); +} + |