From c1de4d0cc3c9ebff15a638ba4f8ddb1ab46896a9 Mon Sep 17 00:00:00 2001 From: CommanderRedYT Date: Tue, 1 Feb 2022 12:40:08 +0100 Subject: [PATCH] Added autoreconncet, resized window --- mainwindow.cpp | 30 ++++++++++++++++++++++++++++++ mainwindow.h | 5 +++++ mainwindow.ui | 20 ++++++++++++++++++-- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 7385a7c..3ff1b0c 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -30,6 +30,8 @@ MainWindow::MainWindow(QWidget *parent) : connect(m_ui->saveSlot, &QComboBox::currentIndexChanged, this, &MainWindow::loadSelectedUrl); connect(m_ui->pushButtonSave, &QAbstractButton::clicked, this, &MainWindow::saveSettings); + connect(m_ui->autoReconnectBox, &QCheckBox::toggled, this, &MainWindow::setAutoReconnect); + connect(&m_webSocket, &QWebSocket::connected, this, &MainWindow::connected); connect(&m_webSocket, &QWebSocket::disconnected, this, &MainWindow::disconnected); connect(&m_webSocket, &QWebSocket::stateChanged, this, &MainWindow::stateChanged); @@ -56,7 +58,11 @@ void MainWindow::connectClicked() connectToWebsocket(); } else + { + m_ui->autoReconnectBox->setChecked(false); + m_autoReconnect = false; m_webSocket.close(); + } } void MainWindow::sendClicked() @@ -106,6 +112,7 @@ void MainWindow::connected() m_ui->plainTextEdit->appendHtml(QStringLiteral("%0 %1
") .arg(QTime::currentTime().toString()) .arg(tr("Connected"))); + m_autoReconnectTries = 0; } void MainWindow::disconnected() @@ -113,11 +120,29 @@ void MainWindow::disconnected() m_ui->plainTextEdit->appendHtml(QStringLiteral("%0 %1
") .arg(QTime::currentTime().toString()) .arg(tr("Disconnected"))); + if (m_autoReconnect && m_autoReconnectTries < 5) + { + m_ui->plainTextEdit->appendHtml(QStringLiteral("%0 %1
") + .arg(QTime::currentTime().toString()) + .arg(tr("Auto-Reconnecting..."))); + connectToWebsocket(); + m_autoReconnectTries++; + } + else if (m_autoReconnectTries >= 5) + { + m_ui->plainTextEdit->appendHtml(QStringLiteral("%0 %1
") + .arg(QTime::currentTime().toString()) + .arg(tr("Maximum attempts reached."))); + m_ui->autoReconnectBox->setChecked(false); + m_autoReconnect = false; + } } void MainWindow::stateChanged(QAbstractSocket::SocketState state) { m_ui->lineEditUrl->setEnabled(state == QAbstractSocket::UnconnectedState); + m_ui->saveSlot->setEnabled(state == QAbstractSocket::UnconnectedState); + m_ui->pushButtonSave->setEnabled(state == QAbstractSocket::UnconnectedState); m_ui->pushButtonConnect->setText(state == QAbstractSocket::UnconnectedState ? tr("Connect") : tr("Disconnect")); m_ui->labelStatus->setText(qtEnumToString(state)); m_ui->lineEditSend->setEnabled(state == QAbstractSocket::ConnectedState); @@ -181,3 +206,8 @@ void MainWindow::loadSelectedUrl() if (tmpSocketState == QAbstractSocket::ConnectedState) connectToWebsocket(); } + +void MainWindow::setAutoReconnect(bool state) +{ + m_autoReconnect = state; +} diff --git a/mainwindow.h b/mainwindow.h index 0c57146..02ac848 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -28,11 +28,16 @@ private slots: 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}; }; diff --git a/mainwindow.ui b/mainwindow.ui index 4815d47..4e5b5b8 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 800 - 600 + 995 + 709 @@ -61,6 +61,22 @@ + + + + true + + + AutoReconnect + + + false + + + false + + +