/** * @RDE_HEADER@ * ActiveExercises * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, NLE, 2019-08-01 */ #pragma once #include #include namespace ExerciseManagement { namespace Interface { class Dtc; } class Exercise; } // namespace ExerciseManagement enum class DataModification; namespace CombatNetRadio { /** * Observes the Exercises and signals whenever an Exercise gets activated or deactivated. * An Exercise is considered active if its state is either Started or Paused. * Whether the Exercise has an active FrequencyPlanning is irrelevant. * * @author Christian Fröbel */ class ActiveExercises : public QObject { Q_OBJECT public: ActiveExercises(ExerciseManagement::Interface::Dtc *exmDtc); signals: void activated(int exerciseId); void deactivated(int exerciseId); private: void onExerciseChanged(const ExerciseManagement::Exercise &exercise, DataModification modType); private: void check(const ExerciseManagement::Exercise &exercise); void tryActivate(int exerciseId); void tryDeactivate(int exerciseId); ExerciseManagement::Interface::Dtc *m_exmDtc; std::set m_activeExercises; }; } // namespace CombatNetRadio