aboutsummaryrefslogtreecommitdiff
path: root/api/logic/modplatform/atlauncher
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@users.noreply.github.com>2021-07-06 22:01:33 +0200
committerGitHub <noreply@github.com>2021-07-06 22:01:33 +0200
commitdf1d3dbae2d11557e5b4d2ab9c5c1333a8af799e (patch)
tree5ce39c5d8689a32c04340c3e9af5a18ae8c350d0 /api/logic/modplatform/atlauncher
parent417994735a4823782f0f2304695347a13eed9a1d (diff)
parent220971fadd8cc2def071818c17cda14bad0f6f45 (diff)
downloadPrismLauncher-df1d3dbae2d11557e5b4d2ab9c5c1333a8af799e.tar.gz
PrismLauncher-df1d3dbae2d11557e5b4d2ab9c5c1333a8af799e.tar.bz2
PrismLauncher-df1d3dbae2d11557e5b4d2ab9c5c1333a8af799e.zip
Merge pull request #3925 from jamierocks/fix-1949
GH-1949 Allow modpack downloads to be aborted
Diffstat (limited to 'api/logic/modplatform/atlauncher')
-rw-r--r--api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp13
-rw-r--r--api/logic/modplatform/atlauncher/ATLPackInstallTask.h3
2 files changed, 15 insertions, 1 deletions
diff --git a/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp b/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp
index dac80e8c..55087a27 100644
--- a/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp
+++ b/api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp
@@ -28,7 +28,11 @@ PackInstallTask::PackInstallTask(UserInteractionSupport *support, QString pack,
bool PackInstallTask::abort()
{
- return true;
+ if(abortable)
+ {
+ return jobPtr->abort();
+ }
+ return false;
}
void PackInstallTask::executeTask()
@@ -418,16 +422,19 @@ void PackInstallTask::installConfigs()
connect(jobPtr.get(), &NetJob::succeeded, this, [&]()
{
+ abortable = false;
jobPtr.reset();
extractConfigs();
});
connect(jobPtr.get(), &NetJob::failed, [&](QString reason)
{
+ abortable = false;
jobPtr.reset();
emitFailed(reason);
});
connect(jobPtr.get(), &NetJob::progress, [&](qint64 current, qint64 total)
{
+ abortable = true;
setProgress(current, total);
});
@@ -576,11 +583,13 @@ void PackInstallTask::downloadMods()
connect(jobPtr.get(), &NetJob::succeeded, this, &PackInstallTask::onModsDownloaded);
connect(jobPtr.get(), &NetJob::failed, [&](QString reason)
{
+ abortable = false;
jobPtr.reset();
emitFailed(reason);
});
connect(jobPtr.get(), &NetJob::progress, [&](qint64 current, qint64 total)
{
+ abortable = true;
setProgress(current, total);
});
@@ -588,6 +597,8 @@ void PackInstallTask::downloadMods()
}
void PackInstallTask::onModsDownloaded() {
+ abortable = false;
+
qDebug() << "PackInstallTask::onModsDownloaded: " << QThread::currentThreadId();
jobPtr.reset();
diff --git a/api/logic/modplatform/atlauncher/ATLPackInstallTask.h b/api/logic/modplatform/atlauncher/ATLPackInstallTask.h
index 8233c376..15fd9b32 100644
--- a/api/logic/modplatform/atlauncher/ATLPackInstallTask.h
+++ b/api/logic/modplatform/atlauncher/ATLPackInstallTask.h
@@ -39,6 +39,7 @@ public:
explicit PackInstallTask(UserInteractionSupport *support, QString pack, QString version);
virtual ~PackInstallTask(){}
+ bool canAbort() const override { return true; }
bool abort() override;
protected:
@@ -72,6 +73,8 @@ private:
private:
UserInteractionSupport *m_support;
+ bool abortable = false;
+
NetJobPtr jobPtr;
QByteArray response;