#pragma once #include #include #include #include "avm_exercise_context.h" #include "avs_session_context.h" #include namespace LtsSession { class LtsSession; } namespace AudioVideoManagement { class AvaSession; class AvaState; class PlaybackApp; class PluginSettings; class StreamNameMapping; class DataPlugin final : public DataPluginBase::Plugin { Q_PLUGIN_METADATA(IID "data:3:avm") Q_OBJECT public: DataPlugin(); ~DataPlugin(); QString pluginName() const override { return QStringLiteral("AudioVideoManagement"); } std::shared_ptr createDataInterface(LtsSession::LtsSessionDataDds *session) override; bool availableInPartition(IDL::PartitionType partition) const override { return partition == IDL::PartitionType::Exercise || partition == IDL::PartitionType::Replay || partition == IDL::PartitionType::Global; } private: AvmExerciseContextManager m_exerciseContext; AvsSessionContext m_avsSessionContext; std::unique_ptr m_pluginSettings; }; class DataInterfaceImpl final : public DataInterface { public: DataInterfaceImpl(LtsSession::LtsSessionDataDds *session, AvmExerciseContextHandle &&exerciseContextHandle, AvsSessionContext *sessionContext); ~DataInterfaceImpl(); std::shared_ptr getDtc() override { return m_exerciseContextHandle.dtc(); } std::shared_ptr getFtc() override { return m_exerciseContextHandle.ftc(); } ExerciseManagement::Interface::Dtc *getExmDtc() override { return m_exerciseContextHandle.exmDtc(); } OperatorManagement::Interface::Dtc *getOpmDtc() override { return m_exerciseContextHandle.opmDtc(); } bool hasAvsSession() const override { return m_avsSessionContextHandle; } bool vdSessionEstablished() const override; AvaSession *avaSession() override; AvaState *avaState() override; AvsMenus *menus() override; PlaybackApp *videoPlaybackApp() override { return m_avsSessionContextHandle.videoPlaybackApp(); } PlaybackApp *audioPlaybackApp() override { return m_avsSessionContextHandle.audioPlaybackApp(); } PlaybackApp *videoPresentationApp() override { return m_avsSessionContextHandle.videoPresentationApp(); } PlaybackApp *audioPresentationApp() override { return m_avsSessionContextHandle.audioPresentationApp(); } VdSession *vdSession() override; StreamNameMapping *streamNameMapping() override; void showCamera(QWidget *irreplacableWidget, int mountingPointId) override; void showAnnouncementUnit(int mountingPointId) override; void showOrCloseAvsApp() override; private: AvmExerciseContextHandle m_exerciseContextHandle; AvsSessionContextHandle m_avsSessionContextHandle; LtsSession::LtsSession *m_session; }; }