/** * @RDE_HEADER@ * $Id$ * $HeadURL$ * $Author$ */ #pragma once #include "WebSocket/pws_web_socket_client.h" #include #include #include #include #include #include #include #include namespace Ui { class ControlDialog; } namespace LtsSession { class LtsSession; } namespace ProjectionWorkstation { class VncViewerDialog; class ControlDialog : public LtsWidgets::LtsDialog, public LtsProjectionWorkstation::AbstractMessageHandler { Q_OBJECT public: explicit ControlDialog(const QString &menuGroup, QWidget *parent = nullptr); ~ControlDialog(); // AbstractMessageHandler interface void handleMessage(LtsWebSocket::AbstractClientMessage *message) override final; // LtsDialog interface void retranslate() override final; bool init(LtsSession::LtsSession *session, const std::shared_ptr &opmDtc, const std::shared_ptr &opmIfc, const std::shared_ptr &asmDtc, int exerciseId); protected: // LtsDialog interface void aboutToClose() override final; void initWebSocketHandler(); private slots: void slotOnConnectClicked(); void slotOnLogoutClicked(); void slotOnWebSocketConnected(); void slotOnVncDisconnected(); void slotOnWebSocketDisconnected(); void slotOnWebSocketError(); void slotOnWebSocketSslError(); void slotCbxWorkstationsChanged(); void fillCombobox(); private: void updateConnectButton(); void closeViewers(); Ui::ControlDialog *m_ui; LtsProjectionWorkstation::LOGGER_T m_logger; LtsProjectionWorkstation::MessageFactory *m_messageFactory; QVector m_viewers; WebSocketClient *m_webSocketClient; LtsSession::LtsSession *m_session; QHostAddress m_host; QString m_menuGroup; int m_exerciseId; int m_locationId; bool m_isConnected; std::shared_ptr m_opmDtc; std::shared_ptr m_opmIfc; std::shared_ptr m_asmDtc; }; } // ProjectionWorkstation