#6538 Added event to live swap configs as soon as the scope is changed in settings

This commit is contained in:
Jamie Newbon 2020-02-28 11:34:28 +00:00
parent 70f50a655b
commit a2009d0aa0
2 changed files with 73 additions and 54 deletions

View file

@ -49,6 +49,64 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) :
m_Locale.fillLanguageComboBox(m_pComboLanguage); m_Locale.fillLanguageComboBox(m_pComboLanguage);
loadFromConfig();
}
void SettingsDialog::accept()
{
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().setLanguage(m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString());
appConfig().setElevateMode(static_cast<ElevateMode>(m_pComboElevate->currentIndex()));
appConfig().setAutoHide(m_pCheckBoxAutoHide->isChecked());
appConfig().setAutoConfig(m_pCheckBoxAutoConfig->isChecked());
appConfig().setMinimizeToTray(m_pCheckBoxMinimizeToTray->isChecked());
//We only need to test the System scoped Radio as they are connected
appConfig().setLoadFromSystemScope(m_pRadioSystemScope->isChecked());
appConfig().saveSettings();
QDialog::accept();
}
void SettingsDialog::reject()
{
if (appConfig().language() != m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()) {
QSynergyApplication::getInstance()->switchTranslator(appConfig().language());
}
QDialog::reject();
}
void SettingsDialog::changeEvent(QEvent* event)
{
if (event != nullptr)
{
switch (event->type())
{
case QEvent::LanguageChange:
{
int logLevelIndex = m_pComboLogLevel->currentIndex();
m_pComboLanguage->blockSignals(true);
retranslateUi(this);
m_pComboLanguage->blockSignals(false);
m_pComboLogLevel->setCurrentIndex(logLevelIndex);
break;
}
default:
QDialog::changeEvent(event);
}
}
}
void SettingsDialog::loadFromConfig() {
m_pLineEditScreenName->setText(appConfig().screenName()); m_pLineEditScreenName->setText(appConfig().screenName());
m_pSpinBoxPort->setValue(appConfig().port()); m_pSpinBoxPort->setValue(appConfig().port());
m_pLineEditInterface->setText(appConfig().networkInterface()); m_pLineEditInterface->setText(appConfig().networkInterface());
@ -105,58 +163,6 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) :
#endif #endif
} }
void SettingsDialog::accept()
{
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().setLanguage(m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString());
appConfig().setElevateMode(static_cast<ElevateMode>(m_pComboElevate->currentIndex()));
appConfig().setAutoHide(m_pCheckBoxAutoHide->isChecked());
appConfig().setAutoConfig(m_pCheckBoxAutoConfig->isChecked());
appConfig().setMinimizeToTray(m_pCheckBoxMinimizeToTray->isChecked());
//We only need to test the System scoped Radio as they are connected
appConfig().setLoadFromSystemScope(m_pRadioSystemScope->isChecked());
appConfig().saveSettings();
QDialog::accept();
}
void SettingsDialog::reject()
{
if (appConfig().language() != m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()) {
QSynergyApplication::getInstance()->switchTranslator(appConfig().language());
}
QDialog::reject();
}
void SettingsDialog::changeEvent(QEvent* event)
{
if (event != nullptr)
{
switch (event->type())
{
case QEvent::LanguageChange:
{
int logLevelIndex = m_pComboLogLevel->currentIndex();
m_pComboLanguage->blockSignals(true);
retranslateUi(this);
m_pComboLanguage->blockSignals(false);
m_pComboLogLevel->setCurrentIndex(logLevelIndex);
break;
}
default:
QDialog::changeEvent(event);
}
}
}
void SettingsDialog::allowAutoConfig() void SettingsDialog::allowAutoConfig()
{ {
@ -209,3 +215,9 @@ void SettingsDialog::on_m_pLabelInstallBonjour_linkActivated(const QString&)
m_pBonjourWindows->downloadAndInstall(); m_pBonjourWindows->downloadAndInstall();
#endif #endif
} }
void SettingsDialog::on_m_pRadioSystemScope_toggled(bool checked)
{
appConfig().setLoadFromSystemScope(checked);
loadFromConfig();
}

View file

@ -45,6 +45,9 @@ class SettingsDialog : public QDialog, public Ui::SettingsDialogBase
void changeEvent(QEvent* event); void changeEvent(QEvent* event);
AppConfig& appConfig() { return m_appConfig; } AppConfig& appConfig() { return m_appConfig; }
/// @brief Causes the dialog to load all the settings from m_appConfig
void loadFromConfig();
private: private:
MainWindow* m_pMainWindow; MainWindow* m_pMainWindow;
AppConfig& m_appConfig; AppConfig& m_appConfig;
@ -58,6 +61,10 @@ class SettingsDialog : public QDialog, public Ui::SettingsDialogBase
void on_m_pCheckBoxLogToFile_stateChanged(int ); void on_m_pCheckBoxLogToFile_stateChanged(int );
void on_m_pButtonBrowseLog_clicked(); void on_m_pButtonBrowseLog_clicked();
void on_m_pLabelInstallBonjour_linkActivated(const QString &link); void on_m_pLabelInstallBonjour_linkActivated(const QString &link);
/// @brief Handles the toggling of the system scoped radio button
/// As the user scope radio is connected this will fire for either radio button
void on_m_pRadioSystemScope_toggled(bool checked);
}; };
#endif #endif