GH-352 Make OneSix instance update downloads cancellable
This commit is contained in:
@ -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();
|
||||
|
Reference in New Issue
Block a user