feat: Allow suppression of generic client connection dialog

fixes 8907
This commit is contained in:
sithlord48 2025-08-29 15:50:16 -04:00 committed by Nick Bolton
parent f0e02724ee
commit 9cf25c4caf
3 changed files with 27 additions and 2 deletions

View file

@ -81,7 +81,7 @@ QVariant Settings::defaultValue(const QString &key)
if ((key == Gui::CloseToTray) || (key == Gui::LogExpanded) || (key == Gui::SymbolicTrayIcon) ||
(key == Gui::CloseReminder) || (key == Security::TlsEnabled) || (key == Security::CheckPeers) ||
(key == Client::LanguageSync)) {
(key == Client::LanguageSync) || (key == Gui::ShowGenericClientFailureDialog)) {
return true;
}

View file

@ -67,6 +67,7 @@ public:
inline static const auto LogExpanded = QStringLiteral("gui/logExpanded");
inline static const auto SymbolicTrayIcon = QStringLiteral("gui/symbolicTrayIcon");
inline static const auto WindowGeometry = QStringLiteral("gui/windowGeometry");
inline static const auto ShowGenericClientFailureDialog = QStringLiteral("gui/showGenericClientFailureDialog");
};
struct Log
{
@ -185,6 +186,7 @@ private:
, Settings::Gui::LogExpanded
, Settings::Gui::SymbolicTrayIcon
, Settings::Gui::WindowGeometry
, Settings::Gui::ShowGenericClientFailureDialog
, Settings::Security::Certificate
, Settings::Security::CheckPeers
, Settings::Security::KeySize

View file

@ -13,6 +13,7 @@
#include "common/Settings.h"
#include "common/UrlConstants.h"
#include <QCheckBox>
#include <QMessageBox>
#include <QPushButton>
#include <memory>
@ -213,7 +214,29 @@ void showClientConnectError(QWidget *parent, ClientError error, const QString &a
auto title = QObject::tr("%1 Connection Error").arg(kAppName);
QMessageBox::warning(parent, title, message);
if (error != ClientError::HostnameError) {
QMessageBox::warning(parent, title, message);
return;
}
if (!Settings::value(Settings::Gui::ShowGenericClientFailureDialog).toBool())
return;
auto dialog = QMessageBox(parent);
dialog.setWindowTitle(title);
dialog.setText(message);
dialog.setWindowModality(Qt::ApplicationModal);
dialog.setIcon(QMessageBox::Information);
auto cbNoShowAgain = new QCheckBox(QObject::tr("Do not show this message again"));
QObject::connect(cbNoShowAgain, &QCheckBox::toggled, [&](bool enabled) {
Settings::setValue(Settings::Gui::ShowGenericClientFailureDialog, !enabled);
});
dialog.setCheckBox(cbNoShowAgain);
dialog.setDefaultButton(QMessageBox::Ok);
dialog.exec();
}
NewClientPromptResult showNewClientPrompt(QWidget *parent, const QString &clientName, bool serverRequiresPeerAuth)