diff --git a/src/lib/common/Settings.cpp b/src/lib/common/Settings.cpp index 4b8e3fa66..1b380e3e9 100644 --- a/src/lib/common/Settings.cpp +++ b/src/lib/common/Settings.cpp @@ -208,7 +208,7 @@ QVariant Settings::defaultValue(const QString &key) return 1.0; if (key == Server::Protocol) - return QVariant::fromValue(NetworkProtocol::Barrier); + return networkProtocolToOption(NetworkProtocol::Barrier); if (key == Server::GridWidth) return kServerGridWidth; @@ -224,6 +224,11 @@ QSettingsProxy &Settings::proxy() return *instance()->m_settingsProxy; } +NetworkProtocol Settings::networkProtocol() +{ + return networkProtocolFromString(Settings::value(Server::Protocol).toString()); +} + void Settings::save(bool emitSaving) { if (emitSaving) diff --git a/src/lib/common/Settings.h b/src/lib/common/Settings.h index e85e8e038..dc7fda4b8 100644 --- a/src/lib/common/Settings.h +++ b/src/lib/common/Settings.h @@ -12,6 +12,7 @@ #include #include "common/Constants.h" +#include "common/NetworkProtocol.h" #include "common/QSettingsProxy.h" class Settings : public QObject @@ -151,6 +152,7 @@ public: static QString tlsTrustedClientsDb(); static QString logLevelText(); static QSettingsProxy &proxy(); + static NetworkProtocol networkProtocol(); static void save(bool emitSaving = true); static QStringList validKeys(); static QString portableSettingsFile(); diff --git a/src/lib/gui/dialogs/ServerConfigDialog.cpp b/src/lib/gui/dialogs/ServerConfigDialog.cpp index 760b36004..923aec865 100644 --- a/src/lib/gui/dialogs/ServerConfigDialog.cpp +++ b/src/lib/gui/dialogs/ServerConfigDialog.cpp @@ -35,7 +35,7 @@ ServerConfigDialog::ServerConfigDialog(QWidget *parent, ServerConfig &config) { ui->setupUi(this); - m_originalProtocol = Settings::value(Settings::Server::Protocol).value(); + m_protocol = Settings::networkProtocol(); connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &ServerConfigDialog::accept); connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &ServerConfigDialog::reject); @@ -70,7 +70,7 @@ ServerConfigDialog::ServerConfigDialog(QWidget *parent, ServerConfig &config) ui->btnBrowseConfigFile->setIcon(QIcon::fromTheme(QIcon::ThemeIcon::DocumentOpen)); ui->lineConfigFile->setText(serverConfig().configFile()); - const auto networkProtocol = networkProtocolFromString(Settings::value(Settings::Server::Protocol).toString()); + const auto networkProtocol = Settings::networkProtocol(); ui->rbProtocolSynergy->setChecked(networkProtocol == NetworkProtocol::Synergy); ui->rbProtocolBarrier->setChecked(networkProtocol == NetworkProtocol::Barrier); connect(ui->rbProtocolBarrier, &QRadioButton::toggled, this, &ServerConfigDialog::toggleProtocol); @@ -201,6 +201,7 @@ void ServerConfigDialog::accept() // now that the dialog has been accepted, copy the new server config to the // original one, which is a reference to the one in MainWindow. setOriginalServerConfig(serverConfig()); + Settings::setValue(Settings::Server::Protocol, networkProtocolToOption(m_protocol)); QDialog::accept(); } @@ -368,8 +369,7 @@ void ServerConfigDialog::toggleRelativeMouseMoves(bool enabled) void ServerConfigDialog::toggleProtocol() { - auto proto = ui->rbProtocolBarrier->isChecked() ? NetworkProtocol::Barrier : NetworkProtocol::Synergy; - Settings::setValue(Settings::Server::Protocol, networkProtocolToOption(proto)); + m_protocol = ui->rbProtocolBarrier->isChecked() ? NetworkProtocol::Barrier : NetworkProtocol::Synergy; onChange(); } @@ -511,10 +511,9 @@ bool ServerConfigDialog::addComputer(const QString &clientName, bool doSilent) void ServerConfigDialog::onChange() { - bool isAppConfigDataEqual = - m_originalServerConfigIsExternal == serverConfig().useExternalConfig() && - m_originalServerConfigUsesExternalFile == serverConfig().configFile() && - m_originalProtocol == Settings::value(Settings::Server::Protocol).value(); + bool isAppConfigDataEqual = m_originalServerConfigIsExternal == serverConfig().useExternalConfig() && + m_originalServerConfigUsesExternalFile == serverConfig().configFile() && + m_protocol == Settings::networkProtocol(); ui->buttonBox->button(QDialogButtonBox::Ok) ->setEnabled(!isAppConfigDataEqual || !(m_originalServerConfig == m_serverConfig)); } diff --git a/src/lib/gui/dialogs/ServerConfigDialog.h b/src/lib/gui/dialogs/ServerConfigDialog.h index b592edcdb..f7641bbe7 100644 --- a/src/lib/gui/dialogs/ServerConfigDialog.h +++ b/src/lib/gui/dialogs/ServerConfigDialog.h @@ -101,7 +101,7 @@ private: int m_columns; int m_rows; ServerConfig &m_originalServerConfig; - NetworkProtocol m_originalProtocol; + NetworkProtocol m_protocol; bool m_originalServerConfigIsExternal; QString m_originalServerConfigUsesExternalFile; ServerConfig m_serverConfig; diff --git a/src/lib/server/Server.cpp b/src/lib/server/Server.cpp index 4749d86b8..b4c0bb5f0 100644 --- a/src/lib/server/Server.cpp +++ b/src/lib/server/Server.cpp @@ -1130,7 +1130,7 @@ void Server::processOptions() stopRelativeMoves(); } m_relativeMoves = newRelativeMoves; - m_protocol = networkProtocolFromString(Settings::value(Settings::Server::Protocol).toString()); + m_protocol = Settings::networkProtocol(); } void Server::handleShapeChanged(BaseClientProxy *client)