diff --git a/src/gui/res/MainWindowBase.ui b/src/gui/res/MainWindowBase.ui index 1706b293..a428a6a4 100644 --- a/src/gui/res/MainWindowBase.ui +++ b/src/gui/res/MainWindowBase.ui @@ -311,13 +311,6 @@ - - - - &Elevate - - - diff --git a/src/gui/res/SettingsDialogBase.ui b/src/gui/res/SettingsDialogBase.ui index c37020a6..d45b69bc 100644 --- a/src/gui/res/SettingsDialogBase.ui +++ b/src/gui/res/SettingsDialogBase.ui @@ -114,6 +114,13 @@ + + + + Elevate mode + + + diff --git a/src/gui/src/AppConfig.cpp b/src/gui/src/AppConfig.cpp index d5db337a..4f85ea65 100644 --- a/src/gui/src/AppConfig.cpp +++ b/src/gui/src/AppConfig.cpp @@ -54,7 +54,8 @@ AppConfig::AppConfig(QSettings* settings) : m_WizardLastRun(0), m_CryptoPass(), m_ProcessMode(DEFAULT_PROCESS_MODE), - m_AutoConnect(true) + m_AutoConnect(true), + m_ElevateMode(false) { Q_ASSERT(m_pSettings); @@ -123,6 +124,7 @@ void AppConfig::loadSettings() m_Language = settings().value("language", QLocale::system().name()).toString(); m_StartedBefore = settings().value("startedBefore", false).toBool(); m_AutoConnect = settings().value("autoConnect", true).toBool(); + m_ElevateMode = settings().value("elevateMode", false).toBool(); } void AppConfig::saveSettings() @@ -139,6 +141,7 @@ void AppConfig::saveSettings() settings().setValue("language", m_Language); settings().setValue("startedBefore", m_StartedBefore); settings().setValue("autoConnect", m_AutoConnect); + settings().setValue("elevateMode", m_ElevateMode); } void AppConfig::setCryptoPass(const QString &s) @@ -161,3 +164,8 @@ void AppConfig::setAutoConnect(bool autoConnect) { m_AutoConnect = autoConnect; } + +bool AppConfig::elevateMode() +{ + return m_ElevateMode; +} diff --git a/src/gui/src/AppConfig.h b/src/gui/src/AppConfig.h index 2e716cfb..3b6bb622 100644 --- a/src/gui/src/AppConfig.h +++ b/src/gui/src/AppConfig.h @@ -78,6 +78,7 @@ class AppConfig bool detectPath(const QString& name, QString& path); void persistLogDir(); + bool elevateMode(); protected: QSettings& settings() { return *m_pSettings; } @@ -91,6 +92,7 @@ class AppConfig void setWizardHasRun() { m_WizardLastRun = kWizardVersion; } void setLanguage(const QString language) { m_Language = language; } void setStartedBefore(bool b) { m_StartedBefore = b; } + void setElevateMode(bool b) { m_ElevateMode = b; } void loadSettings(); void saveSettings(); @@ -112,6 +114,7 @@ class AppConfig QString m_Language; bool m_StartedBefore; bool m_AutoConnect; + bool m_ElevateMode; static const char m_SynergysName[]; static const char m_SynergycName[]; diff --git a/src/gui/src/MainWindow.cpp b/src/gui/src/MainWindow.cpp index f728c578..0c86a0e3 100644 --- a/src/gui/src/MainWindow.cpp +++ b/src/gui/src/MainWindow.cpp @@ -70,8 +70,6 @@ MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig) : m_pTrayIcon(NULL), m_pTrayIconMenu(NULL), m_AlreadyHidden(false), - m_ElevateProcess(false), - m_SuppressElevateWarning(false), m_pMenuBar(NULL), m_pMenuFile(NULL), m_pMenuEdit(NULL), @@ -96,9 +94,6 @@ MainWindow::MainWindow(QSettings& settings, AppConfig& appConfig) : connect(&m_IpcClient, SIGNAL(errorMessage(const QString&)), this, SLOT(appendLogError(const QString&))); connect(&m_IpcClient, SIGNAL(infoMessage(const QString&)), this, SLOT(appendLogNote(const QString&))); m_IpcClient.connectToHost(); -#else - // elevate checkbox is only useful on ms windows. - m_pElevateCheckBox->hide(); #endif // change default size based on os @@ -162,8 +157,6 @@ void MainWindow::onModeChanged(bool startDesktop, bool applyService) stopService(); startSynergy(); } - - m_pElevateCheckBox->setEnabled(appConfig().processMode() == Service); } void MainWindow::setStatus(const QString &status) @@ -245,10 +238,6 @@ void MainWindow::loadSettings() m_pLineEditConfigFile->setText(settings().value("configFile", QDir::homePath() + "/" + synergyConfigName).toString()); m_pGroupClient->setChecked(settings().value("groupClientChecked", true).toBool()); m_pLineEditHostname->setText(settings().value("serverHostname").toString()); - - m_SuppressElevateWarning = true; - m_pElevateCheckBox->setChecked(settings().value("elevateChecked", false).toBool()); - m_SuppressElevateWarning = false; } void MainWindow::initConnections() @@ -476,7 +465,7 @@ void MainWindow::startSynergy() if (serviceMode) { QString command(app + " " + args.join(" ")); - m_IpcClient.sendCommand(command, m_ElevateProcess); + m_IpcClient.sendCommand(command, appConfig().elevateMode()); } appConfig().setStartedBefore(true); @@ -624,7 +613,7 @@ void MainWindow::stopSynergy() void MainWindow::stopService() { // send empty command to stop service from laucning anything. - m_IpcClient.sendCommand("", m_ElevateProcess); + m_IpcClient.sendCommand("", appConfig().elevateMode()); } void MainWindow::stopDesktop() @@ -896,28 +885,6 @@ void MainWindow::on_m_pActionWizard_triggered() wizard.exec(); } -void MainWindow::on_m_pElevateCheckBox_toggled(bool checked) -{ - if (checked && !m_SuppressElevateWarning) { - int r = QMessageBox::warning( - this, tr("Elevate Synergy"), - tr("Are you sure you want to elevate Synergy?\n\n" - "This allows Synergy to interact with elevated processes " - "and the UAC dialog, but can cause problems with non-elevated " - "processes. Elevate Synergy only if you really need to."), - QMessageBox::Yes | QMessageBox::No); - - if (r != QMessageBox::Yes) { - m_pElevateCheckBox->setChecked(false); - return; - } - } - - m_ElevateProcess = checked; - settings().setValue("elevateChecked", checked); - settings().sync(); -} - void MainWindow::on_m_pButtonApply_clicked() { startSynergy(); diff --git a/src/gui/src/MainWindow.h b/src/gui/src/MainWindow.h index 560a81cd..48192342 100644 --- a/src/gui/src/MainWindow.h +++ b/src/gui/src/MainWindow.h @@ -114,7 +114,6 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase void on_m_pActionAbout_triggered(); void on_m_pActionSettings_triggered(); void on_m_pActionWizard_triggered(); - void on_m_pElevateCheckBox_toggled(bool checked); void synergyFinished(int exitCode, QProcess::ExitStatus); void trayActivated(QSystemTrayIcon::ActivationReason reason); void stopSynergy(); @@ -160,8 +159,6 @@ class MainWindow : public QMainWindow, public Ui::MainWindowBase bool m_AlreadyHidden; VersionChecker m_VersionChecker; IpcClient m_IpcClient; - bool m_ElevateProcess; - bool m_SuppressElevateWarning; QMenuBar* m_pMenuBar; QMenu* m_pMenuFile; QMenu* m_pMenuEdit; diff --git a/src/gui/src/SettingsDialog.cpp b/src/gui/src/SettingsDialog.cpp index 434dcd74..e2b35072 100644 --- a/src/gui/src/SettingsDialog.cpp +++ b/src/gui/src/SettingsDialog.cpp @@ -30,7 +30,8 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) : QDialog(parent, Qt::WindowTitleHint | Qt::WindowSystemMenuHint), Ui::SettingsDialogBase(), - m_AppConfig(config) + m_AppConfig(config), + m_SuppressElevateWarning(false) { setupUi(this); @@ -48,6 +49,10 @@ SettingsDialog::SettingsDialog(QWidget* parent, AppConfig& config) : { m_pLineEditCryptoPass->setText(appConfig().cryptoPass()); } + + m_SuppressElevateWarning = true; + m_pCheckBoxElevateMode->setChecked(appConfig().elevateMode()); + m_SuppressElevateWarning = false; } void SettingsDialog::accept() @@ -73,6 +78,7 @@ void SettingsDialog::accept() appConfig().setCryptoEnabled(cryptoEnabled); appConfig().setCryptoPass(cryptoPass); appConfig().setLanguage(m_pComboLanguage->itemData(m_pComboLanguage->currentIndex()).toString()); + appConfig().setElevateMode(m_pCheckBoxElevateMode->isChecked()); appConfig().saveSettings(); QDialog::accept(); } @@ -144,3 +150,21 @@ void SettingsDialog::on_m_pComboLanguage_currentIndexChanged(int index) QString ietfCode = m_pComboLanguage->itemData(index).toString(); QSynergyApplication::getInstance()->switchTranslator(ietfCode); } + +void SettingsDialog::on_m_pCheckBoxElevateMode_toggled(bool checked) +{ + if (checked && !m_SuppressElevateWarning) { + int r = QMessageBox::warning( + this, tr("Elevate Synergy"), + tr("Are you sure you want to elevate Synergy?\n\n" + "This allows Synergy to interact with elevated processes " + "and the UAC dialog, but can cause problems with non-elevated " + "processes. Elevate Synergy only if you really need to."), + QMessageBox::Yes | QMessageBox::No); + + if (r != QMessageBox::Yes) { + m_pCheckBoxElevateMode->setChecked(false); + return; + } + } +} diff --git a/src/gui/src/SettingsDialog.h b/src/gui/src/SettingsDialog.h index e107f79e..a0b6c6cf 100644 --- a/src/gui/src/SettingsDialog.h +++ b/src/gui/src/SettingsDialog.h @@ -44,8 +44,10 @@ class SettingsDialog : public QDialog, public Ui::SettingsDialogBase private: AppConfig& m_AppConfig; SynergyLocale m_Locale; + bool m_SuppressElevateWarning; private slots: + void on_m_pCheckBoxElevateMode_toggled(bool checked); void on_m_pCheckBoxEnableCrypto_stateChanged(int ); void on_m_pComboLanguage_currentIndexChanged(int index); void on_m_pCheckBoxLogToFile_stateChanged(int );