/** * @RDE_HEADER@ * State Machine handler for Exercise Object * $Id$ * $HeadURL$ * $Author$ * * Created by Hanna E. Rathje, SLSE, 2015-10-12 */ #pragma once #include #include #include namespace NGL { class INGLLogger; } namespace ExerciseManagement { class ExerciseStateManager; class ExerciseStateBase; class ObjectExercise; class ExerciseStateMachine : public QObject { Q_OBJECT public: explicit ExerciseStateMachine(ExerciseManagement::ObjectExercise *objExe, QObject *parent = nullptr); ~ExerciseStateMachine(); bool init(); bool switchToState(ExerciseManagement::ExerciseState newExerciseState); ExerciseManagement::ExerciseState getCurrentState(); Q_SIGNALS: void finished(); void exerciseStateChanged(ExerciseManagement::ExerciseState exerciseState); public Q_SLOTS: void onEnteredState(); private: ExerciseStateBase *getStateFromId(ExerciseManagement::ExerciseState exerciseState); int exerciseId() const; ExerciseStateManager *m_stateManager; QStateMachine *m_stateMachine; QMap m_exerciseStates; ObjectExercise *m_exercise; NGL::INGLLogger &m_logger; }; } // namespace ExerciseManagement