2012-06-10 16:50:54 +00:00
|
|
|
/*
|
|
|
|
|
* synergy -- mouse and keyboard sharing utility
|
2016-09-07 14:24:00 +00:00
|
|
|
* Copyright (C) 2012-2016 Symless Ltd.
|
2012-06-10 16:50:54 +00:00
|
|
|
* Copyright (C) 2008 Volker Lanz (vl@fidra.de)
|
2018-06-07 15:22:49 +00:00
|
|
|
*
|
2012-06-10 16:50:54 +00:00
|
|
|
* This package is free software; you can redistribute it and/or
|
|
|
|
|
* modify it under the terms of the GNU General Public License
|
2015-05-03 02:33:52 +00:00
|
|
|
* found in the file LICENSE that should have accompanied this file.
|
2018-06-07 15:22:49 +00:00
|
|
|
*
|
2012-06-10 16:50:54 +00:00
|
|
|
* This package is distributed in the hope that it will be useful,
|
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
* GNU General Public License for more details.
|
|
|
|
|
*
|
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
|
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
|
*/
|
|
|
|
|
#include "SettingsDialog.h"
|
2021-04-13 10:23:22 +00:00
|
|
|
#include "validators/ScreenNameValidator.h"
|
2015-02-12 16:49:18 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
#include "AppConfig.h"
|
2015-02-25 17:19:33 +00:00
|
|
|
#include "CoreInterface.h"
|
2024-07-02 19:07:06 +00:00
|
|
|
#include "MainWindow.h"
|
2013-05-29 20:46:24 +00:00
|
|
|
#include "QSynergyApplication.h"
|
|
|
|
|
#include "QUtility.h"
|
2016-10-03 14:26:27 +00:00
|
|
|
#include "SslCertificate.h"
|
2022-09-13 15:31:45 +00:00
|
|
|
#include "UpgradeDialog.h"
|
2012-06-10 16:50:54 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
#include <QDir>
|
|
|
|
|
#include <QFileDialog>
|
|
|
|
|
#include <QMessageBox>
|
2012-06-10 16:50:54 +00:00
|
|
|
#include <QtCore>
|
|
|
|
|
#include <QtGui>
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
SettingsDialog::SettingsDialog(QWidget *parent, AppConfig &config)
|
|
|
|
|
: QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint),
|
2024-07-16 13:36:44 +00:00
|
|
|
Ui::SettingsDialogBase(),
|
|
|
|
|
m_appConfig(config) {
|
2024-07-02 19:07:06 +00:00
|
|
|
setupUi(this);
|
|
|
|
|
|
|
|
|
|
// TODO: maybe just accept MainWindow type in ctor?
|
|
|
|
|
m_pMainWindow = dynamic_cast<MainWindow *>(parent);
|
|
|
|
|
|
|
|
|
|
loadFromConfig();
|
|
|
|
|
m_isSystemAtStart = appConfig().isSystemScoped();
|
|
|
|
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(false);
|
|
|
|
|
enableControls(appConfig().isWritable());
|
|
|
|
|
|
2024-07-08 14:37:51 +00:00
|
|
|
m_pCheckBoxLanguageSync->setEnabled(isClientMode());
|
|
|
|
|
m_pCheckBoxScrollDirection->setEnabled(isClientMode());
|
2024-07-02 19:07:06 +00:00
|
|
|
|
|
|
|
|
const auto &serveConfig = m_pMainWindow->serverConfig();
|
|
|
|
|
m_pLineEditScreenName->setValidator(new validators::ScreenNameValidator(
|
|
|
|
|
m_pLineEditScreenName, m_pLabelNameError, (&serveConfig.screens())));
|
|
|
|
|
|
2024-07-16 13:36:44 +00:00
|
|
|
connect(
|
|
|
|
|
m_pLineEditLogFilename, SIGNAL(textChanged(QString)), this,
|
|
|
|
|
SLOT(onChange()));
|
|
|
|
|
connect(
|
|
|
|
|
m_pComboLogLevel, SIGNAL(currentIndexChanged(int)), this,
|
|
|
|
|
SLOT(onChange()));
|
|
|
|
|
connect(
|
|
|
|
|
m_pLineEditCertificatePath, SIGNAL(textChanged(QString)), this,
|
|
|
|
|
SLOT(onChange()));
|
2024-07-02 19:07:06 +00:00
|
|
|
connect(m_pCheckBoxMinimizeToTray, SIGNAL(clicked()), this, SLOT(onChange()));
|
|
|
|
|
connect(m_pCheckBoxAutoHide, SIGNAL(clicked()), this, SLOT(onChange()));
|
|
|
|
|
connect(m_pCheckBoxPreventSleep, SIGNAL(clicked()), this, SLOT(onChange()));
|
2024-07-16 13:36:44 +00:00
|
|
|
connect(
|
|
|
|
|
m_pLineEditInterface, SIGNAL(textEdited(QString)), this,
|
|
|
|
|
SLOT(onChange()));
|
2024-07-02 19:07:06 +00:00
|
|
|
connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange()));
|
2024-07-16 13:36:44 +00:00
|
|
|
connect(
|
|
|
|
|
m_pLineEditScreenName, SIGNAL(textEdited(QString)), this,
|
|
|
|
|
SLOT(onChange()));
|
|
|
|
|
connect(
|
|
|
|
|
m_pComboElevate, SIGNAL(currentIndexChanged(int)), this,
|
|
|
|
|
SLOT(onChange()));
|
2024-07-02 19:07:06 +00:00
|
|
|
connect(m_pCheckBoxLanguageSync, SIGNAL(clicked()), this, SLOT(onChange()));
|
2024-07-16 13:36:44 +00:00
|
|
|
connect(
|
|
|
|
|
m_pCheckBoxScrollDirection, SIGNAL(clicked()), this, SLOT(onChange()));
|
2024-07-02 19:07:06 +00:00
|
|
|
connect(m_pCheckBoxClientHostMode, SIGNAL(clicked()), this, SLOT(onChange()));
|
2024-07-16 13:36:44 +00:00
|
|
|
connect(
|
|
|
|
|
m_pCheckBoxServerClientMode, SIGNAL(clicked()), this, SLOT(onChange()));
|
2024-07-02 19:07:06 +00:00
|
|
|
|
|
|
|
|
adjustSize();
|
2020-02-28 11:34:28 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::accept() {
|
|
|
|
|
appConfig().setLoadFromSystemScope(m_pRadioSystemScope->isChecked());
|
|
|
|
|
appConfig().setScreenName(m_pLineEditScreenName->text());
|
|
|
|
|
appConfig().setPort(m_pSpinBoxPort->value());
|
|
|
|
|
appConfig().setNetworkInterface(m_pLineEditInterface->text());
|
|
|
|
|
appConfig().setLogLevel(m_pComboLogLevel->currentIndex());
|
|
|
|
|
appConfig().setLogToFile(m_pCheckBoxLogToFile->isChecked());
|
|
|
|
|
appConfig().setLogFilename(m_pLineEditLogFilename->text());
|
|
|
|
|
appConfig().setElevateMode(
|
|
|
|
|
static_cast<ElevateMode>(m_pComboElevate->currentIndex()));
|
|
|
|
|
appConfig().setAutoHide(m_pCheckBoxAutoHide->isChecked());
|
|
|
|
|
appConfig().setPreventSleep(m_pCheckBoxPreventSleep->isChecked());
|
|
|
|
|
appConfig().setMinimizeToTray(m_pCheckBoxMinimizeToTray->isChecked());
|
|
|
|
|
appConfig().setTLSCertPath(m_pLineEditCertificatePath->text());
|
|
|
|
|
appConfig().setTLSKeyLength(m_pComboBoxKeyLength->currentText());
|
|
|
|
|
appConfig().setCryptoEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
|
|
|
|
appConfig().setLanguageSync(m_pCheckBoxLanguageSync->isChecked());
|
|
|
|
|
appConfig().setInvertScrollDirection(m_pCheckBoxScrollDirection->isChecked());
|
|
|
|
|
appConfig().setClientHostMode(m_pCheckBoxClientHostMode->isChecked());
|
|
|
|
|
appConfig().setServerClientMode(m_pCheckBoxServerClientMode->isChecked());
|
|
|
|
|
|
|
|
|
|
appConfig().saveSettings();
|
|
|
|
|
QDialog::accept();
|
2020-02-28 11:34:28 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::reject() {
|
|
|
|
|
// We should restore scope at start if the user rejects changes.
|
|
|
|
|
if (appConfig().isSystemScoped() != m_isSystemAtStart) {
|
|
|
|
|
appConfig().setLoadFromSystemScope(m_isSystemAtStart);
|
|
|
|
|
}
|
2021-02-01 19:21:46 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
QDialog::reject();
|
2020-02-28 11:34:28 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SettingsDialog::loadFromConfig() {
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
m_pLineEditScreenName->setText(appConfig().screenName());
|
|
|
|
|
m_pSpinBoxPort->setValue(appConfig().port());
|
|
|
|
|
m_pLineEditInterface->setText(appConfig().networkInterface());
|
|
|
|
|
m_pComboLogLevel->setCurrentIndex(appConfig().logLevel());
|
|
|
|
|
m_pCheckBoxLogToFile->setChecked(appConfig().logToFile());
|
|
|
|
|
m_pLineEditLogFilename->setText(appConfig().logFilename());
|
|
|
|
|
m_pCheckBoxAutoHide->setChecked(appConfig().getAutoHide());
|
|
|
|
|
m_pCheckBoxPreventSleep->setChecked(appConfig().getPreventSleep());
|
|
|
|
|
m_pCheckBoxMinimizeToTray->setChecked(appConfig().getMinimizeToTray());
|
|
|
|
|
m_pLineEditCertificatePath->setText(appConfig().getTLSCertPath());
|
|
|
|
|
m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled());
|
|
|
|
|
m_pCheckBoxLanguageSync->setChecked(m_appConfig.getLanguageSync());
|
|
|
|
|
m_pCheckBoxScrollDirection->setChecked(
|
|
|
|
|
m_appConfig.getInvertScrollDirection());
|
|
|
|
|
m_pCheckBoxClientHostMode->setChecked(m_appConfig.getClientHostMode());
|
|
|
|
|
m_pCheckBoxServerClientMode->setChecked(m_appConfig.getServerClientMode());
|
|
|
|
|
|
|
|
|
|
setupSeurity();
|
|
|
|
|
|
|
|
|
|
if (m_appConfig.isSystemScoped()) {
|
|
|
|
|
m_pRadioSystemScope->setChecked(true);
|
|
|
|
|
} else {
|
|
|
|
|
m_pRadioUserScope->setChecked(true);
|
|
|
|
|
}
|
2020-02-27 00:41:27 +00:00
|
|
|
|
2014-10-27 17:15:50 +00:00
|
|
|
#if defined(Q_OS_WIN)
|
2024-07-02 19:07:06 +00:00
|
|
|
m_pComboElevate->setCurrentIndex(static_cast<int>(appConfig().elevateMode()));
|
2015-04-23 16:32:18 +00:00
|
|
|
|
2014-10-27 17:15:50 +00:00
|
|
|
#else
|
2024-07-02 19:07:06 +00:00
|
|
|
// elevate checkbox is only useful on ms windows.
|
|
|
|
|
m_pLabelElevate->hide();
|
|
|
|
|
m_pComboElevate->hide();
|
2018-06-07 15:22:49 +00:00
|
|
|
#endif
|
2021-02-15 11:44:46 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
m_pCheckBoxClientHostMode->setVisible(
|
|
|
|
|
isClientMode() && appConfig().getInitiateConnectionFromServer());
|
|
|
|
|
m_pCheckBoxServerClientMode->setVisible(
|
|
|
|
|
!isClientMode() && appConfig().getInitiateConnectionFromServer());
|
2012-06-10 16:50:54 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::setupSeurity() {
|
|
|
|
|
// If the tls file exists test its key length
|
|
|
|
|
if (QFile(appConfig().getTLSCertPath()).exists()) {
|
|
|
|
|
updateKeyLengthOnFile(appConfig().getTLSCertPath());
|
|
|
|
|
} else {
|
|
|
|
|
m_pComboBoxKeyLength->setCurrentIndex(
|
|
|
|
|
m_pComboBoxKeyLength->findText(appConfig().getTLSKeyLength()));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled());
|
|
|
|
|
|
|
|
|
|
if (appConfig().getClientGroupChecked()) {
|
|
|
|
|
m_pLabelKeyLength->hide();
|
|
|
|
|
m_pComboBoxKeyLength->hide();
|
|
|
|
|
m_pLabelCertificate->hide();
|
|
|
|
|
m_pLineEditCertificatePath->hide();
|
|
|
|
|
m_pPushButtonBrowseCert->hide();
|
|
|
|
|
m_pPushButtonRegenCert->hide();
|
|
|
|
|
}
|
2022-06-01 12:36:44 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
bool SettingsDialog::isClientMode() const {
|
|
|
|
|
return (m_pMainWindow->synergyType() == MainWindow::synergyClient);
|
2022-10-04 10:27:42 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::on_m_pCheckBoxLogToFile_stateChanged(int i) {
|
|
|
|
|
bool checked = i == 2;
|
2012-06-10 16:50:54 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
m_pLabelLogPath->setEnabled(checked);
|
|
|
|
|
m_pLineEditLogFilename->setEnabled(checked);
|
|
|
|
|
m_pButtonBrowseLog->setEnabled(checked);
|
|
|
|
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
2012-06-10 16:50:54 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::on_m_pButtonBrowseLog_clicked() {
|
|
|
|
|
QString fileName = QFileDialog::getSaveFileName(
|
|
|
|
|
this, tr("Save log file to..."), m_pLineEditLogFilename->text(),
|
|
|
|
|
"Logs (*.log *.txt)");
|
2016-12-28 11:50:32 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
if (!fileName.isEmpty()) {
|
|
|
|
|
m_pLineEditLogFilename->setText(fileName);
|
|
|
|
|
}
|
2012-06-10 16:50:54 +00:00
|
|
|
}
|
2013-04-11 16:51:17 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::on_m_pCheckBoxEnableCrypto_clicked(bool checked) {
|
|
|
|
|
if (appConfig().isCryptoAvailable()) {
|
|
|
|
|
m_pLabelKeyLength->setEnabled(checked);
|
|
|
|
|
m_pComboBoxKeyLength->setEnabled(checked);
|
|
|
|
|
m_pLabelCertificate->setEnabled(checked);
|
|
|
|
|
m_pLineEditCertificatePath->setEnabled(checked);
|
|
|
|
|
m_pPushButtonBrowseCert->setEnabled(checked);
|
|
|
|
|
m_pPushButtonRegenCert->setEnabled(checked);
|
|
|
|
|
|
|
|
|
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
|
|
|
|
} else {
|
|
|
|
|
m_pCheckBoxEnableCrypto->setChecked(false);
|
2024-07-04 09:14:54 +00:00
|
|
|
|
|
|
|
|
#ifdef SYNERGY_ENABLE_LICENSING
|
|
|
|
|
auto edition = appConfig().edition();
|
|
|
|
|
if (edition == Edition::kLite || edition == Edition::kBasic) {
|
|
|
|
|
UpgradeDialog upgradeDialog(this);
|
|
|
|
|
if (appConfig().edition() == Edition::kLite) {
|
|
|
|
|
upgradeDialog.showDialog(
|
|
|
|
|
"Upgrade to Synergy Ultimate to enable TLS encryption.");
|
|
|
|
|
} else if (appConfig().edition() == Edition::kBasic) {
|
|
|
|
|
upgradeDialog.showDialog(
|
|
|
|
|
"Upgrade to Synergy Pro to enable TLS encryption.");
|
|
|
|
|
}
|
2021-05-12 13:48:33 +00:00
|
|
|
}
|
2024-07-04 09:14:54 +00:00
|
|
|
#endif // SYNERGY_ENABLE_LICENSING
|
2024-07-02 19:07:06 +00:00
|
|
|
}
|
2018-08-03 15:58:23 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::on_m_pRadioSystemScope_toggled(bool checked) {
|
|
|
|
|
// We only need to test the System scoped Radio as they are connected
|
|
|
|
|
appConfig().setLoadFromSystemScope(checked);
|
|
|
|
|
loadFromConfig();
|
|
|
|
|
buttonBox->button(QDialogButtonBox::Save)
|
|
|
|
|
->setEnabled(m_isSystemAtStart != checked);
|
|
|
|
|
enableControls(appConfig().isWritable());
|
2020-02-28 11:34:28 +00:00
|
|
|
}
|
2020-07-27 16:21:46 +00:00
|
|
|
|
|
|
|
|
void SettingsDialog::on_m_pPushButtonBrowseCert_clicked() {
|
2024-07-02 19:07:06 +00:00
|
|
|
QString fileName = QFileDialog::getSaveFileName(
|
|
|
|
|
this, tr("Select a TLS certificate to use..."),
|
|
|
|
|
m_pLineEditCertificatePath->text(), "Cert (*.pem)", nullptr,
|
|
|
|
|
QFileDialog::DontConfirmOverwrite);
|
|
|
|
|
|
|
|
|
|
if (!fileName.isEmpty()) {
|
|
|
|
|
m_pLineEditCertificatePath->setText(fileName);
|
|
|
|
|
// If the tls file exists test its key length and update
|
|
|
|
|
if (QFile(appConfig().getTLSCertPath()).exists()) {
|
|
|
|
|
updateKeyLengthOnFile(fileName);
|
2020-07-27 16:21:46 +00:00
|
|
|
}
|
2024-07-02 19:07:06 +00:00
|
|
|
}
|
|
|
|
|
updateRegenButton();
|
2020-07-28 12:00:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SettingsDialog::on_m_pComboBoxKeyLength_currentIndexChanged(int index) {
|
2024-07-02 19:07:06 +00:00
|
|
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
|
|
|
|
updateRegenButton();
|
2020-07-28 12:00:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SettingsDialog::updateRegenButton() {
|
2024-07-02 19:07:06 +00:00
|
|
|
// Disable the Regenerate cert button if the key length is different to saved
|
|
|
|
|
auto keyChanged =
|
|
|
|
|
appConfig().getTLSKeyLength() != m_pComboBoxKeyLength->currentText();
|
|
|
|
|
auto pathChanged =
|
|
|
|
|
appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text();
|
|
|
|
|
// NOR the above bools, if any have changed regen should be disabled as it
|
|
|
|
|
// will be done on save
|
|
|
|
|
auto nor = !(keyChanged || pathChanged);
|
2024-07-16 13:36:44 +00:00
|
|
|
m_pPushButtonRegenCert->setEnabled(
|
|
|
|
|
nor && m_pCheckBoxEnableCrypto->isChecked());
|
2020-07-28 12:00:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SettingsDialog::on_m_pPushButtonRegenCert_clicked() {
|
2024-07-02 19:07:06 +00:00
|
|
|
appConfig().generateCertificate(true);
|
2020-07-28 12:00:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SettingsDialog::updateKeyLengthOnFile(const QString &path) {
|
2024-07-02 19:07:06 +00:00
|
|
|
SslCertificate ssl;
|
|
|
|
|
auto length = ssl.getCertKeyLength(path);
|
|
|
|
|
auto index = m_pComboBoxKeyLength->findText(length);
|
|
|
|
|
m_pComboBoxKeyLength->setCurrentIndex(index);
|
|
|
|
|
// Also update what is in the appconfig to match the file itself
|
|
|
|
|
appConfig().setTLSKeyLength(length);
|
2020-07-27 16:21:46 +00:00
|
|
|
}
|
2021-02-01 19:21:46 +00:00
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
bool SettingsDialog::isModified() {
|
|
|
|
|
return (
|
|
|
|
|
!m_pLineEditScreenName->text().isEmpty() &&
|
2021-03-23 07:49:52 +00:00
|
|
|
m_pLabelNameError->text().isEmpty() &&
|
2024-07-02 19:07:06 +00:00
|
|
|
(appConfig().screenName() != m_pLineEditScreenName->text() ||
|
|
|
|
|
appConfig().port() != m_pSpinBoxPort->value() ||
|
|
|
|
|
appConfig().networkInterface() != m_pLineEditInterface->text() ||
|
|
|
|
|
appConfig().logLevel() != m_pComboLogLevel->currentIndex() ||
|
|
|
|
|
appConfig().logToFile() != m_pCheckBoxLogToFile->isChecked() ||
|
|
|
|
|
appConfig().logFilename() != m_pLineEditLogFilename->text() ||
|
|
|
|
|
appConfig().elevateMode() !=
|
|
|
|
|
static_cast<ElevateMode>(m_pComboElevate->currentIndex()) ||
|
|
|
|
|
appConfig().getAutoHide() != m_pCheckBoxAutoHide->isChecked() ||
|
|
|
|
|
appConfig().getPreventSleep() != m_pCheckBoxPreventSleep->isChecked() ||
|
|
|
|
|
appConfig().getMinimizeToTray() !=
|
|
|
|
|
m_pCheckBoxMinimizeToTray->isChecked() ||
|
|
|
|
|
appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text() ||
|
|
|
|
|
appConfig().getTLSKeyLength() != m_pComboBoxKeyLength->currentText() ||
|
|
|
|
|
appConfig().getCryptoEnabled() != m_pCheckBoxEnableCrypto->isChecked() ||
|
|
|
|
|
appConfig().isSystemScoped() != m_isSystemAtStart ||
|
|
|
|
|
appConfig().getLanguageSync() != m_pCheckBoxLanguageSync->isChecked() ||
|
|
|
|
|
appConfig().getClientHostMode() !=
|
|
|
|
|
m_pCheckBoxClientHostMode->isChecked() ||
|
|
|
|
|
appConfig().getServerClientMode() !=
|
|
|
|
|
m_pCheckBoxServerClientMode->isChecked() ||
|
|
|
|
|
appConfig().getInvertScrollDirection() !=
|
|
|
|
|
m_pCheckBoxScrollDirection->isChecked()));
|
2021-02-01 19:21:46 +00:00
|
|
|
}
|
|
|
|
|
|
2021-02-04 17:10:27 +00:00
|
|
|
void SettingsDialog::enableControls(bool enable) {
|
2024-07-02 19:07:06 +00:00
|
|
|
m_pLineEditScreenName->setEnabled(enable);
|
|
|
|
|
m_pSpinBoxPort->setEnabled(enable);
|
|
|
|
|
m_pLineEditInterface->setEnabled(enable);
|
|
|
|
|
m_pComboLogLevel->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxLogToFile->setEnabled(enable);
|
|
|
|
|
m_pComboElevate->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxAutoHide->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxPreventSleep->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxMinimizeToTray->setEnabled(enable);
|
|
|
|
|
m_pLineEditCertificatePath->setEnabled(enable);
|
|
|
|
|
m_pComboBoxKeyLength->setEnabled(enable);
|
|
|
|
|
m_pPushButtonBrowseCert->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxEnableCrypto->setEnabled(enable);
|
|
|
|
|
m_labelAdminRightsMessage->setVisible(!enable);
|
|
|
|
|
m_pCheckBoxLanguageSync->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxScrollDirection->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxClientHostMode->setEnabled(enable);
|
|
|
|
|
m_pCheckBoxServerClientMode->setEnabled(enable);
|
|
|
|
|
|
|
|
|
|
if (enable) {
|
|
|
|
|
m_pLabelLogPath->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
|
|
|
|
m_pLineEditLogFilename->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
|
|
|
|
m_pButtonBrowseLog->setEnabled(m_pCheckBoxLogToFile->isChecked());
|
|
|
|
|
m_pLabelKeyLength->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
|
|
|
|
m_pComboBoxKeyLength->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
|
|
|
|
m_pLabelCertificate->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
|
|
|
|
m_pLineEditCertificatePath->setEnabled(
|
|
|
|
|
m_pCheckBoxEnableCrypto->isChecked());
|
|
|
|
|
m_pPushButtonBrowseCert->setEnabled(m_pCheckBoxEnableCrypto->isChecked());
|
|
|
|
|
updateRegenButton();
|
|
|
|
|
} else {
|
|
|
|
|
m_pLabelLogPath->setEnabled(enable);
|
|
|
|
|
m_pLineEditLogFilename->setEnabled(enable);
|
|
|
|
|
m_pButtonBrowseLog->setEnabled(enable);
|
|
|
|
|
m_pLabelKeyLength->setEnabled(enable);
|
2021-02-04 17:10:27 +00:00
|
|
|
m_pComboBoxKeyLength->setEnabled(enable);
|
2024-07-02 19:07:06 +00:00
|
|
|
m_pLabelCertificate->setEnabled(enable);
|
|
|
|
|
m_pLineEditCertificatePath->setEnabled(enable);
|
2021-02-04 17:10:27 +00:00
|
|
|
m_pPushButtonBrowseCert->setEnabled(enable);
|
2024-07-02 19:07:06 +00:00
|
|
|
m_pPushButtonRegenCert->setEnabled(enable);
|
|
|
|
|
}
|
2021-02-04 17:10:27 +00:00
|
|
|
}
|
|
|
|
|
|
2024-07-02 19:07:06 +00:00
|
|
|
void SettingsDialog::onChange() {
|
|
|
|
|
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
|
2021-02-01 19:21:46 +00:00
|
|
|
}
|