refactor: SettingsDialog, add reset to default button

This commit is contained in:
sithlord48 2026-02-16 16:01:40 -05:00 committed by Chris Rizzitello
parent 58963de10f
commit 208556b5aa
9 changed files with 105 additions and 1 deletions

View file

@ -85,6 +85,10 @@ void SettingsDialog::initConnections() const
connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &SettingsDialog::accept); connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &SettingsDialog::accept);
connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
connect(ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, this, &SettingsDialog::loadFromConfig); connect(ui->buttonBox->button(QDialogButtonBox::Reset), &QPushButton::clicked, this, &SettingsDialog::loadFromConfig);
connect(
ui->buttonBox->button(QDialogButtonBox::RestoreDefaults), &QPushButton::clicked, this,
&SettingsDialog::resetToDefault
);
connect(ui->groupSecurity, &QGroupBox::toggled, this, &SettingsDialog::updateTlsControlsEnabled); connect(ui->groupSecurity, &QGroupBox::toggled, this, &SettingsDialog::updateTlsControlsEnabled);
connect(ui->groupService, &QGroupBox::toggled, this, &SettingsDialog::updateControls); connect(ui->groupService, &QGroupBox::toggled, this, &SettingsDialog::updateControls);
@ -191,6 +195,7 @@ void SettingsDialog::updateText()
ui->buttonBox->button(QDialogButtonBox::Save)->setToolTip(tr("Close and save changes")); ui->buttonBox->button(QDialogButtonBox::Save)->setToolTip(tr("Close and save changes"));
ui->buttonBox->button(QDialogButtonBox::Cancel)->setToolTip(tr("Close and forget changes")); ui->buttonBox->button(QDialogButtonBox::Cancel)->setToolTip(tr("Close and forget changes"));
ui->buttonBox->button(QDialogButtonBox::Reset)->setToolTip(tr("Reset to stored values")); ui->buttonBox->button(QDialogButtonBox::Reset)->setToolTip(tr("Reset to stored values"));
ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setToolTip(tr("Reset to default values"));
} }
void SettingsDialog::accept() void SettingsDialog::accept()
@ -397,11 +402,75 @@ bool SettingsDialog::isModified() const
); );
} }
bool SettingsDialog::isDefault() const
{
const auto processMode = Settings::defaultValue(Settings::Core::ProcessMode).value<Settings::ProcessMode>();
return (
(ui->sbPort->value() == Settings::defaultValue(Settings::Core::Port).toInt()) &&
(ui->comboLogLevel->currentIndex() == Settings::defaultValue(Settings::Log::Level).toInt()) &&
(ui->cbLogToFile->isChecked() == Settings::defaultValue(Settings::Log::ToFile).toBool()) &&
(ui->lineLogFilename->text() == Settings::defaultValue(Settings::Log::File).toString()) &&
(ui->cbAutoHide->isChecked() == Settings::defaultValue(Settings::Gui::Autohide).toBool()) &&
(ui->cbPreventSleep->isChecked() == Settings::defaultValue(Settings::Core::PreventSleep).toBool()) &&
(ui->cbCloseToTray->isChecked() == Settings::defaultValue(Settings::Gui::CloseToTray).toBool()) &&
(ui->cbElevateDaemon->isChecked() == Settings::defaultValue(Settings::Daemon::Elevate).toBool()) &&
(ui->cbAutoUpdate->isChecked() == Settings::defaultValue(Settings::Gui::AutoUpdateCheck).toBool()) &&
(ui->cbGuiDebug->isChecked() == Settings::defaultValue(Settings::Log::GuiDebug).toBool()) &&
(ui->cbUseWlClipboard->isChecked() == Settings::defaultValue(Settings::Core::UseWlClipboard).toBool()) &&
(ui->cbShowVersion->isChecked() == Settings::defaultValue(Settings::Gui::ShowVersionInTitle).toBool()) &&
(ui->rbIconMono->isChecked() == Settings::defaultValue(Settings::Gui::SymbolicTrayIcon).toBool()) &&
(ui->groupService->isChecked() == (processMode == Settings::ProcessMode::Service)) &&
(ui->comboInterface->currentIndex() == 0) &&
(ui->lineTlsCertPath->text() == Settings::defaultValue(Settings::Security::Certificate).toString()) &&
(ui->comboTlsKeyLength->currentText() == Settings::defaultValue(Settings::Security::KeySize).toString()) &&
(ui->groupSecurity->isChecked() == Settings::defaultValue(Settings::Security::TlsEnabled).toBool()) &&
(ui->cbRequireClientCert->isChecked() == Settings::defaultValue(Settings::Security::CheckPeers).toBool()) &&
(ui->comboLanguage->currentText() == "English")
);
}
void SettingsDialog::resetToDefault()
{
ui->sbPort->setValue(Settings::defaultValue(Settings::Core::Port).toInt());
ui->comboLogLevel->setCurrentIndex(Settings::defaultValue(Settings::Log::Level).toInt());
ui->cbLogToFile->setChecked(Settings::defaultValue(Settings::Log::ToFile).toBool());
ui->lineLogFilename->setText(Settings::defaultValue(Settings::Log::File).toString());
ui->cbAutoHide->setChecked(Settings::defaultValue(Settings::Gui::Autohide).toBool());
ui->cbPreventSleep->setChecked(Settings::defaultValue(Settings::Core::PreventSleep).toBool());
ui->cbCloseToTray->setChecked(Settings::defaultValue(Settings::Gui::CloseToTray).toBool());
ui->cbElevateDaemon->setChecked(Settings::defaultValue(Settings::Daemon::Elevate).toBool());
ui->cbAutoUpdate->setChecked(Settings::defaultValue(Settings::Gui::AutoUpdateCheck).toBool());
ui->cbGuiDebug->setChecked(Settings::defaultValue(Settings::Log::GuiDebug).toBool());
ui->cbUseWlClipboard->setChecked(Settings::defaultValue(Settings::Core::UseWlClipboard).toBool());
ui->cbShowVersion->setChecked(Settings::defaultValue(Settings::Gui::ShowVersionInTitle).toBool());
const auto processMode = Settings::defaultValue(Settings::Core::ProcessMode).value<Settings::ProcessMode>();
ui->groupService->setChecked(processMode == Settings::ProcessMode::Service);
if (!deskflow::platform::isWindows())
ui->groupService->setVisible(false);
if (Settings::defaultValue(Settings::Gui::SymbolicTrayIcon).toBool())
ui->rbIconMono->setChecked(true);
else
ui->rbIconColorful->setChecked(true);
ui->lblDebugWarning->setVisible(false);
ui->comboInterface->setCurrentIndex(0);
qDebug() << "reset to default values";
updateControls();
setButtonBoxEnabledButtons();
}
void SettingsDialog::setButtonBoxEnabledButtons() const void SettingsDialog::setButtonBoxEnabledButtons() const
{ {
const bool modified = isModified(); const bool modified = isModified();
ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(modified); ui->buttonBox->button(QDialogButtonBox::Save)->setEnabled(modified);
ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(modified); ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(modified);
ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(!isDefault());
} }
SettingsDialog::~SettingsDialog() = default; SettingsDialog::~SettingsDialog() = default;

View file

@ -67,6 +67,17 @@ private:
*/ */
bool isModified() const; bool isModified() const;
/**
* @brief isDefault
* @return true if all client settings match the default values
*/
bool isDefault() const;
/**
* @brief Set the gui values to the defalut values for all client settings
*/
void resetToDefault();
/** /**
* @brief setButtonBoxEnabledButtons * @brief setButtonBoxEnabledButtons
* Enable / Disable the button box buttons based on the state of the gui * Enable / Disable the button box buttons based on the state of the gui

View file

@ -711,7 +711,7 @@
<enum>Qt::Orientation::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="standardButtons"> <property name="standardButtons">
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Reset|QDialogButtonBox::StandardButton::Save</set> <set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Reset|QDialogButtonBox::StandardButton::RestoreDefaults|QDialogButtonBox::StandardButton::Save</set>
</property> </property>
</widget> </widget>
</item> </item>

View file

@ -1327,6 +1327,10 @@ Al habilitar esta opción, se deshabilitará la interfaz gráfica de usuario (GU
<source>Reset to stored values</source> <source>Reset to stored values</source>
<translation type="unfinished">Restablecer los valores almacenados</translation> <translation type="unfinished">Restablecer los valores almacenados</translation>
</message> </message>
<message>
<source>Reset to default values</source>
<translation type="unfinished">Restablecer valores predeterminados</translation>
</message>
<message> <message>
<source>TLS Certificate Regenerated</source> <source>TLS Certificate Regenerated</source>
<translation type="unfinished">Certificado TLS regenerado</translation> <translation type="unfinished">Certificado TLS regenerado</translation>

View file

@ -1327,6 +1327,10 @@ L&apos;abilitazione di questa impostazione disabiliterà l&apos;interfaccia graf
<source>Reset to stored values</source> <source>Reset to stored values</source>
<translation type="unfinished">Ripristina i valori memorizzati</translation> <translation type="unfinished">Ripristina i valori memorizzati</translation>
</message> </message>
<message>
<source>Reset to default values</source>
<translation type="unfinished">Ripristina i valori predefiniti</translation>
</message>
<message> <message>
<source>TLS Certificate Regenerated</source> <source>TLS Certificate Regenerated</source>
<translation>Certificato TLS rigenerato</translation> <translation>Certificato TLS rigenerato</translation>

View file

@ -1356,6 +1356,10 @@ Enabling this setting will disable the server config GUI.</source>
<source>Reset to stored values</source> <source>Reset to stored values</source>
<translation>変更前の値にリセットする</translation> <translation>変更前の値にリセットする</translation>
</message> </message>
<message>
<source>Reset to default values</source>
<translation>デフォルト値にリセットする</translation>
</message>
<message> <message>
<source>Enable wl-clipboard support</source> <source>Enable wl-clipboard support</source>
<translation>wl-clipboard によるクリップボード対応を有効にする</translation> <translation>wl-clipboard によるクリップボード対応を有効にする</translation>

View file

@ -1354,6 +1354,10 @@ Enabling this setting will disable the server config GUI.</source>
<source>Reset to stored values</source> <source>Reset to stored values</source>
<translation type="unfinished">저장된 값으로 재설정</translation> <translation type="unfinished">저장된 값으로 재설정</translation>
</message> </message>
<message>
<source>Reset to default values</source>
<translation type="unfinished">기본값으로 재설정</translation>
</message>
<message> <message>
<source>Enable wl-clipboard support</source> <source>Enable wl-clipboard support</source>
<translation>wl-clipboard 지원 사용</translation> <translation>wl-clipboard 지원 사용</translation>

View file

@ -1358,6 +1358,10 @@ Enabling this setting will disable the server config GUI.</source>
<source>Reset to stored values</source> <source>Reset to stored values</source>
<translation type="unfinished">Сбросить до сохраненных значений</translation> <translation type="unfinished">Сбросить до сохраненных значений</translation>
</message> </message>
<message>
<source>Reset to default values</source>
<translation type="unfinished">Сбросить до значений по умолчанию</translation>
</message>
<message> <message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Requires the wl-clipboard package&lt;/p&gt;&lt;p&gt;When using wl-clipboard v2.2.1, there is a focus stealing bug that may make Deskflow harder to use. This has been fixed when using the wl-clipboard master branch, unless your Compositor lacks wlroots-data-control protocol support.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source> <source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Requires the wl-clipboard package&lt;/p&gt;&lt;p&gt;When using wl-clipboard v2.2.1, there is a focus stealing bug that may make Deskflow harder to use. This has been fixed when using the wl-clipboard master branch, unless your Compositor lacks wlroots-data-control protocol support.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Требуется пакет wl-clipboard. В версии 2.2.1 есть ошибка перехвата фокуса.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation> <translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Требуется пакет wl-clipboard. В версии 2.2.1 есть ошибка перехвата фокуса.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>

View file

@ -1356,6 +1356,10 @@ Enabling this setting will disable the server config GUI.</source>
<source>Reset to stored values</source> <source>Reset to stored values</source>
<translation type="unfinished">重置为存储值</translation> <translation type="unfinished">重置为存储值</translation>
</message> </message>
<message>
<source>Reset to default values</source>
<translation type="unfinished">重置为默认值</translation>
</message>
<message> <message>
<source>Enable wl-clipboard support</source> <source>Enable wl-clipboard support</source>
<translation>启用 wl-clipboard 支持</translation> <translation>启用 wl-clipboard 支持</translation>