diff --git a/plugin-cpuload/lxqtcpuloadconfiguration.cpp b/plugin-cpuload/lxqtcpuloadconfiguration.cpp index 04d9bedef..9a29ec032 100644 --- a/plugin-cpuload/lxqtcpuloadconfiguration.cpp +++ b/plugin-cpuload/lxqtcpuloadconfiguration.cpp @@ -35,7 +35,8 @@ LXQtCpuLoadConfiguration::LXQtCpuLoadConfiguration(PluginSettings *settings, QWidget *parent) : LXQtPanelPluginConfigDialog(settings, parent), - ui(new Ui::LXQtCpuLoadConfiguration) + ui(new Ui::LXQtCpuLoadConfiguration), + mLockSettingChanges(false) { setAttribute(Qt::WA_DeleteOnClose); setObjectName(QStringLiteral("CpuLoadConfigurationWindow")); @@ -68,6 +69,8 @@ void LXQtCpuLoadConfiguration::fillBarOrientations() void LXQtCpuLoadConfiguration::loadSettings() { + mLockSettingChanges = true; + ui->showTextCB->setChecked(settings().value(QStringLiteral("showText"), false).toBool()); ui->barWidthSB->setValue(settings().value(QStringLiteral("barWidth"), 20).toInt()); ui->updateIntervalSpinBox->setValue(settings().value(QStringLiteral("updateInterval"), 1000).toInt() / 1000.0); @@ -84,24 +87,30 @@ void LXQtCpuLoadConfiguration::loadSettings() // } // ui->menuFilePathLE->setText(menuFile); // ui->shortcutEd->setKeySequence(settings().value("shortcut", "Alt+F1").toString()); + + mLockSettingChanges = false; } void LXQtCpuLoadConfiguration::showTextChanged(bool value) { - settings().setValue(QStringLiteral("showText"), value); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("showText"), value); } void LXQtCpuLoadConfiguration::barWidthChanged(int value) { - settings().setValue(QStringLiteral("barWidth"), value); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("barWidth"), value); } void LXQtCpuLoadConfiguration::updateIntervalChanged(double value) { - settings().setValue(QStringLiteral("updateInterval"), value*1000); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("updateInterval"), value*1000); } void LXQtCpuLoadConfiguration::barOrientationChanged(int index) { - settings().setValue(QStringLiteral("barOrientation"), ui->barOrientationCOB->itemData(index).toString()); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("barOrientation"), ui->barOrientationCOB->itemData(index).toString()); } diff --git a/plugin-cpuload/lxqtcpuloadconfiguration.h b/plugin-cpuload/lxqtcpuloadconfiguration.h index 300453838..4746825bd 100644 --- a/plugin-cpuload/lxqtcpuloadconfiguration.h +++ b/plugin-cpuload/lxqtcpuloadconfiguration.h @@ -49,6 +49,7 @@ class LXQtCpuLoadConfiguration : public LXQtPanelPluginConfigDialog private: Ui::LXQtCpuLoadConfiguration *ui; + bool mLockSettingChanges; /* Fills Bar orientation combobox diff --git a/plugin-mainmenu/lxqtmainmenuconfiguration.cpp b/plugin-mainmenu/lxqtmainmenuconfiguration.cpp index 8665020c4..76c6ae2f5 100644 --- a/plugin-mainmenu/lxqtmainmenuconfiguration.cpp +++ b/plugin-mainmenu/lxqtmainmenuconfiguration.cpp @@ -40,7 +40,8 @@ LXQtMainMenuConfiguration::LXQtMainMenuConfiguration(PluginSettings *settings, G LXQtPanelPluginConfigDialog(settings, parent), ui(new Ui::LXQtMainMenuConfiguration), mDefaultShortcut(defaultShortcut), - mShortcut(shortcut) + mShortcut(shortcut), + mLockSettingChanges(false) { setAttribute(Qt::WA_DeleteOnClose); setObjectName(QStringLiteral("MainMenuConfigurationWindow")); @@ -58,14 +59,17 @@ LXQtMainMenuConfiguration::LXQtMainMenuConfiguration(PluginSettings *settings, G connect(ui->textLE, &QLineEdit::textEdited, this, &LXQtMainMenuConfiguration::textButtonChanged); connect(ui->chooseMenuFilePB, &QAbstractButton::clicked, this, &LXQtMainMenuConfiguration::chooseMenuFile); connect(ui->menuFilePathLE, &QLineEdit::textChanged, this, [&] (QString const & file) { - this->settings().setValue(QLatin1String("menu_file"), file); + if (!mLockSettingChanges) + this->settings().setValue(QLatin1String("menu_file"), file); }); connect(ui->iconCB, &QCheckBox::toggled, this, [this] (bool value) { - this->settings().setValue(QStringLiteral("ownIcon"), value); } - ); + if (!mLockSettingChanges) + this->settings().setValue(QStringLiteral("ownIcon"), value); + }); connect(ui->iconPB, &QAbstractButton::clicked, this, &LXQtMainMenuConfiguration::chooseIcon); connect(ui->iconLE, &QLineEdit::textChanged, this, [&] (QString const & path) { - this->settings().setValue(QLatin1String("icon"), path); + if (!mLockSettingChanges) + this->settings().setValue(QLatin1String("icon"), path); }); connect(ui->shortcutEd, &ShortcutSelector::shortcutGrabbed, this, &LXQtMainMenuConfiguration::shortcutChanged); @@ -76,25 +80,31 @@ LXQtMainMenuConfiguration::LXQtMainMenuConfiguration(PluginSettings *settings, G connect(mShortcut, &GlobalKeyShortcut::Action::shortcutChanged, this, &LXQtMainMenuConfiguration::globalShortcutChanged); - connect(ui->filterMenuCB, &QCheckBox::toggled, this, [this] (bool enabled) { - ui->filterClearCB->setEnabled(enabled || ui->filterShowCB->isChecked()); - this->settings().setValue(QStringLiteral("filterMenu"), enabled); + connect(ui->filterMenuCB, &QCheckBox::toggled, this, [this] (bool value) { + ui->filterClearCB->setEnabled(value || ui->filterShowCB->isChecked()); + if (!mLockSettingChanges) + this->settings().setValue(QStringLiteral("filterMenu"), value); }); - connect(ui->filterShowCB, &QCheckBox::toggled, this, [this] (bool enabled) { - ui->filterClearCB->setEnabled(enabled || ui->filterMenuCB->isChecked()); - this->settings().setValue(QStringLiteral("filterShow"), enabled); + connect(ui->filterShowCB, &QCheckBox::toggled, this, [this] (bool value) { + ui->filterClearCB->setEnabled(value || ui->filterMenuCB->isChecked()); + if (!mLockSettingChanges) + this->settings().setValue(QStringLiteral("filterShow"), value); }); connect(ui->filterShowMaxItemsSB, QOverload::of(&QSpinBox::valueChanged), this, [this] (int value) { - this->settings().setValue(QStringLiteral("filterShowMaxItems"), value); + if (!mLockSettingChanges) + this->settings().setValue(QStringLiteral("filterShowMaxItems"), value); }); connect(ui->filterShowMaxWidthSB, QOverload::of(&QSpinBox::valueChanged), this, [this] (int value) { - this->settings().setValue(QStringLiteral("filterShowMaxWidth"), value); + if (!mLockSettingChanges) + this->settings().setValue(QStringLiteral("filterShowMaxWidth"), value); }); - connect(ui->filterShowHideMenuCB, &QCheckBox::toggled, this, [this] (bool enabled) { - this->settings().setValue(QStringLiteral("filterShowHideMenu"), enabled); + connect(ui->filterShowHideMenuCB, &QCheckBox::toggled, this, [this] (bool value) { + if (!mLockSettingChanges) + this->settings().setValue(QStringLiteral("filterShowHideMenu"), value); }); - connect(ui->filterClearCB, &QCheckBox::toggled, this, [this] (bool enabled) { - this->settings().setValue(QStringLiteral("filterClear"), enabled); + connect(ui->filterClearCB, &QCheckBox::toggled, this, [this] (bool value) { + if (!mLockSettingChanges) + this->settings().setValue(QStringLiteral("filterClear"), value); }); } @@ -105,6 +115,8 @@ LXQtMainMenuConfiguration::~LXQtMainMenuConfiguration() void LXQtMainMenuConfiguration::loadSettings() { + mLockSettingChanges = true; + ui->iconCB->setChecked(settings().value(QStringLiteral("ownIcon"), false).toBool()); ui->iconLE->setText(settings().value(QStringLiteral("icon"), QLatin1String(LXQT_GRAPHICS_DIR"/helix.svg")).toString()); ui->showTextCB->setChecked(settings().value(QStringLiteral("showText"), false).toBool()); @@ -139,17 +151,21 @@ void LXQtMainMenuConfiguration::loadSettings() ui->filterShowHideMenuCB->setChecked(settings().value(QStringLiteral("filterShowHideMenu"), true).toBool()); ui->filterClearCB->setChecked(settings().value(QStringLiteral("filterClear"), false).toBool()); ui->filterClearCB->setEnabled(filter_menu || filter_show); + + mLockSettingChanges = false; } void LXQtMainMenuConfiguration::textButtonChanged(const QString &value) { - settings().setValue(QStringLiteral("text"), value); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("text"), value); } void LXQtMainMenuConfiguration::showTextChanged(bool value) { - settings().setValue(QStringLiteral("showText"), value); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("showText"), value); } void LXQtMainMenuConfiguration::chooseIcon() @@ -200,10 +216,12 @@ void LXQtMainMenuConfiguration::shortcutReset() void LXQtMainMenuConfiguration::customFontChanged(bool value) { - settings().setValue(QStringLiteral("customFont"), value); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("customFont"), value); } void LXQtMainMenuConfiguration::customFontSizeChanged(int value) { - settings().setValue(QStringLiteral("customFontSize"), value); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral("customFontSize"), value); } diff --git a/plugin-mainmenu/lxqtmainmenuconfiguration.h b/plugin-mainmenu/lxqtmainmenuconfiguration.h index 5e3b96379..7774737bb 100644 --- a/plugin-mainmenu/lxqtmainmenuconfiguration.h +++ b/plugin-mainmenu/lxqtmainmenuconfiguration.h @@ -57,6 +57,7 @@ class LXQtMainMenuConfiguration : public LXQtPanelPluginConfigDialog Ui::LXQtMainMenuConfiguration *ui; QString mDefaultShortcut; GlobalKeyShortcut::Action * mShortcut; + bool mLockSettingChanges; private slots: void globalShortcutChanged(const QString &oldShortcut, const QString &newShortcut); diff --git a/plugin-mount/configuration.cpp b/plugin-mount/configuration.cpp index dc4431032..da60133c2 100644 --- a/plugin-mount/configuration.cpp +++ b/plugin-mount/configuration.cpp @@ -34,7 +34,8 @@ Configuration::Configuration(PluginSettings *settings, QWidget *parent) : LXQtPanelPluginConfigDialog(settings, parent), - ui(new Ui::Configuration) + ui(new Ui::Configuration), + mLockSettingChanges(false) { ui->setupUi(this); @@ -68,21 +69,31 @@ Configuration::~Configuration() void Configuration::loadSettings() { + mLockSettingChanges = true; + QVariant value = settings().value(QLatin1String(CFG_KEY_ACTION), QLatin1String(ACT_SHOW_INFO)); setComboboxIndexByData(ui->devAddedCombo, value, 1); value = settings().value(QLatin1String(CFG_EJECT_ACTION), QLatin1String(ACT_NOTHING)); setComboboxIndexByData(ui->ejectPressedCombo, value, 1); + + mLockSettingChanges = false; } void Configuration::devAddedChanged(int index) { - QString s = ui->devAddedCombo->itemData(index).toString(); - settings().setValue(QLatin1String(CFG_KEY_ACTION), s); + if (!mLockSettingChanges) + { + QString s = ui->devAddedCombo->itemData(index).toString(); + settings().setValue(QLatin1String(CFG_KEY_ACTION), s); + } } void Configuration::ejectPressedChanged(int index) { - QString s = ui->ejectPressedCombo->itemData(index).toString(); - settings().setValue(QLatin1String(CFG_EJECT_ACTION), s); + if (!mLockSettingChanges) + { + QString s = ui->ejectPressedCombo->itemData(index).toString(); + settings().setValue(QLatin1String(CFG_EJECT_ACTION), s); + } } diff --git a/plugin-mount/configuration.h b/plugin-mount/configuration.h index de5615c9b..8da1d3796 100644 --- a/plugin-mount/configuration.h +++ b/plugin-mount/configuration.h @@ -56,6 +56,7 @@ protected slots: private: Ui::Configuration *ui; + bool mLockSettingChanges; }; #endif // LXQTMOUNTCONFIGURATION_H diff --git a/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.cpp b/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.cpp index 9bfb3bfe8..923ab8929 100644 --- a/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.cpp +++ b/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.cpp @@ -40,7 +40,8 @@ extern "C" { LXQtNetworkMonitorConfiguration::LXQtNetworkMonitorConfiguration(PluginSettings *settings, QWidget *parent) : LXQtPanelPluginConfigDialog(settings, parent), - ui(new Ui::LXQtNetworkMonitorConfiguration) + ui(new Ui::LXQtNetworkMonitorConfiguration), + mLockSettingChanges(false) { setAttribute(Qt::WA_DeleteOnClose); setObjectName(QStringLiteral("NetworkMonitorConfigurationWindow")); @@ -60,12 +61,17 @@ LXQtNetworkMonitorConfiguration::~LXQtNetworkMonitorConfiguration() void LXQtNetworkMonitorConfiguration::saveSettings() { - settings().setValue(QStringLiteral("icon"), ui->iconCB->currentIndex()); - settings().setValue(QStringLiteral("interface"), ui->interfaceCB->currentText()); + if (!mLockSettingChanges) + { + settings().setValue(QStringLiteral("icon"), ui->iconCB->currentIndex()); + settings().setValue(QStringLiteral("interface"), ui->interfaceCB->currentText()); + } } void LXQtNetworkMonitorConfiguration::loadSettings() { + mLockSettingChanges = true; + ui->iconCB->setCurrentIndex(settings().value(QStringLiteral("icon"), 1).toInt()); int count; @@ -81,4 +87,6 @@ void LXQtNetworkMonitorConfiguration::loadSettings() QString interface = settings().value(QStringLiteral("interface")).toString(); ui->interfaceCB->setCurrentIndex(qMax(qMin(0, count - 1), ui->interfaceCB->findText(interface))); + + mLockSettingChanges = false; } diff --git a/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.h b/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.h index bdd793e75..33c963e6d 100644 --- a/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.h +++ b/plugin-networkmonitor/lxqtnetworkmonitorconfiguration.h @@ -49,6 +49,7 @@ class LXQtNetworkMonitorConfiguration : public LXQtPanelPluginConfigDialog private: Ui::LXQtNetworkMonitorConfiguration *ui; + bool mLockSettingChanges; private slots: /* diff --git a/plugin-sensors/lxqtsensorsconfiguration.cpp b/plugin-sensors/lxqtsensorsconfiguration.cpp index 4e7d470f2..6181ed1ea 100644 --- a/plugin-sensors/lxqtsensorsconfiguration.cpp +++ b/plugin-sensors/lxqtsensorsconfiguration.cpp @@ -36,7 +36,8 @@ LXQtSensorsConfiguration::LXQtSensorsConfiguration(PluginSettings *settings, QWidget *parent) : LXQtPanelPluginConfigDialog(settings, parent), - ui(new Ui::LXQtSensorsConfiguration) + ui(new Ui::LXQtSensorsConfiguration), + mLockSettingChanges(false) { setAttribute(Qt::WA_DeleteOnClose); setObjectName(QStringLiteral("SensorsConfigurationWindow")); @@ -69,6 +70,8 @@ LXQtSensorsConfiguration::~LXQtSensorsConfiguration() void LXQtSensorsConfiguration::loadSettings() { + mLockSettingChanges = true; + ui->updateIntervalSB->setValue(settings().value(QStringLiteral("updateInterval")).toInt()); ui->tempBarWidthSB->setValue(settings().value(QStringLiteral("tempBarWidth")).toInt()); @@ -97,11 +100,16 @@ void LXQtSensorsConfiguration::loadSettings() ui->warningAboutHighTemperatureChB->setChecked( settings().value(QStringLiteral("warningAboutHighTemperature")).toBool()); + + mLockSettingChanges = false; } void LXQtSensorsConfiguration::saveSettings() { + if (mLockSettingChanges) + return; + settings().setValue(QStringLiteral("updateInterval"), ui->updateIntervalSB->value()); settings().setValue(QStringLiteral("tempBarWidth"), ui->tempBarWidthSB->value()); diff --git a/plugin-sensors/lxqtsensorsconfiguration.h b/plugin-sensors/lxqtsensorsconfiguration.h index 8211ee835..690cefa20 100644 --- a/plugin-sensors/lxqtsensorsconfiguration.h +++ b/plugin-sensors/lxqtsensorsconfiguration.h @@ -49,6 +49,7 @@ class LXQtSensorsConfiguration : public LXQtPanelPluginConfigDialog private: Ui::LXQtSensorsConfiguration *ui; + bool mLockSettingChanges; /* Read settings from conf file and put data into controls. diff --git a/plugin-statusnotifier/statusnotifierconfiguration.cpp b/plugin-statusnotifier/statusnotifierconfiguration.cpp index 1e037da06..b3ef39eaa 100644 --- a/plugin-statusnotifier/statusnotifierconfiguration.cpp +++ b/plugin-statusnotifier/statusnotifierconfiguration.cpp @@ -114,35 +114,29 @@ void StatusNotifierConfiguration::addItems(const QStringList &items) ui->tableWidget->setCurrentCell(0, 1); } -void StatusNotifierConfiguration::resetVisibilities() -{ - for (int i = 0; i < ui->tableWidget->rowCount(); ++i) - { - if (auto cb = qobject_cast(ui->tableWidget->cellWidget(i, 1))) - { - if (QTableWidgetItem *widgetItem = ui->tableWidget->item(i, 0)) - { - cb->blockSignals(true); // we neither change visibility lists nor save settings here - if (mAutoHideList.contains(widgetItem->text())) - cb->setCurrentIndex(1); - else if (mHideList.contains(widgetItem->text())) - cb->setCurrentIndex(2); - else - cb->setCurrentIndex(0); - cb->blockSignals(false); - } - } - } -} - void StatusNotifierConfiguration::dialogButtonsAction(QAbstractButton *btn) { LXQtPanelPluginConfigDialog::dialogButtonsAction(btn); - // also, apply the changes if the Reset button is clicked + // also, apply the changes to the visibilities list if the Reset button is clicked QDialogButtonBox *box = qobject_cast(btn->parent()); if (box && box->buttonRole(btn) == QDialogButtonBox::ResetRole) { - resetVisibilities(); - saveSettings(); + for (int i = 0; i < ui->tableWidget->rowCount(); ++i) + { + if (auto cb = qobject_cast(ui->tableWidget->cellWidget(i, 1))) + { + if (QTableWidgetItem *widgetItem = ui->tableWidget->item(i, 0)) + { + cb->blockSignals(true); // we neither change visibility lists nor save settings here + if (mAutoHideList.contains(widgetItem->text())) + cb->setCurrentIndex(1); + else if (mHideList.contains(widgetItem->text())) + cb->setCurrentIndex(2); + else + cb->setCurrentIndex(0); + cb->blockSignals(false); + } + } + } } } diff --git a/plugin-statusnotifier/statusnotifierconfiguration.h b/plugin-statusnotifier/statusnotifierconfiguration.h index a94a1c305..3e2d5205d 100644 --- a/plugin-statusnotifier/statusnotifierconfiguration.h +++ b/plugin-statusnotifier/statusnotifierconfiguration.h @@ -53,8 +53,6 @@ class StatusNotifierConfiguration : public LXQtPanelPluginConfigDialog void dialogButtonsAction(QAbstractButton *btn); - void resetVisibilities(); - private slots: void saveSettings(); }; diff --git a/plugin-sysstat/lxqtsysstatconfiguration.cpp b/plugin-sysstat/lxqtsysstatconfiguration.cpp index 4d478e3c8..c00101067 100644 --- a/plugin-sysstat/lxqtsysstatconfiguration.cpp +++ b/plugin-sysstat/lxqtsysstatconfiguration.cpp @@ -86,7 +86,8 @@ LXQtSysStatConfiguration::LXQtSysStatConfiguration(PluginSettings *settings, QWi LXQtPanelPluginConfigDialog(settings, parent), ui(new Ui::LXQtSysStatConfiguration), mStat(nullptr), - mColoursDialog(nullptr) + mColoursDialog(nullptr), + mLockSettingChanges(false) { setAttribute(Qt::WA_DeleteOnClose); setObjectName(QStringLiteral("SysStatConfigurationWindow")); @@ -117,6 +118,8 @@ LXQtSysStatConfiguration::~LXQtSysStatConfiguration() void LXQtSysStatConfiguration::loadSettings() { + mLockSettingChanges = true; + ui->intervalSB->setValue(settings().value(QStringLiteral("graph/updateInterval"), 1.0).toDouble()); ui->sizeSB->setValue(settings().value(QStringLiteral("graph/minimalSize"), 30).toInt()); @@ -141,10 +144,15 @@ void LXQtSysStatConfiguration::loadSettings() ui->useThemeColoursRB->setChecked(useThemeColours); ui->useCustomColoursRB->setChecked(!useThemeColours); ui->customColoursB->setEnabled(!useThemeColours); + + mLockSettingChanges = false; } void LXQtSysStatConfiguration::saveSettings() { + if (mLockSettingChanges) + return; + settings().setValue(QStringLiteral("graph/useThemeColours"), ui->useThemeColoursRB->isChecked()); settings().setValue(QStringLiteral("graph/updateInterval"), ui->intervalSB->value()); settings().setValue(QStringLiteral("graph/minimalSize"), ui->sizeSB->value()); diff --git a/plugin-sysstat/lxqtsysstatconfiguration.h b/plugin-sysstat/lxqtsysstatconfiguration.h index 0a8767235..32c2de328 100644 --- a/plugin-sysstat/lxqtsysstatconfiguration.h +++ b/plugin-sysstat/lxqtsysstatconfiguration.h @@ -73,6 +73,8 @@ public slots: SysStat::BaseStat *mStat; LXQtSysStatColours *mColoursDialog; + bool mLockSettingChanges; + void loadSettings(); }; diff --git a/plugin-taskbar/lxqttaskbarconfiguration.cpp b/plugin-taskbar/lxqttaskbarconfiguration.cpp index db3645378..25fe551ff 100644 --- a/plugin-taskbar/lxqttaskbarconfiguration.cpp +++ b/plugin-taskbar/lxqttaskbarconfiguration.cpp @@ -131,12 +131,3 @@ void LXQtTaskbarConfiguration::saveSettings() settings().setValue(QStringLiteral("wheelEventsAction"),ui->wheelEventsActionCB->itemData(ui->wheelEventsActionCB->currentIndex())); settings().setValue(QStringLiteral("wheelDeltaThreshold"),ui->wheelDeltaThresholdSB->value()); } - -void LXQtTaskbarConfiguration::dialogButtonsAction(QAbstractButton *btn) -{ - LXQtPanelPluginConfigDialog::dialogButtonsAction(btn); - // also, apply the changes if the Reset button is clicked - QDialogButtonBox *box = qobject_cast(btn->parent()); - if (box && box->buttonRole(btn) == QDialogButtonBox::ResetRole) - saveSettings(); -} diff --git a/plugin-taskbar/lxqttaskbarconfiguration.h b/plugin-taskbar/lxqttaskbarconfiguration.h index b42f0a99e..e559508b7 100644 --- a/plugin-taskbar/lxqttaskbarconfiguration.h +++ b/plugin-taskbar/lxqttaskbarconfiguration.h @@ -52,8 +52,6 @@ class LXQtTaskbarConfiguration : public LXQtPanelPluginConfigDialog */ void loadSettings(); - void dialogButtonsAction(QAbstractButton *btn); - private slots: void saveSettings(); }; diff --git a/plugin-volume/lxqtvolumeconfiguration.cpp b/plugin-volume/lxqtvolumeconfiguration.cpp index 688421f58..79e51a062 100644 --- a/plugin-volume/lxqtvolumeconfiguration.cpp +++ b/plugin-volume/lxqtvolumeconfiguration.cpp @@ -35,7 +35,8 @@ LXQtVolumeConfiguration::LXQtVolumeConfiguration(PluginSettings *settings, bool ossAvailable, QWidget *parent) : LXQtPanelPluginConfigDialog(settings, parent), - ui(new Ui::LXQtVolumeConfiguration) + ui(new Ui::LXQtVolumeConfiguration), + mLockSettingChanges(false) { ui->setupUi(this); @@ -50,10 +51,6 @@ LXQtVolumeConfiguration::LXQtVolumeConfiguration(PluginSettings *settings, bool connect(ui->allwaysShowNotificationsCheckBox, &QAbstractButton::toggled, this, &LXQtVolumeConfiguration::allwaysShowNotificationsCheckBoxChanged); connect(ui->showKeyboardNotificationsCheckBox, &QAbstractButton::toggled, this, &LXQtVolumeConfiguration::showKeyboardNotificationsCheckBoxChanged); - // currently, this option is only supported by the pulse audio backend - if(!ui->pulseAudioRadioButton->isChecked()) - ui->ignoreMaxVolumeCheckBox->setEnabled(false); - if (ossAvailable) connect(ui->ossRadioButton, &QRadioButton::toggled, this, &LXQtVolumeConfiguration::audioEngineChanged); else @@ -100,66 +97,80 @@ void LXQtVolumeConfiguration::audioEngineChanged(bool checked) bool canIgnoreMaxVolume = false; if (ui->pulseAudioRadioButton->isChecked()) { - settings().setValue(QStringLiteral(SETTINGS_AUDIO_ENGINE), QStringLiteral("PulseAudio")); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_AUDIO_ENGINE), QStringLiteral("PulseAudio")); canIgnoreMaxVolume = true; } - else if(ui->alsaRadioButton->isChecked()) - settings().setValue(QStringLiteral(SETTINGS_AUDIO_ENGINE), QStringLiteral("Alsa")); - else - settings().setValue(QStringLiteral(SETTINGS_AUDIO_ENGINE), QStringLiteral("Oss")); + else if (!mLockSettingChanges) + { + if(ui->alsaRadioButton->isChecked()) + settings().setValue(QStringLiteral(SETTINGS_AUDIO_ENGINE), QStringLiteral("Alsa")); + else + settings().setValue(QStringLiteral(SETTINGS_AUDIO_ENGINE), QStringLiteral("Oss")); + } ui->ignoreMaxVolumeCheckBox->setEnabled(canIgnoreMaxVolume); } void LXQtVolumeConfiguration::sinkSelectionChanged(int index) { - settings().setValue(QStringLiteral(SETTINGS_DEVICE), index >= 0 ? index : 0); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_DEVICE), index >= 0 ? index : 0); } void LXQtVolumeConfiguration::showOnClickedChanged(bool state) { - settings().setValue(QStringLiteral(SETTINGS_SHOW_ON_LEFTCLICK), state); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_SHOW_ON_LEFTCLICK), state); } void LXQtVolumeConfiguration::muteOnMiddleClickChanged(bool state) { - settings().setValue(QStringLiteral(SETTINGS_MUTE_ON_MIDDLECLICK), state); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_MUTE_ON_MIDDLECLICK), state); } void LXQtVolumeConfiguration::mixerLineEditChanged(const QString &command) { - settings().setValue(QStringLiteral(SETTINGS_MIXER_COMMAND), command); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_MIXER_COMMAND), command); } void LXQtVolumeConfiguration::stepSpinBoxChanged(int step) { - settings().setValue(QStringLiteral(SETTINGS_STEP), step); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_STEP), step); } void LXQtVolumeConfiguration::ignoreMaxVolumeCheckBoxChanged(bool state) { - settings().setValue(QStringLiteral(SETTINGS_IGNORE_MAX_VOLUME), state); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_IGNORE_MAX_VOLUME), state); } void LXQtVolumeConfiguration::allwaysShowNotificationsCheckBoxChanged(bool state) { - settings().setValue(QStringLiteral(SETTINGS_ALLWAYS_SHOW_NOTIFICATIONS), state); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_ALLWAYS_SHOW_NOTIFICATIONS), state); // since always showing notifications is the sufficient condition for showing them with keyboard, // self-consistency requires setting the latter to true whenever the former is toggled by the user ui->showKeyboardNotificationsCheckBox->setEnabled(!state); if (!ui->showKeyboardNotificationsCheckBox->isChecked()) ui->showKeyboardNotificationsCheckBox->setChecked(true); - else + else if (!mLockSettingChanges) settings().setValue(QStringLiteral(SETTINGS_SHOW_KEYBOARD_NOTIFICATIONS), true); } void LXQtVolumeConfiguration::showKeyboardNotificationsCheckBoxChanged(bool state) { - settings().setValue(QStringLiteral(SETTINGS_SHOW_KEYBOARD_NOTIFICATIONS), state); + if (!mLockSettingChanges) + settings().setValue(QStringLiteral(SETTINGS_SHOW_KEYBOARD_NOTIFICATIONS), state); } void LXQtVolumeConfiguration::loadSettings() { + mLockSettingChanges = true; + QString engine = settings().value(QStringLiteral(SETTINGS_AUDIO_ENGINE), QStringLiteral(SETTINGS_DEFAULT_AUDIO_ENGINE)).toString().toLower(); if (engine == QLatin1String("pulseaudio")) ui->pulseAudioRadioButton->setChecked(true); @@ -168,6 +179,10 @@ void LXQtVolumeConfiguration::loadSettings() else ui->ossRadioButton->setChecked(true); + // currently, this option is only supported by the pulse audio backend + if(!ui->pulseAudioRadioButton->isChecked()) + ui->ignoreMaxVolumeCheckBox->setEnabled(false); + setComboboxIndexByData(ui->devAddedCombo, settings().value(QStringLiteral(SETTINGS_DEVICE), SETTINGS_DEFAULT_DEVICE), 1); ui->showOnClickCheckBox->setChecked(settings().value(QStringLiteral(SETTINGS_SHOW_ON_LEFTCLICK), SETTINGS_DEFAULT_SHOW_ON_LEFTCLICK).toBool()); ui->muteOnMiddleClickCheckBox->setChecked(settings().value(QStringLiteral(SETTINGS_MUTE_ON_MIDDLECLICK), SETTINGS_DEFAULT_MUTE_ON_MIDDLECLICK).toBool()); @@ -185,5 +200,7 @@ void LXQtVolumeConfiguration::loadSettings() { ui->showKeyboardNotificationsCheckBox->setChecked(settings().value(QStringLiteral(SETTINGS_SHOW_KEYBOARD_NOTIFICATIONS), SETTINGS_DEFAULT_SHOW_KEYBOARD_NOTIFICATIONS).toBool()); } + + mLockSettingChanges = false; } diff --git a/plugin-volume/lxqtvolumeconfiguration.h b/plugin-volume/lxqtvolumeconfiguration.h index 0e9d1b737..6ce06514d 100644 --- a/plugin-volume/lxqtvolumeconfiguration.h +++ b/plugin-volume/lxqtvolumeconfiguration.h @@ -93,6 +93,7 @@ protected slots: private: Ui::LXQtVolumeConfiguration *ui; + bool mLockSettingChanges; }; #endif // LXQTVOLUMECONFIGURATION_H