/** * Exercises Handler - checks the avilable exercises and creates subhandlers fort each of them * $Id$ * $HeadURL$ * $Author$ * Created by Christian Ehrlicher, SLSE, 2016-04-14 */ #pragma once #include #include #include #include #include #include namespace ExerciseManagement { class Exercise; namespace Interface { class Dtc; } } // namespace ExerciseManagement enum class DataModification; namespace AudioVideoManagement { class ExerciseHandler; class ExerciseContext; class AudioVideoHandler; class MainHandler; class AssetAssignmentManager; class ExercisesHandler : public QObject { Q_OBJECT public: explicit ExercisesHandler(MainHandler *mainHandler); ~ExercisesHandler(); bool init(); ExerciseHandler *exerciseHandler(int exerciseId) const; AudioVideoHandler *audioVideoHandler(int exerciseId) const; signals: /** * @name Signals that notify a state change regarding the notion of whether the * context is active or not. * A context is considered active when the corresponding excercise has one of the * following states: Started, Paused, Resumed. * The state can only change from activated to deactivated but not back. */ ///@{ void contextActivated(const ExerciseContext &context); void contextDeactivated(const ExerciseContext &context); ///@} public slots: /** * Triggers AVS to reload the DeviceConfig after 1s unless called again within that time. * The avDbReloadNeeded() signals of the following entities will be connected here: * - ExerciseHandler * - AudioVideoHandler * - ImportHandler * - TvcHandler * - CnrHandler */ void onAvDbReloadNeeded(); private: void createExerciseHandlerFromLastSeen(const Database::AvmExerciseLastSeen &lastSeen); ExerciseHandler *getOrCreateExerciseHandler(int exerciseId); ExerciseHandler *createExerciseHandler(int exerciseId); void exerciseModified(int exerciseId, const ExerciseManagement::ExerciseState &state); DatabaseInterface *db(); ExerciseManagement::Interface::Dtc *exmDtc(); private slots: void onExerciseChanged(const ExerciseManagement::Exercise &data, DataModification modType); void exerciseFinished(int exerciseId); private: MainHandler *m_mainHandler; QTimer *m_triggerAvUpdateTimer; std::unique_ptr m_assetAssignmentManager; class ExerciseParts; std::map m_exercises; NGL::INGLLogger &m_logger; }; } // namespace WarehouseManagement