Skip to content

Commit bdf1fb6

Browse files
committed
Revise store/load state operations of Options Dialog
1 parent 757ab3d commit bdf1fb6

4 files changed

Lines changed: 30 additions & 57 deletions

File tree

src/base/preferences.cpp

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,26 +1241,6 @@ void Preferences::setMainLastDir(const QString &path)
12411241
setValue("MainWindowLastDir", path);
12421242
}
12431243

1244-
QSize Preferences::getPrefSize() const
1245-
{
1246-
return value("Preferences/State/size").toSize();
1247-
}
1248-
1249-
void Preferences::setPrefSize(const QSize &size)
1250-
{
1251-
setValue("Preferences/State/size", size);
1252-
}
1253-
1254-
QStringList Preferences::getPrefHSplitterSizes() const
1255-
{
1256-
return value("Preferences/State/hSplitterSizes").toStringList();
1257-
}
1258-
1259-
void Preferences::setPrefHSplitterSizes(const QStringList &sizes)
1260-
{
1261-
setValue("Preferences/State/hSplitterSizes", sizes);
1262-
}
1263-
12641244
QByteArray Preferences::getPeerListState() const
12651245
{
12661246
return value("TorrentProperties/Peers/qt5/PeerListState").toByteArray();

src/base/preferences.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -329,10 +329,6 @@ class Preferences : public QObject
329329
void setMainVSplitterState(const QByteArray &state);
330330
QString getMainLastDir() const;
331331
void setMainLastDir(const QString &path);
332-
QSize getPrefSize() const;
333-
void setPrefSize(const QSize &size);
334-
QStringList getPrefHSplitterSizes() const;
335-
void setPrefHSplitterSizes(const QStringList &sizes);
336332
QByteArray getPeerListState() const;
337333
void setPeerListState(const QByteArray &state);
338334
QString getPropSplitterSizes() const;

src/gui/optionsdialog.cpp

Lines changed: 19 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
#include "uithememanager.h"
6969
#include "utils.h"
7070

71+
#define SETTINGS_KEY(name) "OptionsDialog/" name
72+
7173
namespace
7274
{
7375
QStringList translatedWeekdayNames()
@@ -169,9 +171,10 @@ class WheelEventEater final : public QObject
169171

170172
// Constructor
171173
OptionsDialog::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-
629633
void 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

658647
void OptionsDialog::saveOptions()

src/gui/optionsdialog.h

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@
3030

3131
#include <QDialog>
3232

33+
#include "base/settingvalue.h"
34+
3335
class QAbstractButton;
3436
class QCloseEvent;
3537
class QListWidgetItem;
@@ -58,6 +60,8 @@ namespace Ui
5860
class OptionsDialog final : public QDialog
5961
{
6062
Q_OBJECT
63+
Q_DISABLE_COPY(OptionsDialog)
64+
6165
using ThisType = OptionsDialog;
6266

6367
enum Tabs
@@ -95,9 +99,7 @@ private slots:
9599
void enableApplyButton();
96100
void toggleComboRatioLimitAct();
97101
void changePage(QListWidgetItem *, QListWidgetItem *);
98-
void loadWindowState();
99102
void loadSplitterState();
100-
void saveWindowState() const;
101103
void handleScanFolderViewSelectionChanged();
102104
void on_IpFilterRefreshBtn_clicked();
103105
void handleIPFilterParsed(bool error, int ruleCount);
@@ -161,7 +163,6 @@ private slots:
161163
// IP Filter
162164
bool isIPFilteringEnabled() const;
163165
QString getFilter() const;
164-
bool m_refreshingIpFilter;
165166
// Queueing system
166167
bool isQueueingSystemEnabled() const;
167168
int getMaxActiveDownloads() const;
@@ -177,8 +178,15 @@ private slots:
177178
bool schedTimesOk();
178179

179180
Ui::OptionsDialog *m_ui;
181+
SettingValue<QSize> m_storeDialogSize;
182+
SettingValue<QStringList> m_storeHSplitterSize;
183+
180184
QAbstractButton *m_applyButton;
185+
181186
AdvancedSettings *m_advancedSettings;
187+
182188
QList<QString> m_addedScanDirs;
183189
QList<QString> m_removedScanDirs;
190+
191+
bool m_refreshingIpFilter = false;
184192
};

0 commit comments

Comments
 (0)