From 79f8fbc5d9a7df3f76701f69bf81db8bfc9239ec Mon Sep 17 00:00:00 2001 From: Serhii Hadzhilov Date: Thu, 13 May 2021 14:44:28 +0300 Subject: [PATCH] SYNERGY-694 Handle client name duplication --- src/gui/src/ClientConnection.cpp | 29 ++++++++++++++++++----------- src/gui/src/ClientConnection.h | 4 ++-- 2 files changed, 20 insertions(+), 13 deletions(-) diff --git a/src/gui/src/ClientConnection.cpp b/src/gui/src/ClientConnection.cpp index e7e487760d..5305206456 100644 --- a/src/gui/src/ClientConnection.cpp +++ b/src/gui/src/ClientConnection.cpp @@ -37,7 +37,7 @@ void ClientConnection::update(const QString& line) m_checkConnection = false; if (!line.contains("server refused client with our name")) { - showMessage(); + showMessage(getMessage(line)); } } else if (line.contains("connected to server")) @@ -61,26 +61,33 @@ bool ClientConnection::checkMainWindow() return result; } -QString ClientConnection::getMessage() const +QString ClientConnection::getMessage(const QString& line) const { QString message(QObject::tr("We can’t connect to the server IP address.\nCheck your IP on your server and your firewall settings.")); - QHostAddress address(m_parent.appConfig().getServerHostname()); - if (address.isNull()) + if (line.contains("server already has a connected client with our name")) { - message = QObject::tr("We can’t connect to the server \"%1\" try to connect using the server IP address and check your firewall settings.") - .arg(m_parent.appConfig().getServerHostname()); + message = QObject::tr("Connection failed.\nYou can’t name 2 computers the same"); + } + else + { + QHostAddress address(m_parent.appConfig().getServerHostname()); + if (address.isNull()) + { + message = QObject::tr("We can’t connect to the server \"%1\" try to connect using the server IP address and check your firewall settings.") + .arg(m_parent.appConfig().getServerHostname()); + } } return message; } -void ClientConnection::showMessage() +void ClientConnection::showMessage(const QString& message) const { - QMessageBox message(&m_parent); - message.addButton(QObject::tr("Close"), QMessageBox::RejectRole); - message.setText(getMessage()); - message.exec(); + QMessageBox dialog(&m_parent); + dialog.addButton(QObject::tr("Close"), QMessageBox::RejectRole); + dialog.setText(message); + dialog.exec(); } void ClientConnection::setCheckConnection(bool checkConnection) diff --git a/src/gui/src/ClientConnection.h b/src/gui/src/ClientConnection.h index 1a2ec62524..abe5ba3a12 100644 --- a/src/gui/src/ClientConnection.h +++ b/src/gui/src/ClientConnection.h @@ -34,9 +34,9 @@ public: void setCheckConnection(bool checkConnection); private: - QString getMessage() const; + QString getMessage(const QString& line) const; bool checkMainWindow(); - void showMessage(); + void showMessage(const QString& message) const; }; #endif // CLIENTCONNECTION_H