6868#include " uithememanager.h"
6969#include " utils.h"
7070
71+ #define SETTINGS_KEY (name ) " OptionsDialog/" name
72+
7173namespace
7274{
7375 QStringList translatedWeekdayNames ()
@@ -169,9 +171,10 @@ class WheelEventEater final : public QObject
169171
170172// Constructor
171173OptionsDialog::OptionsDialog (QWidget *parent)
172- : QDialog(parent)
173- , m_refreshingIpFilter(false )
174- , m_ui(new Ui::OptionsDialog)
174+ : QDialog {parent}
175+ , m_ui {new Ui::OptionsDialog}
176+ , m_storeDialogSize {SETTINGS_KEY (" Size" )}
177+ , m_storeHSplitterSize {SETTINGS_KEY (" HorizontalSplitterSizes" )}
175178{
176179 qDebug (" -> Constructing Options" );
177180 m_ui->setupUi (this );
@@ -565,7 +568,7 @@ OptionsDialog::OptionsDialog(QWidget *parent)
565568 for (QSpinBox *widget : asConst (findChildren<QSpinBox *>()))
566569 widget->installEventFilter (wheelEventEater);
567570
568- loadWindowState ( );
571+ Utils::Gui::resize ( this , m_storeDialogSize );
569572 show ();
570573 // Have to be called after show(), because splitter width needed
571574 loadSplitterState ();
@@ -606,7 +609,13 @@ OptionsDialog::~OptionsDialog()
606609{
607610 qDebug (" -> destructing Options" );
608611
609- saveWindowState ();
612+ // save dialog states
613+ m_storeDialogSize = size ();
614+
615+ QStringList hSplitterSizes;
616+ for (const int size : asConst (m_ui->hsplitter ->sizes ()))
617+ hSplitterSizes.append (QString::number (size));
618+ m_storeHSplitterSize = hSplitterSizes;
610619
611620 for (const QString &path : asConst (m_addedScanDirs))
612621 ScanFoldersModel::instance ()->removePath (path);
@@ -621,38 +630,18 @@ void OptionsDialog::changePage(QListWidgetItem *current, QListWidgetItem *previo
621630 m_ui->tabOption ->setCurrentIndex (m_ui->tabSelection ->row (current));
622631}
623632
624- void OptionsDialog::loadWindowState ()
625- {
626- Utils::Gui::resize (this , Preferences::instance ()->getPrefSize ());
627- }
628-
629633void OptionsDialog::loadSplitterState ()
630634{
631- const QStringList sizesStr = Preferences::instance ()->getPrefHSplitterSizes ();
632-
633635 // width has been modified, use height as width reference instead
634636 const int width = Utils::Gui::scaledSize (this
635637 , (m_ui->tabSelection ->item (TAB_UI )->sizeHint ().height () * 2 ));
636- QList<int > sizes {width, (m_ui->hsplitter ->width () - width)};
637- if (sizesStr.size () == 2 )
638- sizes = {sizesStr.first ().toInt (), sizesStr.last ().toInt ()};
639- m_ui->hsplitter ->setSizes (sizes);
640- }
641-
642- void OptionsDialog::saveWindowState () const
643- {
644- Preferences *const pref = Preferences::instance ();
638+ const QStringList defaultSizes = {QString::number (width), QString::number (m_ui->hsplitter ->width () - width)};
645639
646- // window size
647- pref->setPrefSize (size ());
640+ QList<int > splitterSizes;
641+ for (const QString &string : asConst (m_storeHSplitterSize.get (defaultSizes)))
642+ splitterSizes.append (string.toInt ());
648643
649- // Splitter size
650- const QStringList sizesStr =
651- {
652- QString::number (m_ui->hsplitter ->sizes ().first ()),
653- QString::number (m_ui->hsplitter ->sizes ().last ())
654- };
655- pref->setPrefHSplitterSizes (sizesStr);
644+ m_ui->hsplitter ->setSizes (splitterSizes);
656645}
657646
658647void OptionsDialog::saveOptions ()
0 commit comments