Skip to content

Commit

Permalink
Code cleanup and a fix for resetting in Volume Control config dialog (l…
Browse files Browse the repository at this point in the history
…xqt#1746)

* Code cleanup and a fix for resetting in Volume Control config dialog

* Prevent redundant saving when settings are loaded

If the signals that are connected to saving are also emitted by `loadSettings()` (like `toggled` or `currentIndexChanged`), saving is blocked during loading.

This method was already used in World Clock. Not all plugins needed it.
  • Loading branch information
tsujan authored Mar 15, 2022
1 parent b5aa597 commit 420f5b9
Show file tree
Hide file tree
Showing 18 changed files with 160 additions and 92 deletions.
19 changes: 14 additions & 5 deletions plugin-cpuload/lxqtcpuloadconfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand Down Expand Up @@ -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);
Expand All @@ -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());
}
1 change: 1 addition & 0 deletions plugin-cpuload/lxqtcpuloadconfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class LXQtCpuLoadConfiguration : public LXQtPanelPluginConfigDialog

private:
Ui::LXQtCpuLoadConfiguration *ui;
bool mLockSettingChanges;

/*
Fills Bar orientation combobox
Expand Down
60 changes: 39 additions & 21 deletions plugin-mainmenu/lxqtmainmenuconfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand All @@ -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);
Expand All @@ -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<int>::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<int>::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);
});
}

Expand All @@ -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());
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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);
}
1 change: 1 addition & 0 deletions plugin-mainmenu/lxqtmainmenuconfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
21 changes: 16 additions & 5 deletions plugin-mount/configuration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down Expand Up @@ -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);
}
}
1 change: 1 addition & 0 deletions plugin-mount/configuration.h
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ protected slots:

private:
Ui::Configuration *ui;
bool mLockSettingChanges;
};

#endif // LXQTMOUNTCONFIGURATION_H
14 changes: 11 additions & 3 deletions plugin-networkmonitor/lxqtnetworkmonitorconfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand All @@ -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;
Expand All @@ -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;
}
1 change: 1 addition & 0 deletions plugin-networkmonitor/lxqtnetworkmonitorconfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class LXQtNetworkMonitorConfiguration : public LXQtPanelPluginConfigDialog

private:
Ui::LXQtNetworkMonitorConfiguration *ui;
bool mLockSettingChanges;

private slots:
/*
Expand Down
10 changes: 9 additions & 1 deletion plugin-sensors/lxqtsensorsconfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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"));
Expand Down Expand Up @@ -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());

Expand Down Expand Up @@ -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());

Expand Down
1 change: 1 addition & 0 deletions plugin-sensors/lxqtsensorsconfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ class LXQtSensorsConfiguration : public LXQtPanelPluginConfigDialog

private:
Ui::LXQtSensorsConfiguration *ui;
bool mLockSettingChanges;

/*
Read settings from conf file and put data into controls.
Expand Down
42 changes: 18 additions & 24 deletions plugin-statusnotifier/statusnotifierconfiguration.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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<QComboBox*>(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<QDialogButtonBox*>(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<QComboBox*>(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);
}
}
}
}
}
2 changes: 0 additions & 2 deletions plugin-statusnotifier/statusnotifierconfiguration.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ class StatusNotifierConfiguration : public LXQtPanelPluginConfigDialog

void dialogButtonsAction(QAbstractButton *btn);

void resetVisibilities();

private slots:
void saveSettings();
};
Expand Down
Loading

0 comments on commit 420f5b9

Please sign in to comment.