/** * @RDE_HEADER@ * AvaState * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, SLSE, 2017-07-24 */ #pragma once #include "ava_types.h" #include "rt_state.h" #include "avm_export.h" #include #include #include #include namespace AudioVideoManagement { class AvaSession; /** * This class observes the communication from AVS_Workstation to our application. * It observes the responses sent from AVS_Workstation to us as a result of commands * issued by possibly many client-side users of the single communication channel. * By observing the responses it builds up a mirrored state of the AVS_Workstation * in terms of our application's needs. * * After instantiating this class or after a re-connect, AvaState activly queries * the list of streams. After that point AvaState is passive only. * * @author Christian Fröbel */ class AVM_COMMON_EXPORT AvaState : public QObject { Q_OBJECT public: explicit AvaState(AvaSession *session); /** Resembles ScrEdAvInterface::getVideoProfile() */ const QMap> &videoProfile() const { return m_videoState; } QStringList currentLiveVideoStreams() const; // the first one is the selected one (if any) QStringList getRtProfile() const; RtState *rtState() { return &m_rtState; } private slots: void onDisconnected(); void onSessionEstablished(); void onStreamStateReceived(const QString &dialogId, const QString &streamName, AvaStreamState); void onSumChannelStateReceived(AvaSumChannel sumChannel); void onRtChoiceUnitStateReceived(AvaRtPos pos, const QString &streamName, AvaRtButtonState buttonState); void onRtVolumeUserReceived(const QString &streamName, AvaVolume volume); private: //AvaSession *m_session; RtState m_rtState; /** QMap> */ QMap> m_videoState; }; } // namespace AudioVideoManagement