/** * @RDE_HEADER@ * IAvaComm * $Id$ * $HeadURL$ * $Author$ * Created by Christian Fröbel, NLSE, 2018-01-26 */ #pragma once #include "ava_types.h" #include "avm_export.h" #include #include #include #include class QString; class QByteArray; class QRect; namespace AudioVideoManagement { /** * This interface is needed in order to mock AvaComm in UnitTests. * * @author Christian Fröbel */ class AVM_COMMON_EXPORT IAvaComm : public QObject { Q_OBJECT public: virtual void forceDisconnect() = 0; virtual void switchContext(int exerciseId) = 0; virtual void setUserProfile(const QString &userName, const QString &langCode, AvaAudioPrio, AvaGuiStyle) = 0; virtual void setTimezone(QChar tz) = 0; virtual void setVideoDialogProfile(const QString &dialogId, AvaVisibility) = 0; virtual void setVideoDialogGeometry(const QString &dialogId, const QRect &geometry) = 0; virtual void setVideoProfile(const QString &dialogId, const QString &menuDef) = 0; virtual void setAnnouncementProfile(AvaSumChannel sumChannel, const QString &menuDef, const QString &identityList, const QString &stateList) = 0; virtual void getStreamList(AvaStreamType, AvaStreamSource) = 0; virtual void chooseStream(const QString &dialogId, const QString &streamName, bool muted) = 0; virtual void chooseStreamOverview(const QString &dialogId, const QStringList &streamNames, bool muted) = 0; virtual void releaseStream(const QString &dialogId, const QString &streamName) = 0; virtual void queryTimeline(const QString &streamName, const boost::optional &start = {}, const boost::optional &end = {}) = 0; virtual void setVolume(AvaVolume db) = 0; virtual void chooseImport(const QString &dialogId, const QString &path, int mode) = 0; virtual void releaseImport(const QString &dialogId) = 0; virtual void setScript(const QString &dialogId, const QString &scriptName, AvaScriptSource, const QVector &streams) = 0; virtual void releaseScript(const QString &dialogId, const QString &scriptName) = 0; /** Send a command which was completely prepared by the user; used for e.g. setRtProfile. */ virtual void sendPreparedCommand(const QString &command) = 0; /** streamControl */ ///@{ virtual void startStream(const QString &dialogId, const QString &streamName, AvaSpeed) = 0; virtual void stopStream(const QString &dialogId, const QString &streamName) = 0; virtual void pauseStream(const QString &dialogId, const QString &streamName) = 0; virtual void setStreamSpeed(const QString &dialogId, const QString &streamName, AvaSpeed) = 0; virtual void setAbsPosition(const QString &dialogId, const QString &streamName, AvaTimePoint pos) = 0; virtual void positionUpdate(const QString &dialogId, const QString &streamName, std::chrono::milliseconds updateInterval) = 0; virtual void setPint(const QString &dialogId, const QString &streamName, bool doSkip) = 0; ///@} /** scriptControl */ ///@{ virtual void startScript(const QString &dialogId, const QString &scriptName) = 0; virtual void stopScript(const QString &dialogId, const QString &scriptName) = 0; virtual void pauseScript(const QString &dialogId, const QString &scriptName) = 0; virtual void setAbsPositionScript(const QString &dialogId, const QString &scriptName, AvaTimePoint pos) = 0; ///@} /** ELOKA */ ///@{ virtual void getElokaList(const QString &streamName) = 0; virtual void chooseEloka(const QString &streamName, const QString &signalName, AvaElokaMode) = 0; virtual void releaseEloka(const QString &streamName) = 0; virtual void queryEloka(AvaQueryElokaMode) = 0; ///@} /** StreamNameMapping */ ///@{ virtual void defineStreamNameMapping(const QString &internalName, const QString &displayName) = 0; virtual void resetStreamNameMapping() = 0; ///@} virtual void keepAlive() = 0; signals: /** Emitted when the socket is connected *and* the protocol greeting was received. */ void connected(); void disconnected(); void ok(); void streamListBeginReceived(); void timelineListBeginReceived(const QString &streamName); void elokaListBeginReceived(); void queryElokaListBeginReceived(); void listValueReceived(const QVector &parts); void invalidNameListBeginReceived(); void endOfListReceived(); void streamInfoReceived(const QString &dialogId, const QString &streamName, const AvaStreamInfo &streamInfo); void streamStateReceived(const QString &dialogId, const QString &streamName, AvaStreamState); void streamSpeedReceived(const QString &dialogId, const QString &streamName, AvaSpeed); void streamPositionReceived(const QString &dialogId, const QString &streamName, AvaTimePoint); void streamModeReceived(const QString &dialogId, const QString &streamName, bool pint, bool autoStop); void scriptInfoReceived(const QString &dialogId, const QString &scriptName, const AvaStreamInfo &scriptInfo); void scriptStateReceived(const QString &dialogId, const QString &scriptName, AvaStreamState state); void scriptPositionReceived(const QString &dialogId, const QString &scriptName, const QString &streamName, AvaTimePoint pos, AvaTimePoint relPos); void volumeReceived(AvaVolume db); void sumChannelStateReceived(AvaSumChannel); void rtChoiceUnitStateReceived(AvaRtPos, const QString &streamName, AvaRtButtonState); void rtVolumeUserReceived(const QString &streamName, AvaVolume db); void keepAliveReceived(); }; } // namespace AudioVideoManagement