#pragma once #include #include #include #include namespace LtsMultiMonitor { class FullscreenVideoDummyWidget; } namespace AudioVideoManagement { class AvaControl; class AVMSHARED_EXPORT AvsApp : public QObject { Q_OBJECT public: AvsApp(const QString &dialogId, AvaControl *avaControl); ~AvsApp() override; void show(const QVector irreplacableWidgets = {}); void show(const QRect &geometry); void hide(bool andClose = false); bool isVisible() const; bool isActive() const; void releaseStreams(); signals: void signalVisible(); void signalPause(); void signalResume(); private slots: void onWidgetPlaced(const QRect &geometry); void onPlacementHelperDestroyed(); void onHideVideo(); void onShowVideo(); private: void showAvsDialog(const QRect &geometry); void hideAvsDialog(); void hideAndPauseAvsDialog(); void showAndResumeAvsDialog(); static const QString ALL_STREAMS; const QString m_dialogId; AvaControl *m_avaControl; LtsMultiMonitor::FullscreenVideoDummyWidget *m_screenPlacementHelper{nullptr}; boost::optional m_presetGeometry; bool m_visible; }; }