summaryrefslogtreecommitdiffstats
path: root/api/logic/minecraft/MinecraftVersionList.cpp
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2016-08-14 02:33:31 +0200
committerPetr Mrázek <peterix@gmail.com>2016-08-14 23:22:54 +0200
commit042f3ef55c0b469f438542152c4eb02b0789ea3c (patch)
tree03e0c15b200786558babd0fe58edac88ed1bfd1e /api/logic/minecraft/MinecraftVersionList.cpp
parent2f0441b3c1cd9fc3bcb176d2852da8f92a6e6777 (diff)
downloadMultiMC-042f3ef55c0b469f438542152c4eb02b0789ea3c.tar
MultiMC-042f3ef55c0b469f438542152c4eb02b0789ea3c.tar.gz
MultiMC-042f3ef55c0b469f438542152c4eb02b0789ea3c.tar.lz
MultiMC-042f3ef55c0b469f438542152c4eb02b0789ea3c.tar.xz
MultiMC-042f3ef55c0b469f438542152c4eb02b0789ea3c.zip
GH-352 Make OneSix instance update downloads cancellable
Diffstat (limited to 'api/logic/minecraft/MinecraftVersionList.cpp')
-rw-r--r--api/logic/minecraft/MinecraftVersionList.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/api/logic/minecraft/MinecraftVersionList.cpp b/api/logic/minecraft/MinecraftVersionList.cpp
index 4e4eafbc..e3f416d9 100644
--- a/api/logic/minecraft/MinecraftVersionList.cpp
+++ b/api/logic/minecraft/MinecraftVersionList.cpp
@@ -61,6 +61,10 @@ public:
explicit MCVListVersionUpdateTask(MinecraftVersionList *vlist, std::shared_ptr<MinecraftVersion> updatedVersion);
virtual ~MCVListVersionUpdateTask() override{};
virtual void executeTask() override;
+ bool canAbort() const override;
+
+public slots:
+ bool abort() override;
protected
slots:
@@ -71,6 +75,7 @@ protected:
QByteArray versionIndexData;
std::shared_ptr<MinecraftVersion> updatedVersion;
MinecraftVersionList *m_list;
+ bool m_aborted = false;
};
class ListLoadError : public Exception
@@ -410,6 +415,11 @@ MCVListVersionUpdateTask::MCVListVersionUpdateTask(MinecraftVersionList *vlist,
void MCVListVersionUpdateTask::executeTask()
{
+ if(m_aborted)
+ {
+ emitFailed(tr("Task aborted."));
+ return;
+ }
auto job = new NetJob("Version index");
job->addNetAction(Net::Download::makeByteArray(QUrl(updatedVersion->getUrl()), &versionIndexData));
specificVersionDownloadJob.reset(job);
@@ -419,6 +429,21 @@ void MCVListVersionUpdateTask::executeTask()
specificVersionDownloadJob->start();
}
+bool MCVListVersionUpdateTask::canAbort() const
+{
+ return true;
+}
+
+bool MCVListVersionUpdateTask::abort()
+{
+ m_aborted = true;
+ if(specificVersionDownloadJob)
+ {
+ return specificVersionDownloadJob->abort();
+ }
+ return true;
+}
+
void MCVListVersionUpdateTask::json_downloaded()
{
specificVersionDownloadJob.reset();