diff --git a/doc/newsfragments/gui-autostart.feature b/doc/newsfragments/gui-autostart.feature new file mode 100644 index 00000000..d75ca8d8 --- /dev/null +++ b/doc/newsfragments/gui-autostart.feature @@ -0,0 +1 @@ +Implemented a configuration option for Server GUI auto-start. diff --git a/src/gui/src/AppConfig.cpp b/src/gui/src/AppConfig.cpp index 2f8779d0..c7878afe 100644 --- a/src/gui/src/AppConfig.cpp +++ b/src/gui/src/AppConfig.cpp @@ -60,6 +60,7 @@ AppConfig::AppConfig(QSettings* settings) : m_AutoConfigPrompted(false), m_CryptoEnabled(false), m_AutoHide(false), + m_AutoStart(false), m_MinimizeToTray(false) { Q_ASSERT(m_pSettings); @@ -158,6 +159,7 @@ void AppConfig::loadSettings() m_AutoConfigPrompted = settings().value("autoConfigPrompted", false).toBool(); m_CryptoEnabled = settings().value("cryptoEnabled", true).toBool(); m_AutoHide = settings().value("autoHide", false).toBool(); + m_AutoStart = settings().value("autoStart", false).toBool(); m_MinimizeToTray = settings().value("minimizeToTray", false).toBool(); } @@ -180,6 +182,7 @@ void AppConfig::saveSettings() settings().setValue("autoConfigPrompted", m_AutoConfigPrompted); settings().setValue("cryptoEnabled", m_CryptoEnabled); settings().setValue("autoHide", m_AutoHide); + settings().setValue("autoStart", m_AutoStart); settings().setValue("minimizeToTray", m_MinimizeToTray); settings().sync(); } @@ -226,6 +229,10 @@ void AppConfig::setAutoHide(bool b) { m_AutoHide = b; } bool AppConfig::getAutoHide() { return m_AutoHide; } +void AppConfig::setAutoStart(bool b) { m_AutoStart = b; } + +bool AppConfig::getAutoStart() { return m_AutoStart; } + void AppConfig::setMinimizeToTray(bool b) { m_MinimizeToTray = b; } bool AppConfig::getMinimizeToTray() { return m_MinimizeToTray; } diff --git a/src/gui/src/AppConfig.h b/src/gui/src/AppConfig.h index c9ed38de..124ee85f 100644 --- a/src/gui/src/AppConfig.h +++ b/src/gui/src/AppConfig.h @@ -94,6 +94,9 @@ class AppConfig: public QObject void setAutoHide(bool b); bool getAutoHide(); + void setAutoStart(bool b); + bool getAutoStart(); + void setMinimizeToTray(bool b); bool getMinimizeToTray(); @@ -130,6 +133,7 @@ protected: bool m_AutoConfigPrompted; bool m_CryptoEnabled; bool m_AutoHide; + bool m_AutoStart; bool m_MinimizeToTray; static const char m_BarriersName[]; diff --git a/src/gui/src/MainWindow.cpp b/src/gui/src/MainWindow.cpp index 81628611..a3962aa8 100644 --- a/src/gui/src/MainWindow.cpp +++ b/src/gui/src/MainWindow.cpp @@ -201,7 +201,7 @@ void MainWindow::open() // only start if user has previously started. this stops the gui from // auto hiding before the user has configured barrier (which of course // confuses first time users, who think barrier has crashed). - if (appConfig().startedBefore() && appConfig().processMode() == Desktop) { + if (appConfig().startedBefore() && appConfig().getAutoStart()) { m_SuppressEmptyServerWarning = true; startBarrier(); m_SuppressEmptyServerWarning = false; diff --git a/src/gui/src/SettingsDialog.cpp b/src/gui/src/SettingsDialog.cpp index f1c413a8..1caeae5d 100644 --- a/src/gui/src/SettingsDialog.cpp +++ b/src/gui/src/SettingsDialog.cpp @@ -48,6 +48,7 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) : m_pLineEditLogFilename->setText(appConfig().logFilename()); setIndexFromItemData(m_pComboLanguage, appConfig().language()); m_pCheckBoxAutoHide->setChecked(appConfig().getAutoHide()); + m_pCheckBoxAutoStart->setChecked(appConfig().getAutoStart()); m_pCheckBoxMinimizeToTray->setChecked(appConfig().getMinimizeToTray()); m_pCheckBoxEnableCrypto->setChecked(m_appConfig.getCryptoEnabled()); @@ -72,6 +73,7 @@ void SettingsDialog::accept() m_appConfig.setLanguage(m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()); m_appConfig.setElevateMode(static_cast(m_pComboElevate->currentIndex())); m_appConfig.setAutoHide(m_pCheckBoxAutoHide->isChecked()); + m_appConfig.setAutoStart(m_pCheckBoxAutoStart->isChecked()); m_appConfig.setMinimizeToTray(m_pCheckBoxMinimizeToTray->isChecked()); m_appConfig.saveSettings(); QDialog::accept(); diff --git a/src/gui/src/SettingsDialogBase.ui b/src/gui/src/SettingsDialogBase.ui index d75c18cc..719a84bc 100644 --- a/src/gui/src/SettingsDialogBase.ui +++ b/src/gui/src/SettingsDialogBase.ui @@ -7,7 +7,7 @@ 0 0 368 - 380 + 428 @@ -126,6 +126,13 @@ + + + + Start &Barrier on startup + + + @@ -322,6 +329,7 @@ m_pComboElevate m_pCheckBoxMinimizeToTray m_pCheckBoxAutoHide + m_pCheckBoxAutoStart m_pSpinBoxPort m_pLineEditInterface m_pCheckBoxEnableCrypto