diff options
author | Jamie Mansfield <jmansfield@cadixdev.org> | 2021-07-06 15:22:41 +0100 |
---|---|---|
committer | Jamie Mansfield <jmansfield@cadixdev.org> | 2021-07-06 15:22:41 +0100 |
commit | 220971fadd8cc2def071818c17cda14bad0f6f45 (patch) | |
tree | 5ce39c5d8689a32c04340c3e9af5a18ae8c350d0 /api/logic/modplatform | |
parent | d5c448931344a6cee5f89fddf9a8e64dec1f8da6 (diff) | |
download | PrismLauncher-220971fadd8cc2def071818c17cda14bad0f6f45.tar.gz PrismLauncher-220971fadd8cc2def071818c17cda14bad0f6f45.tar.bz2 PrismLauncher-220971fadd8cc2def071818c17cda14bad0f6f45.zip |
GH-1949 Allow ATLauncher pack downloads to be aborted
Diffstat (limited to 'api/logic/modplatform')
-rw-r--r-- | api/logic/modplatform/atlauncher/ATLPackInstallTask.cpp | 13 | ||||
-rw-r--r-- | api/logic/modplatform/atlauncher/ATLPackInstallTask.h | 3 |
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; |