From 12f6534e77d28ba5dc5fd5f555d43e7cd9da9336 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Tue, 15 Nov 2016 02:51:22 +0100 Subject: NOISSUE mark used accounts/sessions in selection menus --- api/logic/launch/LaunchStep.h | 2 ++ api/logic/launch/LaunchTask.cpp | 20 ++++++++++++++++++-- api/logic/launch/LaunchTask.h | 3 +++ 3 files changed, 23 insertions(+), 2 deletions(-) (limited to 'api/logic/launch') diff --git a/api/logic/launch/LaunchStep.h b/api/logic/launch/LaunchStep.h index ea472c0d..4df4673c 100644 --- a/api/logic/launch/LaunchStep.h +++ b/api/logic/launch/LaunchStep.h @@ -42,6 +42,8 @@ signals: public slots: virtual void proceed() {}; + // called in the opposite order than the Task launch(), used to clean up or otherwise undo things after the launch ends + virtual void finalize() {}; protected: /* data */ LaunchTask *m_parent; diff --git a/api/logic/launch/LaunchTask.cpp b/api/logic/launch/LaunchTask.cpp index a006e519..8b9da398 100644 --- a/api/logic/launch/LaunchTask.cpp +++ b/api/logic/launch/LaunchTask.cpp @@ -88,7 +88,7 @@ void LaunchTask::onStepFinished() // end? if(currentStep == m_steps.size() - 1) { - emitSucceeded(); + finalizeSteps(true, QString()); } else { @@ -99,7 +99,23 @@ void LaunchTask::onStepFinished() } else { - emitFailed(step->failReason()); + finalizeSteps(false, step->failReason()); + } +} + +void LaunchTask::finalizeSteps(bool successful, const QString& error) +{ + for(auto step = currentStep; step >= 0; step--) + { + m_steps[step]->finalize(); + } + if(successful) + { + emitSucceeded(); + } + else + { + emitFailed(error); } } diff --git a/api/logic/launch/LaunchTask.h b/api/logic/launch/LaunchTask.h index f2fb3a2c..981e25cf 100644 --- a/api/logic/launch/LaunchTask.h +++ b/api/logic/launch/LaunchTask.h @@ -109,6 +109,9 @@ public slots: void onStepFinished(); void onProgressReportingRequested(); +private: /*methods */ + void finalizeSteps(bool successful, const QString & error); + protected: /* data */ InstancePtr m_instance; shared_qobject_ptr m_logModel; -- cgit v1.2.3