From 042f3ef55c0b469f438542152c4eb02b0789ea3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 14 Aug 2016 02:33:31 +0200 Subject: GH-352 Make OneSix instance update downloads cancellable --- api/logic/launch/steps/Update.cpp | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) (limited to 'api/logic/launch/steps/Update.cpp') diff --git a/api/logic/launch/steps/Update.cpp b/api/logic/launch/steps/Update.cpp index 4901f001..ad0c4fc4 100644 --- a/api/logic/launch/steps/Update.cpp +++ b/api/logic/launch/steps/Update.cpp @@ -18,7 +18,12 @@ void Update::executeTask() { - m_updateTask = m_parent->instance()->createUpdateTask(); + if(m_aborted) + { + emitFailed(tr("Task aborted.")); + return; + } + m_updateTask.reset(m_parent->instance()->createUpdateTask()); if(m_updateTask) { connect(m_updateTask.get(), SIGNAL(finished()), this, SLOT(updateFinished())); @@ -39,12 +44,37 @@ void Update::updateFinished() { if(m_updateTask->successful()) { + m_updateTask.reset(); emitSucceeded(); } else { QString reason = tr("Instance update failed because: %1.\n\n").arg(m_updateTask->failReason()); + m_updateTask.reset(); emit logLine(reason, MessageLevel::Fatal); emitFailed(reason); } } + +bool Update::canAbort() const +{ + if(m_updateTask) + { + return m_updateTask->canAbort(); + } + return true; +} + + +bool Update::abort() +{ + m_aborted = true; + if(m_updateTask) + { + if(m_updateTask->canAbort()) + { + return m_updateTask->abort(); + } + } + return true; +} -- cgit v1.2.3