#pragma once #include #include #include #include namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); private slots: void connectClicked(); void sendClicked(); void connectToWebsocket(); void connected(); void disconnected(); void stateChanged(QAbstractSocket::SocketState state); void textMessageReceived(const QString &message); void binaryMessageReceived(const QByteArray &message); void error(QAbstractSocket::SocketError error); void pong(quint64 elapsedTime, const QByteArray &payload); void saveSettings(); void loadSettings(); void loadSelectedUrl(); void setAutoReconnect(bool state); private: const std::unique_ptr m_ui; QWebSocket m_webSocket; std::array m_url_slots; bool m_autoReconnect; uint8_t m_autoReconnectTries{0}; };