From 69d86513ae76ae68d4faf03be305c971dc3bfc45 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Fri, 22 Mar 2019 23:19:24 +0100 Subject: [PATCH] Save/restore geometry in settings dialog --- src/settings/settingsdialog.cpp | 24 +++++++++++++++++++++--- src/settings/settingsdialog.h | 14 +++++++++----- src/settings/settingsdialog.ui | 4 ++-- 3 files changed, 32 insertions(+), 10 deletions(-) diff --git a/src/settings/settingsdialog.cpp b/src/settings/settingsdialog.cpp index 9cdf9747a..c94b211d0 100644 --- a/src/settings/settingsdialog.cpp +++ b/src/settings/settingsdialog.cpp @@ -70,10 +70,10 @@ class QShowEvent; +const char *SettingsDialog::kSettingsGroup = "SettingsDialog"; + SettingsItemDelegate::SettingsItemDelegate(QObject *parent) - : QStyledItemDelegate(parent) -{ -} + : QStyledItemDelegate(parent) {} QSize SettingsItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { @@ -149,12 +149,28 @@ SettingsDialog::SettingsDialog(Application *app, QWidget *parent) ui_->buttonBox->button(QDialogButtonBox::Cancel)->setShortcut(QKeySequence::Close); + QSettings s; + s.beginGroup(kSettingsGroup); + if (s.contains("geometry")) { + restoreGeometry(s.value("geometry").toByteArray()); + } + s.endGroup(); + } SettingsDialog::~SettingsDialog() { delete ui_; } +void SettingsDialog::SaveGeometry() { + + QSettings s; + s.beginGroup(kSettingsGroup); + s.setValue("geometry", saveGeometry()); + s.endGroup(); + +} + QTreeWidgetItem *SettingsDialog::AddCategory(const QString &name) { QTreeWidgetItem *item = new QTreeWidgetItem; @@ -216,6 +232,7 @@ void SettingsDialog::Save() { void SettingsDialog::accept() { Save(); + SaveGeometry(); QDialog::accept(); } @@ -225,6 +242,7 @@ void SettingsDialog::reject() { for (const PageData &data : pages_.values()) { data.page_->Cancel(); } + SaveGeometry(); QDialog::reject(); } diff --git a/src/settings/settingsdialog.h b/src/settings/settingsdialog.h index 024f62cf7..3c446a090 100644 --- a/src/settings/settingsdialog.h +++ b/src/settings/settingsdialog.h @@ -66,7 +66,7 @@ public: class SettingsDialog : public QDialog { Q_OBJECT -public: + public: SettingsDialog(Application *app, QWidget *parent = nullptr); ~SettingsDialog(); @@ -111,14 +111,14 @@ public: void ComboBoxLoadFromSettings(QSettings &s, QComboBox *combobox, QString setting, QString default_value); -signals: + signals: void NotificationPreview(OSD::Behaviour, QString, QString); -private slots: + private slots: void CurrentItemChanged(QTreeWidgetItem *item); void DialogButtonClicked(QAbstractButton *button); -private: + private: struct PageData { QTreeWidgetItem *item_; QScrollArea *scroll_area_; @@ -130,7 +130,11 @@ private: void Save(); -private: + void SaveGeometry(); + + private: + static const char *kSettingsGroup; + Application *app_; Player *player_; EngineBase *engine_; diff --git a/src/settings/settingsdialog.ui b/src/settings/settingsdialog.ui index f2b3913f4..b0ff9391c 100644 --- a/src/settings/settingsdialog.ui +++ b/src/settings/settingsdialog.ui @@ -17,7 +17,7 @@ :/icons/64x64/strawberry.png:/icons/64x64/strawberry.png - + @@ -55,7 +55,7 @@ - +