Merge pull request #6978 from symless/SYNERGY-799-Update-Synergy-UI.-Settings-window

SYNERGY-799 Update Synergy UI. Settings window
This commit is contained in:
Andrey Batyiev 2021-04-16 15:07:46 +03:00 committed by GitHub
commit f767aa3a53
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 842 additions and 563 deletions

View file

@ -16,6 +16,7 @@ Enhancements:
- #6969 Update synergy UI. Validation for aliases. - #6969 Update synergy UI. Validation for aliases.
- #6973 Update synergy UI. Main window - #6973 Update synergy UI. Main window
- #6977 Update synergy UI. Configure server - #6977 Update synergy UI. Configure server
- #6978 Update synergy UI. Settings window
- #6962 | #6965 Add macOS 10.13 builder - #6962 | #6965 Add macOS 10.13 builder
=========== ===========

View file

@ -20,5 +20,6 @@
<file>icons/64x64/synergy-light-disconnected.png</file> <file>icons/64x64/synergy-light-disconnected.png</file>
<file>icons/64x64/synergy-light-connected.png</file> <file>icons/64x64/synergy-light-connected.png</file>
<file>image/welcome.png</file> <file>image/welcome.png</file>
<file>icons/64x64/folder.png</file>
</qresource> </qresource>
</RCC> </RCC>

Binary file not shown.

After

Width:  |  Height:  |  Size: 919 B

View file

@ -237,7 +237,7 @@ void AppConfig::loadSettings()
m_UseExternalConfig = loadSetting(kUseExternalConfig, false).toBool(); m_UseExternalConfig = loadSetting(kUseExternalConfig, false).toBool();
m_ConfigFile = loadSetting(kConfigFile, QDir::homePath() + "/" + synergyConfigName).toString(); m_ConfigFile = loadSetting(kConfigFile, QDir::homePath() + "/" + synergyConfigName).toString();
m_UseInternalConfig = loadSetting(kUseInternalConfig, false).toBool(); m_UseInternalConfig = loadSetting(kUseInternalConfig, false).toBool();
m_ClientGroupChecked = loadSetting(kGroupClientCheck, true).toBool(); m_ClientGroupChecked = loadSetting(kGroupClientCheck, false).toBool();
m_ServerHostname = loadSetting(kServerHostname).toString(); m_ServerHostname = loadSetting(kServerHostname).toString();
//only change the serial key if the settings being loaded contains a key //only change the serial key if the settings being loaded contains a key

View file

@ -298,10 +298,8 @@ void MainWindow::createMenuBar()
void MainWindow::loadSettings() void MainWindow::loadSettings()
{ {
on_m_pRadioGroupServer_clicked(appConfig().getServerGroupChecked()); enableServer(appConfig().getServerGroupChecked());
on_m_pRadioGroupClient_clicked(appConfig().getClientGroupChecked()); enableClient(appConfig().getClientGroupChecked());
m_pRadioGroupServer->setChecked(appConfig().getServerGroupChecked());
m_pRadioGroupClient->setChecked(appConfig().getClientGroupChecked());
m_pLineEditHostname->setText(appConfig().getServerHostname()); m_pLineEditHostname->setText(appConfig().getServerHostname());
} }
@ -1043,38 +1041,34 @@ void MainWindow::setVisible(bool visible)
QString MainWindow::getIPAddresses() QString MainWindow::getIPAddresses()
{ {
QList<QHostAddress> addresses = QNetworkInterface::allAddresses(); QStringList result;
bool hinted = false; bool hinted = false;
QString result; const auto localnet = QHostAddress::parseSubnet("192.168.0.0/16");
for (int i = 0; i < addresses.size(); i++) { const QList<QHostAddress> addresses = QNetworkInterface::allAddresses();
if (addresses[i].protocol() == QAbstractSocket::IPv4Protocol &&
addresses[i] != QHostAddress(QHostAddress::LocalHost)) {
QString address = addresses[i].toString(); for (const auto& address : addresses) {
QString format = "%1, "; if (address.protocol() == QAbstractSocket::IPv4Protocol &&
address != QHostAddress(QHostAddress::LocalHost) &&
!address.isLinkLocal()) {
// usually 192.168.x.x is a useful ip for the user, so indicate // usually 192.168.x.x is a useful ip for the user, so indicate
// this by making it bold. // this by making it bold.
if (!hinted && address.startsWith("192.168")) { if (!hinted && address.isInSubnet(localnet)) {
QString format = "<b>%1</b>";
result.append(format.arg(address.toString()));
hinted = true; hinted = true;
format = "<b>%1</b>, ";
} }
//Prevent self assigned IPs being displayed else {
if (!address.startsWith("169.254")) { result.append(address.toString());
result += format.arg(address);
} }
} }
} }
if (result == "") { if (result.isEmpty()) {
return tr("Unknown"); result.append(tr("Unknown"));
} }
// remove trailing comma. return result.join(", ");
result.chop(2);
return result;
} }
void MainWindow::changeEvent(QEvent* event) void MainWindow::changeEvent(QEvent* event)
@ -1365,18 +1359,38 @@ void MainWindow::updateScreenName()
serverConfig().updateServerName(); serverConfig().updateServerName();
} }
void MainWindow::on_m_pRadioGroupServer_clicked(bool on) void MainWindow::enableServer(bool enable)
{ {
m_pRadioGroupServer->setChecked(true); m_pRadioGroupServer->setChecked(enable);
if (on)
if (enable)
{ {
//show server controls
m_pButtonConfigureServer->show(); m_pButtonConfigureServer->show();
m_pLabelServerState->show(); m_pLabelServerState->show();
updateLocalFingerprint(); updateLocalFingerprint();
m_pButtonToggleStart->setEnabled(enable);
}
else
{
m_pLabelFingerprint->hide();
m_pButtonConfigureServer->hide();
m_pLabelServerState->hide();
}
}
//hide client controls void MainWindow::enableClient(bool enable)
m_pRadioGroupClient->setChecked(false); {
m_pRadioGroupClient->setChecked(enable);
if (enable)
{
m_pLabelServerName->show();
m_pLineEditHostname->show();
m_pButtonConnect->show();
m_pButtonToggleStart->setEnabled(enable);
}
else
{
m_pLabelClientState->hide(); m_pLabelClientState->hide();
m_pLabelServerName->hide(); m_pLabelServerName->hide();
m_pLineEditHostname->hide(); m_pLineEditHostname->hide();
@ -1384,25 +1398,21 @@ void MainWindow::on_m_pRadioGroupServer_clicked(bool on)
} }
} }
void MainWindow::on_m_pRadioGroupClient_clicked(bool on)
{
m_pRadioGroupClient->setChecked(true);
if (on)
{
//show client controls
m_pLabelServerName->show();
m_pLineEditHostname->show();
m_pButtonConnect->show();
//hide server controls void MainWindow::on_m_pRadioGroupServer_clicked(bool)
m_pRadioGroupServer->setChecked(false); {
m_pLabelFingerprint->hide(); enableServer(true);
m_pButtonConfigureServer->hide(); enableClient(false);
m_pLabelServerState->hide(); }
}
void MainWindow::on_m_pRadioGroupClient_clicked(bool)
{
enableClient(true);
enableServer(false);
} }
void MainWindow::on_m_pButtonConnect_clicked() void MainWindow::on_m_pButtonConnect_clicked()
{ {
restartSynergy(); restartSynergy();
} }

View file

@ -143,8 +143,8 @@ public slots:
protected slots: protected slots:
void updateLocalFingerprint(); void updateLocalFingerprint();
void updateScreenName(); void updateScreenName();
void on_m_pRadioGroupServer_clicked(bool on); void on_m_pRadioGroupServer_clicked(bool);
void on_m_pRadioGroupClient_clicked(bool on); void on_m_pRadioGroupClient_clicked(bool);
void on_m_pButtonConfigureServer_clicked(); void on_m_pButtonConfigureServer_clicked();
bool on_m_pActionSave_triggered(); bool on_m_pActionSave_triggered();
void on_m_pActionAbout_triggered(); void on_m_pActionAbout_triggered();
@ -187,6 +187,8 @@ public slots:
void stopDesktop(); void stopDesktop();
void changeEvent(QEvent* event); void changeEvent(QEvent* event);
void retranslateMenuBar(); void retranslateMenuBar();
void enableServer(bool enable);
void enableClient(bool enable);
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
bool isServiceRunning(QString name); bool isServiceRunning(QString name);

View file

@ -866,6 +866,9 @@
</item> </item>
<item> <item>
<widget class="QPushButton" name="m_pButtonToggleStart"> <widget class="QPushButton" name="m_pButtonToggleStart">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text"> <property name="text">
<string>&amp;Start</string> <string>&amp;Start</string>
</property> </property>

View file

@ -1028,7 +1028,7 @@
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout_3"> <layout class="QHBoxLayout" name="horizontalLayout_3">
<property name="leftMargin"> <property name="leftMargin">
<number>95</number> <number>40</number>
</property> </property>
<property name="topMargin"> <property name="topMargin">
<number>0</number> <number>0</number>
@ -1071,6 +1071,22 @@
</property> </property>
</widget> </widget>
</item> </item>
<item>
<spacer name="horizontalSpacer_6">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Fixed</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>10</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item> <item>
<widget class="QLineEdit" name="m_pEditConfigFile"> <widget class="QLineEdit" name="m_pEditConfigFile">
<property name="enabled"> <property name="enabled">
@ -1103,12 +1119,31 @@
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>40</width> <width>0</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
<property name="cursor">
<cursorShape>PointingHandCursor</cursorShape>
</property>
<property name="styleSheet">
<string notr="true">margin: 0px; padding: 0px;</string>
</property>
<property name="text"> <property name="text">
<string>&amp;Browse...</string> <string/>
</property>
<property name="icon">
<iconset resource="../res/Synergy.qrc">
<normaloff>:/res/icons/64x64/folder.png</normaloff>:/res/icons/64x64/folder.png</iconset>
</property>
<property name="iconSize">
<size>
<width>20</width>
<height>13</height>
</size>
</property>
<property name="flat">
<bool>true</bool>
</property> </property>
</widget> </widget>
</item> </item>

View file

@ -65,6 +65,8 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) :
connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange())); connect(m_pSpinBoxPort, SIGNAL(valueChanged(int)), this, SLOT(onChange()));
connect(m_pLineEditScreenName, SIGNAL(textEdited(QString)), this, SLOT(onChange())); connect(m_pLineEditScreenName, SIGNAL(textEdited(QString)), this, SLOT(onChange()));
connect(m_pComboElevate, SIGNAL(currentIndexChanged(int)), this, SLOT(onChange())); connect(m_pComboElevate, SIGNAL(currentIndexChanged(int)), this, SLOT(onChange()));
resize(400, 620);
} }
void SettingsDialog::accept() void SettingsDialog::accept()
@ -174,17 +176,14 @@ void SettingsDialog::loadFromConfig() {
#endif #endif
m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled()); m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled());
m_pGroupBoxTLS->setVisible(m_appConfig.getCryptoEnabled());
#ifdef SYNERGY_ENTERPRISE #ifdef SYNERGY_ENTERPRISE
m_pCheckBoxEnableCrypto->setEnabled(true); m_pCheckBoxEnableCrypto->setEnabled(true);
m_pLabelProUpgrade->hide();
#else #else
m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable()); m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable());
m_pLabelProUpgrade->setVisible(!m_appConfig.isCryptoAvailable());
#endif #endif
@ -209,6 +208,7 @@ void SettingsDialog::on_m_pCheckBoxLogToFile_stateChanged(int i)
{ {
bool checked = i == 2; bool checked = i == 2;
m_pLabelLogPath->setEnabled(checked);
m_pLineEditLogFilename->setEnabled(checked); m_pLineEditLogFilename->setEnabled(checked);
m_pButtonBrowseLog->setEnabled(checked); m_pButtonBrowseLog->setEnabled(checked);
buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified()); buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
@ -236,13 +236,14 @@ void SettingsDialog::on_m_pComboLanguage_currentIndexChanged(int index)
void SettingsDialog::on_m_pCheckBoxEnableCrypto_toggled(bool checked) void SettingsDialog::on_m_pCheckBoxEnableCrypto_toggled(bool checked)
{ {
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()); buttonBox->button(QDialogButtonBox::Save)->setEnabled(isModified());
if (checked) {
verticalSpacer_4->changeSize(10, 10, QSizePolicy::Minimum);
} else {
verticalSpacer_4->changeSize(10, 0, QSizePolicy::Ignored);
}
adjustSize();
} }
void SettingsDialog::on_m_pLabelInstallBonjour_linkActivated(const QString&) void SettingsDialog::on_m_pLabelInstallBonjour_linkActivated(const QString&)
@ -288,10 +289,9 @@ void SettingsDialog::updateRegenButton() {
// Disable the Regenerate cert button if the key length is different to saved // Disable the Regenerate cert button if the key length is different to saved
auto keyChanged = appConfig().getTLSKeyLength() != m_pComboBoxKeyLength->currentText(); auto keyChanged = appConfig().getTLSKeyLength() != m_pComboBoxKeyLength->currentText();
auto pathChanged = appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text(); auto pathChanged = appConfig().getTLSCertPath() != m_pLineEditCertificatePath->text();
auto cryptoChanged = appConfig().getCryptoEnabled() != m_pCheckBoxEnableCrypto->isChecked();
//NOR the above bools, if any have changed regen should be disabled as it will be done on save //NOR the above bools, if any have changed regen should be disabled as it will be done on save
auto nor = !(keyChanged || pathChanged || cryptoChanged); auto nor = !(keyChanged || pathChanged);
m_pPushButtonRegenCert->setEnabled(nor); m_pPushButtonRegenCert->setEnabled(nor && m_pCheckBoxEnableCrypto->isChecked());
} }
void SettingsDialog::on_m_pPushButtonRegenCert_clicked() { void SettingsDialog::on_m_pPushButtonRegenCert_clicked() {
@ -346,18 +346,29 @@ void SettingsDialog::enableControls(bool enable) {
m_labelAdminRightsMessage->setVisible(!enable); m_labelAdminRightsMessage->setVisible(!enable);
if (enable) { if (enable) {
m_pLabelLogPath->setEnabled(m_pCheckBoxLogToFile->isChecked());
m_pLineEditLogFilename->setEnabled(m_pCheckBoxLogToFile->isChecked()); m_pLineEditLogFilename->setEnabled(m_pCheckBoxLogToFile->isChecked());
m_pButtonBrowseLog->setEnabled(m_pCheckBoxLogToFile->isChecked()); m_pButtonBrowseLog->setEnabled(m_pCheckBoxLogToFile->isChecked());
m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable()); m_pCheckBoxEnableCrypto->setEnabled(m_appConfig.isCryptoAvailable());
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(); updateRegenButton();
} }
else { else {
m_pLabelLogPath->setEnabled(enable);
m_pLineEditLogFilename->setEnabled(enable); m_pLineEditLogFilename->setEnabled(enable);
m_pButtonBrowseLog->setEnabled(enable); m_pButtonBrowseLog->setEnabled(enable);
m_pCheckBoxEnableCrypto->setEnabled(enable); m_pCheckBoxEnableCrypto->setEnabled(enable);
m_pLabelKeyLength->setEnabled(enable);
m_pComboBoxKeyLength->setEnabled(enable);
m_pLabelCertificate->setEnabled(enable);
m_pLineEditCertificatePath->setEnabled(enable);
m_pPushButtonBrowseCert->setEnabled(enable);
m_pPushButtonRegenCert->setEnabled(enable); m_pPushButtonRegenCert->setEnabled(enable);
} }
} }
void SettingsDialog::onChange() void SettingsDialog::onChange()

File diff suppressed because it is too large Load diff

View file

@ -36,9 +36,8 @@ bool ScreenDuplicationsValidator::validate(const QString& input) const
{ {
for (const auto& screen : (*m_pScreenList)) for (const auto& screen : (*m_pScreenList))
{ {
if (!screen.isNull() && if (!screen.isNull() && !screen.isServer() &&
input != m_defaultName && input != m_defaultName && input == screen.name())
input == screen.name())
{ {
result = false; result = false;
break; break;