Skip to content

Commit

Permalink
Merge Fix plugin settings storing/restoring (lxqt#1745)
Browse files Browse the repository at this point in the history
  • Loading branch information
palinek committed Mar 14, 2022
2 parents 6ad2e5e + 56efcad commit b5aa597
Show file tree
Hide file tree
Showing 6 changed files with 37 additions and 11 deletions.
9 changes: 9 additions & 0 deletions panel/lxqtpanelpluginconfigdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,15 @@ PluginSettings& LXQtPanelPluginConfigDialog::settings() const
}


/************************************************
************************************************/
void LXQtPanelPluginConfigDialog::closeEvent(QCloseEvent *event)
{
mSettings.storeToCache();
return QDialog::closeEvent(event);
}


/************************************************
Expand Down
4 changes: 4 additions & 0 deletions panel/lxqtpanelpluginconfigdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
#include "pluginsettings.h"

class QComboBox;
class QCloseEvent;

class LXQT_PANEL_API LXQtPanelPluginConfigDialog : public QDialog
{
Expand All @@ -46,6 +47,9 @@ class LXQT_PANEL_API LXQtPanelPluginConfigDialog : public QDialog

PluginSettings &settings() const;

protected:
virtual void closeEvent(QCloseEvent *event) override;

protected slots:
/*
Saves settings in conf file.
Expand Down
3 changes: 2 additions & 1 deletion panel/plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -188,6 +188,8 @@ Plugin::Plugin(const LXQt::PluginInfo &desktopFile, LXQt::Settings *settings, co
************************************************/
Plugin::~Plugin()
{
if (mConfigDialog)
delete mConfigDialog.data();
delete mPlugin;
delete mPluginLoader;
delete mSettings;
Expand Down Expand Up @@ -515,7 +517,6 @@ void Plugin::showConfigureDialog()
if (!mConfigDialog)
return;

connect(this, &Plugin::destroyed, mConfigDialog.data(), &QWidget::close);
mPanel->willShowWindow(mConfigDialog);
mConfigDialog->show();
mConfigDialog->raise();
Expand Down
23 changes: 17 additions & 6 deletions panel/pluginsettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,15 +28,18 @@
#include "pluginsettings.h"
#include "pluginsettings_p.h"
#include <LXQt/Settings>
#include <memory>

class PluginSettingsPrivate
{
public:
PluginSettingsPrivate(LXQt::Settings* settings, const QString &group)
: mSettings(settings)
, mOldSettings(settings)
, mGroup(group)
{
mSettings->beginGroup(mGroup);
mOldSettings = std::make_unique<LXQt::SettingsCache>(mSettings);
mSettings->endGroup();
}

QString prefix() const;
Expand All @@ -46,7 +49,7 @@ class PluginSettingsPrivate
}

LXQt::Settings *mSettings;
LXQt::SettingsCache mOldSettings;
std::unique_ptr<LXQt::SettingsCache> mOldSettings;
QString mGroup;
QStringList mSubGroups;
};
Expand Down Expand Up @@ -163,10 +166,8 @@ void PluginSettings::clear()
void PluginSettings::sync()
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->mGroup);
d->mSettings->sync();
d->mOldSettings.loadFromSettings();
d->mSettings->endGroup();
storeToCache();
emit settingsChanged();
}

Expand Down Expand Up @@ -205,7 +206,17 @@ void PluginSettings::loadFromCache()
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->mGroup);
d->mOldSettings.loadToSettings();
d->mSettings->remove(QString{});
d->mOldSettings->loadToSettings();
d->mSettings->endGroup();
emit settingsChanged();
}

void PluginSettings::storeToCache()
{
Q_D(PluginSettings);
d->mSettings->beginGroup(d->mGroup);
d->mOldSettings = std::make_unique<LXQt::SettingsCache>(d->mSettings);
d->mSettings->endGroup();
}

Expand Down
1 change: 1 addition & 0 deletions panel/pluginsettings.h
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,7 @@ class LXQT_PANEL_API PluginSettings : public QObject
void endGroup();

void loadFromCache();
void storeToCache();

signals:
void settingsChanged();
Expand Down
8 changes: 4 additions & 4 deletions plugin-taskbar/lxqttaskbar.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -485,10 +485,10 @@ void LXQtTaskBar::settingsChanged()
else
setButtonStyle(Qt::ToolButtonTextBesideIcon);

mShowOnlyOneDesktopTasks = mPlugin->settings()->value(QStringLiteral("showOnlyOneDesktopTasks"), mShowOnlyOneDesktopTasks).toBool();
mShowDesktopNum = mPlugin->settings()->value(QStringLiteral("showDesktopNum"), mShowDesktopNum).toInt();
mShowOnlyCurrentScreenTasks = mPlugin->settings()->value(QStringLiteral("showOnlyCurrentScreenTasks"), mShowOnlyCurrentScreenTasks).toBool();
mShowOnlyMinimizedTasks = mPlugin->settings()->value(QStringLiteral("showOnlyMinimizedTasks"), mShowOnlyMinimizedTasks).toBool();
mShowOnlyOneDesktopTasks = mPlugin->settings()->value(QStringLiteral("showOnlyOneDesktopTasks"), false).toBool();
mShowDesktopNum = mPlugin->settings()->value(QStringLiteral("showDesktopNum"), 0).toInt();
mShowOnlyCurrentScreenTasks = mPlugin->settings()->value(QStringLiteral("showOnlyCurrentScreenTasks"), false).toBool();
mShowOnlyMinimizedTasks = mPlugin->settings()->value(QStringLiteral("showOnlyMinimizedTasks"), false).toBool();
mAutoRotate = mPlugin->settings()->value(QStringLiteral("autoRotate"), true).toBool();
mCloseOnMiddleClick = mPlugin->settings()->value(QStringLiteral("closeOnMiddleClick"), true).toBool();
mRaiseOnCurrentDesktop = mPlugin->settings()->value(QStringLiteral("raiseOnCurrentDesktop"), false).toBool();
Expand Down

0 comments on commit b5aa597

Please sign in to comment.