aboutsummaryrefslogtreecommitdiff
path: root/api/logic/modplatform/technic/SolderPackInstallTask.cpp
diff options
context:
space:
mode:
authorJamie Mansfield <jmansfield@cadixdev.org>2021-07-06 15:12:39 +0100
committerJamie Mansfield <jmansfield@cadixdev.org>2021-07-06 15:22:26 +0100
commitd5c448931344a6cee5f89fddf9a8e64dec1f8da6 (patch)
tree47864dd660924189baf4e0b7f3909ec0fed7c182 /api/logic/modplatform/technic/SolderPackInstallTask.cpp
parentdb392b49943d7f575cef29ec26e2490d49eb60a7 (diff)
downloadPrismLauncher-d5c448931344a6cee5f89fddf9a8e64dec1f8da6.tar.gz
PrismLauncher-d5c448931344a6cee5f89fddf9a8e64dec1f8da6.tar.bz2
PrismLauncher-d5c448931344a6cee5f89fddf9a8e64dec1f8da6.zip
GH-1949 Allow Technic pack downloads to be aborted
This supports both 'single zip' modpacks and Solder packs, through the Technic mod platform page.
Diffstat (limited to 'api/logic/modplatform/technic/SolderPackInstallTask.cpp')
-rw-r--r--api/logic/modplatform/technic/SolderPackInstallTask.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/api/logic/modplatform/technic/SolderPackInstallTask.cpp b/api/logic/modplatform/technic/SolderPackInstallTask.cpp
index 1d17073c..1b4186d4 100644
--- a/api/logic/modplatform/technic/SolderPackInstallTask.cpp
+++ b/api/logic/modplatform/technic/SolderPackInstallTask.cpp
@@ -27,6 +27,14 @@ Technic::SolderPackInstallTask::SolderPackInstallTask(const QUrl &sourceUrl, con
m_minecraftVersion = minecraftVersion;
}
+bool Technic::SolderPackInstallTask::abort() {
+ if(m_abortable)
+ {
+ return m_filesNetJob->abort();
+ }
+ return false;
+}
+
void Technic::SolderPackInstallTask::executeTask()
{
setStatus(tr("Finding recommended version:\n%1").arg(m_sourceUrl.toString()));
@@ -106,6 +114,8 @@ void Technic::SolderPackInstallTask::fileListSucceeded()
void Technic::SolderPackInstallTask::downloadSucceeded()
{
+ m_abortable = false;
+
setStatus(tr("Extracting modpack"));
m_filesNetJob.reset();
m_extractFuture = QtConcurrent::run([this]()
@@ -132,12 +142,14 @@ void Technic::SolderPackInstallTask::downloadSucceeded()
void Technic::SolderPackInstallTask::downloadFailed(QString reason)
{
+ m_abortable = false;
emitFailed(reason);
m_filesNetJob.reset();
}
void Technic::SolderPackInstallTask::downloadProgressChanged(qint64 current, qint64 total)
{
+ m_abortable = true;
setProgress(current / 2, total);
}