From 757ab3dc92f6d98481b2346be96e53a019a4efa0 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Mon, 28 Dec 2020 11:59:36 +0800 Subject: [PATCH 1/3] Remember dialog sizes This applies to "About Dialog", "Ban List Options Dialog", "Download From URL Dialog", "IP Subnet Whitelist Options Dialog", "Search Plugin Select Dialog", "Search Plugin Source Dialog", "Statistics Dialog", "Speed Limit Dialog" and "Torrent Options Dialog". Also unifies storing the dialog size under the key "Size". --- src/gui/aboutdialog.cpp | 6 +++++- src/gui/aboutdialog.h | 5 ++++- src/gui/banlistoptionsdialog.cpp | 7 +++++-- src/gui/banlistoptionsdialog.h | 10 +++++++--- src/gui/downloadfromurldialog.cpp | 6 +++++- src/gui/downloadfromurldialog.h | 7 +++++-- src/gui/ipsubnetwhitelistoptionsdialog.cpp | 7 +++++-- src/gui/ipsubnetwhitelistoptionsdialog.h | 10 +++++++--- src/gui/previewselectdialog.cpp | 2 +- src/gui/search/pluginselectdialog.cpp | 10 ++++++---- src/gui/search/pluginselectdialog.h | 6 ++++-- src/gui/search/pluginsourcedialog.cpp | 8 ++++++-- src/gui/search/pluginsourcedialog.h | 8 ++++++-- src/gui/speedlimitdialog.cpp | 6 +++++- src/gui/speedlimitdialog.h | 4 ++++ src/gui/statsdialog.cpp | 6 +++++- src/gui/statsdialog.h | 4 ++++ src/gui/torrentcreatordialog.cpp | 2 +- src/gui/torrentoptionsdialog.cpp | 6 +++++- src/gui/torrentoptionsdialog.h | 4 ++++ src/gui/trackerentriesdialog.cpp | 2 +- 21 files changed, 95 insertions(+), 31 deletions(-) diff --git a/src/gui/aboutdialog.cpp b/src/gui/aboutdialog.cpp index bbe1433d5..eefac2e36 100644 --- a/src/gui/aboutdialog.cpp +++ b/src/gui/aboutdialog.cpp @@ -36,9 +36,12 @@ #include "uithememanager.h" #include "utils.h" +#define SETTINGS_KEY(name) "AboutDialog/" name + AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent) , m_ui(new Ui::AboutDialog) + , m_storeDialogSize(SETTINGS_KEY("Size")) { m_ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); @@ -107,11 +110,12 @@ AboutDialog::AboutDialog(QWidget *parent) "The database is licensed under the Creative Commons Attribution 4.0 International License")); m_ui->labelDBIP->setText(DBIPText); - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); show(); } AboutDialog::~AboutDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/aboutdialog.h b/src/gui/aboutdialog.h index ca5115e34..a8f0065d2 100644 --- a/src/gui/aboutdialog.h +++ b/src/gui/aboutdialog.h @@ -30,12 +30,14 @@ #include +#include "base/settingvalue.h" + namespace Ui { class AboutDialog; } -class AboutDialog : public QDialog +class AboutDialog final : public QDialog { Q_OBJECT Q_DISABLE_COPY(AboutDialog) @@ -46,4 +48,5 @@ public: private: Ui::AboutDialog *m_ui; + SettingValue m_storeDialogSize; }; diff --git a/src/gui/banlistoptionsdialog.cpp b/src/gui/banlistoptionsdialog.cpp index 9d047ffaf..095a69b03 100644 --- a/src/gui/banlistoptionsdialog.cpp +++ b/src/gui/banlistoptionsdialog.cpp @@ -38,11 +38,13 @@ #include "ui_banlistoptionsdialog.h" #include "utils.h" +#define SETTINGS_KEY(name) "BanListOptionsDialog/" name + BanListOptionsDialog::BanListOptionsDialog(QWidget *parent) : QDialog(parent) , m_ui(new Ui::BanListOptionsDialog) + , m_storeDialogSize(SETTINGS_KEY("Size")) , m_model(new QStringListModel(BitTorrent::Session::instance()->bannedIPs(), this)) - , m_modified(false) { m_ui->setupUi(this); @@ -54,11 +56,12 @@ BanListOptionsDialog::BanListOptionsDialog(QWidget *parent) m_ui->bannedIPList->sortByColumn(0, Qt::AscendingOrder); m_ui->buttonBanIP->setEnabled(false); - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); } BanListOptionsDialog::~BanListOptionsDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/banlistoptionsdialog.h b/src/gui/banlistoptionsdialog.h index 131b274a9..a5b1c86aa 100644 --- a/src/gui/banlistoptionsdialog.h +++ b/src/gui/banlistoptionsdialog.h @@ -30,6 +30,8 @@ #include +#include "base/settingvalue.h" + class QSortFilterProxyModel; class QStringListModel; @@ -38,13 +40,14 @@ namespace Ui class BanListOptionsDialog; } -class BanListOptionsDialog : public QDialog +class BanListOptionsDialog final : public QDialog { Q_OBJECT + Q_DISABLE_COPY(BanListOptionsDialog) public: explicit BanListOptionsDialog(QWidget *parent = nullptr); - ~BanListOptionsDialog(); + ~BanListOptionsDialog() override; private slots: void on_buttonBox_accepted(); @@ -54,7 +57,8 @@ private slots: private: Ui::BanListOptionsDialog *m_ui; + SettingValue m_storeDialogSize; QStringListModel *m_model; QSortFilterProxyModel *m_sortFilter; - bool m_modified; + bool m_modified = false; }; diff --git a/src/gui/downloadfromurldialog.cpp b/src/gui/downloadfromurldialog.cpp index 8b35ec141..fdfad868c 100644 --- a/src/gui/downloadfromurldialog.cpp +++ b/src/gui/downloadfromurldialog.cpp @@ -39,6 +39,8 @@ #include "ui_downloadfromurldialog.h" #include "utils.h" +#define SETTINGS_KEY(name) "DownloadFromURLDialog/" name + namespace { bool isDownloadable(const QString &str) @@ -55,6 +57,7 @@ namespace DownloadFromURLDialog::DownloadFromURLDialog(QWidget *parent) : QDialog(parent) , m_ui(new Ui::DownloadFromURLDialog) + , m_storeDialogSize(SETTINGS_KEY("Size")) { m_ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); @@ -82,12 +85,13 @@ DownloadFromURLDialog::DownloadFromURLDialog(QWidget *parent) } m_ui->textUrls->setText(uniqueURLs.values().join('\n')); - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); show(); } DownloadFromURLDialog::~DownloadFromURLDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/downloadfromurldialog.h b/src/gui/downloadfromurldialog.h index f3058f309..7782e3a2a 100644 --- a/src/gui/downloadfromurldialog.h +++ b/src/gui/downloadfromurldialog.h @@ -30,19 +30,21 @@ #include +#include "base/settingvalue.h" + namespace Ui { class DownloadFromURLDialog; } -class DownloadFromURLDialog : public QDialog +class DownloadFromURLDialog final : public QDialog { Q_OBJECT Q_DISABLE_COPY(DownloadFromURLDialog) public: explicit DownloadFromURLDialog(QWidget *parent); - ~DownloadFromURLDialog(); + ~DownloadFromURLDialog() override; signals: void urlsReadyToBeDownloaded(const QStringList &torrentURLs); @@ -52,4 +54,5 @@ private slots: private: Ui::DownloadFromURLDialog *m_ui; + SettingValue m_storeDialogSize; }; diff --git a/src/gui/ipsubnetwhitelistoptionsdialog.cpp b/src/gui/ipsubnetwhitelistoptionsdialog.cpp index 3474290a1..1e74317e0 100644 --- a/src/gui/ipsubnetwhitelistoptionsdialog.cpp +++ b/src/gui/ipsubnetwhitelistoptionsdialog.cpp @@ -38,10 +38,12 @@ #include "ui_ipsubnetwhitelistoptionsdialog.h" #include "utils.h" +#define SETTINGS_KEY(name) "IPSubnetWhitelistOptionsDialog/" name + IPSubnetWhitelistOptionsDialog::IPSubnetWhitelistOptionsDialog(QWidget *parent) : QDialog(parent) , m_ui(new Ui::IPSubnetWhitelistOptionsDialog) - , m_modified(false) + , m_storeDialogSize(SETTINGS_KEY("Size")) { m_ui->setupUi(this); @@ -58,11 +60,12 @@ IPSubnetWhitelistOptionsDialog::IPSubnetWhitelistOptionsDialog(QWidget *parent) m_ui->whitelistedIPSubnetList->sortByColumn(0, Qt::AscendingOrder); m_ui->buttonWhitelistIPSubnet->setEnabled(false); - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); } IPSubnetWhitelistOptionsDialog::~IPSubnetWhitelistOptionsDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/ipsubnetwhitelistoptionsdialog.h b/src/gui/ipsubnetwhitelistoptionsdialog.h index ac231f070..d7e116632 100644 --- a/src/gui/ipsubnetwhitelistoptionsdialog.h +++ b/src/gui/ipsubnetwhitelistoptionsdialog.h @@ -30,6 +30,8 @@ #include +#include "base/settingvalue.h" + class QSortFilterProxyModel; class QStringListModel; @@ -38,14 +40,14 @@ namespace Ui class IPSubnetWhitelistOptionsDialog; } -class IPSubnetWhitelistOptionsDialog : public QDialog +class IPSubnetWhitelistOptionsDialog final : public QDialog { Q_OBJECT Q_DISABLE_COPY(IPSubnetWhitelistOptionsDialog) public: explicit IPSubnetWhitelistOptionsDialog(QWidget *parent = nullptr); - ~IPSubnetWhitelistOptionsDialog(); + ~IPSubnetWhitelistOptionsDialog() override; private slots: void on_buttonBox_accepted(); @@ -55,7 +57,9 @@ private slots: private: Ui::IPSubnetWhitelistOptionsDialog *m_ui; + SettingValue m_storeDialogSize; + QStringListModel *m_model; QSortFilterProxyModel *m_sortFilter; - bool m_modified; + bool m_modified = false; }; diff --git a/src/gui/previewselectdialog.cpp b/src/gui/previewselectdialog.cpp index 7768c6500..cdbb72d86 100644 --- a/src/gui/previewselectdialog.cpp +++ b/src/gui/previewselectdialog.cpp @@ -51,7 +51,7 @@ PreviewSelectDialog::PreviewSelectDialog(QWidget *parent, const BitTorrent::Torr : QDialog(parent) , m_ui(new Ui::PreviewSelectDialog) , m_torrent(torrent) - , m_storeDialogSize(SETTINGS_KEY("Dimension")) + , m_storeDialogSize(SETTINGS_KEY("Size")) , m_storeTreeHeaderState(SETTINGS_KEY("HeaderState")) { m_ui->setupUi(this); diff --git a/src/gui/search/pluginselectdialog.cpp b/src/gui/search/pluginselectdialog.cpp index 966300e6c..9ab36b187 100644 --- a/src/gui/search/pluginselectdialog.cpp +++ b/src/gui/search/pluginselectdialog.cpp @@ -49,6 +49,8 @@ #include "searchwidget.h" #include "ui_pluginselectdialog.h" +#define SETTINGS_KEY(name) "SearchPluginSelectDialog/" name + enum PluginColumns { PLUGIN_NAME, @@ -60,10 +62,9 @@ enum PluginColumns PluginSelectDialog::PluginSelectDialog(SearchPluginManager *pluginManager, QWidget *parent) : QDialog(parent) - , m_ui(new Ui::PluginSelectDialog()) + , m_ui(new Ui::PluginSelectDialog) + , m_storeDialogSize(SETTINGS_KEY("Size")) , m_pluginManager(pluginManager) - , m_asyncOps(0) - , m_pendingUpdates(0) { m_ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); @@ -94,12 +95,13 @@ PluginSelectDialog::PluginSelectDialog(SearchPluginManager *pluginManager, QWidg connect(m_pluginManager, &SearchPluginManager::checkForUpdatesFinished, this, &PluginSelectDialog::checkForUpdatesFinished); connect(m_pluginManager, &SearchPluginManager::checkForUpdatesFailed, this, &PluginSelectDialog::checkForUpdatesFailed); - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); show(); } PluginSelectDialog::~PluginSelectDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/search/pluginselectdialog.h b/src/gui/search/pluginselectdialog.h index d47767786..23e94b963 100644 --- a/src/gui/search/pluginselectdialog.h +++ b/src/gui/search/pluginselectdialog.h @@ -33,6 +33,7 @@ #include #include "base/search/searchpluginmanager.h" +#include "base/settingvalue.h" class QDropEvent; class QTreeWidgetItem; @@ -91,8 +92,9 @@ private: void finishPluginUpdate(); Ui::PluginSelectDialog *m_ui; + SettingValue m_storeDialogSize; SearchPluginManager *m_pluginManager; QStringList m_updatedPlugins; - int m_asyncOps; - int m_pendingUpdates; + int m_asyncOps = 0; + int m_pendingUpdates = 0; }; diff --git a/src/gui/search/pluginsourcedialog.cpp b/src/gui/search/pluginsourcedialog.cpp index 89148ddb8..35eef656e 100644 --- a/src/gui/search/pluginsourcedialog.cpp +++ b/src/gui/search/pluginsourcedialog.cpp @@ -31,19 +31,23 @@ #include "gui/utils.h" #include "ui_pluginsourcedialog.h" +#define SETTINGS_KEY(name) "SearchPluginSourceDialog/" name + PluginSourceDialog::PluginSourceDialog(QWidget *parent) : QDialog(parent) - , m_ui(new Ui::PluginSourceDialog()) + , m_ui(new Ui::PluginSourceDialog) + , m_storeDialogSize(SETTINGS_KEY("Size")) { m_ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); show(); } PluginSourceDialog::~PluginSourceDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/search/pluginsourcedialog.h b/src/gui/search/pluginsourcedialog.h index 8a8948a5b..5b62c2f9a 100644 --- a/src/gui/search/pluginsourcedialog.h +++ b/src/gui/search/pluginsourcedialog.h @@ -30,18 +30,21 @@ #include +#include "base/settingvalue.h" + namespace Ui { class PluginSourceDialog; } -class PluginSourceDialog : public QDialog +class PluginSourceDialog final : public QDialog { Q_OBJECT + Q_DISABLE_COPY(PluginSourceDialog) public: explicit PluginSourceDialog(QWidget *parent = nullptr); - ~PluginSourceDialog(); + ~PluginSourceDialog() override; signals: void askForUrl(); @@ -53,4 +56,5 @@ private slots: private: Ui::PluginSourceDialog *m_ui; + SettingValue m_storeDialogSize; }; diff --git a/src/gui/speedlimitdialog.cpp b/src/gui/speedlimitdialog.cpp index 334dd75ac..adae8f56c 100644 --- a/src/gui/speedlimitdialog.cpp +++ b/src/gui/speedlimitdialog.cpp @@ -35,6 +35,8 @@ #include "uithememanager.h" #include "utils.h" +#define SETTINGS_KEY(name) "SpeedLimitDialog/" name + namespace { void updateSliderValue(QSlider *slider, const int value) @@ -48,6 +50,7 @@ namespace SpeedLimitDialog::SpeedLimitDialog(QWidget *parent) : QDialog {parent} , m_ui {new Ui::SpeedLimitDialog} + , m_storeDialogSize {SETTINGS_KEY("Size")} { m_ui->setupUi(this); @@ -103,11 +106,12 @@ SpeedLimitDialog::SpeedLimitDialog(QWidget *parent) connect(m_ui->spinAltDownloadLimit, qOverload(&QSpinBox::valueChanged) , this, [this](const int value) { updateSliderValue(m_ui->sliderAltDownloadLimit, value); }); - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); } SpeedLimitDialog::~SpeedLimitDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/speedlimitdialog.h b/src/gui/speedlimitdialog.h index 1c3d77676..25a277cbd 100644 --- a/src/gui/speedlimitdialog.h +++ b/src/gui/speedlimitdialog.h @@ -30,6 +30,8 @@ #include +#include "base/settingvalue.h" + namespace Ui { class SpeedLimitDialog; @@ -38,6 +40,7 @@ namespace Ui class SpeedLimitDialog final : public QDialog { Q_OBJECT + Q_DISABLE_COPY(SpeedLimitDialog) public: explicit SpeedLimitDialog(QWidget *parent); @@ -48,6 +51,7 @@ public slots: private: Ui::SpeedLimitDialog *m_ui; + SettingValue m_storeDialogSize; struct { int uploadSpeedLimit; diff --git a/src/gui/statsdialog.cpp b/src/gui/statsdialog.cpp index 1cb43f5f3..c618cfa3c 100644 --- a/src/gui/statsdialog.cpp +++ b/src/gui/statsdialog.cpp @@ -40,9 +40,12 @@ #include "ui_statsdialog.h" #include "utils.h" +#define SETTINGS_KEY(name) "StatisticsDialog/" name + StatsDialog::StatsDialog(QWidget *parent) : QDialog(parent) , m_ui(new Ui::StatsDialog) + , m_storeDialogSize(SETTINGS_KEY("Size")) { m_ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); @@ -57,12 +60,13 @@ StatsDialog::StatsDialog(QWidget *parent) m_ui->labelCacheHits->hide(); #endif - Utils::Gui::resize(this); + Utils::Gui::resize(this, m_storeDialogSize); show(); } StatsDialog::~StatsDialog() { + m_storeDialogSize = size(); delete m_ui; } diff --git a/src/gui/statsdialog.h b/src/gui/statsdialog.h index d2add7915..8b3509841 100644 --- a/src/gui/statsdialog.h +++ b/src/gui/statsdialog.h @@ -30,6 +30,8 @@ #include +#include "base/settingvalue.h" + namespace Ui { class StatsDialog; @@ -38,6 +40,7 @@ namespace Ui class StatsDialog final : public QDialog { Q_OBJECT + Q_DISABLE_COPY(StatsDialog) public: explicit StatsDialog(QWidget *parent); @@ -48,4 +51,5 @@ private slots: private: Ui::StatsDialog *m_ui; + SettingValue m_storeDialogSize; }; diff --git a/src/gui/torrentcreatordialog.cpp b/src/gui/torrentcreatordialog.cpp index 120c67dc1..1dc2a9fda 100644 --- a/src/gui/torrentcreatordialog.cpp +++ b/src/gui/torrentcreatordialog.cpp @@ -48,7 +48,7 @@ TorrentCreatorDialog::TorrentCreatorDialog(QWidget *parent, const QString &defau : QDialog(parent) , m_ui(new Ui::TorrentCreatorDialog) , m_creatorThread(new BitTorrent::TorrentCreatorThread(this)) - , m_storeDialogSize(SETTINGS_KEY("Dimension")) + , m_storeDialogSize(SETTINGS_KEY("Size")) , m_storePieceSize(SETTINGS_KEY("PieceSize")) , m_storePrivateTorrent(SETTINGS_KEY("PrivateTorrent")) , m_storeStartSeeding(SETTINGS_KEY("StartSeeding")) diff --git a/src/gui/torrentoptionsdialog.cpp b/src/gui/torrentoptionsdialog.cpp index b80122573..335cf3987 100644 --- a/src/gui/torrentoptionsdialog.cpp +++ b/src/gui/torrentoptionsdialog.cpp @@ -39,6 +39,8 @@ #include "ui_torrentoptionsdialog.h" #include "utils.h" +#define SETTINGS_KEY(name) "TorrentOptionsDialog/" name + namespace { const int MIXED_SHARE_LIMITS = -9; @@ -54,6 +56,7 @@ namespace TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector &torrents) : QDialog {parent} , m_ui {new Ui::TorrentOptionsDialog} + , m_storeDialogSize {SETTINGS_KEY("Size")} { m_ui->setupUi(this); @@ -265,11 +268,12 @@ TorrentOptionsDialog::TorrentOptionsDialog(QWidget *parent, const QVector +#include "base/settingvalue.h" + namespace BitTorrent { class InfoHash; @@ -44,6 +46,7 @@ namespace Ui class TorrentOptionsDialog final : public QDialog { Q_OBJECT + Q_DISABLE_COPY(TorrentOptionsDialog) public: explicit TorrentOptionsDialog(QWidget *parent, const QVector &torrents); @@ -64,6 +67,7 @@ private: QVector m_torrentHashes; Ui::TorrentOptionsDialog *m_ui; + SettingValue m_storeDialogSize; struct { qreal ratio; diff --git a/src/gui/trackerentriesdialog.cpp b/src/gui/trackerentriesdialog.cpp index 62d2db1e0..e02f688db 100644 --- a/src/gui/trackerentriesdialog.cpp +++ b/src/gui/trackerentriesdialog.cpp @@ -42,7 +42,7 @@ TrackerEntriesDialog::TrackerEntriesDialog(QWidget *parent) : QDialog(parent) , m_ui(new Ui::TrackerEntriesDialog) - , m_storeDialogSize(SETTINGS_KEY("Dimension")) + , m_storeDialogSize(SETTINGS_KEY("Size")) { m_ui->setupUi(this); From bdf1fb6db8d77c07b205043af9e3433f3e95bb27 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Fri, 1 Jan 2021 15:29:32 +0800 Subject: [PATCH 2/3] Revise store/load state operations of Options Dialog --- src/base/preferences.cpp | 20 ---------------- src/base/preferences.h | 4 ---- src/gui/optionsdialog.cpp | 49 +++++++++++++++------------------------ src/gui/optionsdialog.h | 14 ++++++++--- 4 files changed, 30 insertions(+), 57 deletions(-) diff --git a/src/base/preferences.cpp b/src/base/preferences.cpp index 4e2856330..fa35f8f47 100644 --- a/src/base/preferences.cpp +++ b/src/base/preferences.cpp @@ -1241,26 +1241,6 @@ void Preferences::setMainLastDir(const QString &path) setValue("MainWindowLastDir", path); } -QSize Preferences::getPrefSize() const -{ - return value("Preferences/State/size").toSize(); -} - -void Preferences::setPrefSize(const QSize &size) -{ - setValue("Preferences/State/size", size); -} - -QStringList Preferences::getPrefHSplitterSizes() const -{ - return value("Preferences/State/hSplitterSizes").toStringList(); -} - -void Preferences::setPrefHSplitterSizes(const QStringList &sizes) -{ - setValue("Preferences/State/hSplitterSizes", sizes); -} - QByteArray Preferences::getPeerListState() const { return value("TorrentProperties/Peers/qt5/PeerListState").toByteArray(); diff --git a/src/base/preferences.h b/src/base/preferences.h index cab46c6a1..903d0008e 100644 --- a/src/base/preferences.h +++ b/src/base/preferences.h @@ -329,10 +329,6 @@ public: void setMainVSplitterState(const QByteArray &state); QString getMainLastDir() const; void setMainLastDir(const QString &path); - QSize getPrefSize() const; - void setPrefSize(const QSize &size); - QStringList getPrefHSplitterSizes() const; - void setPrefHSplitterSizes(const QStringList &sizes); QByteArray getPeerListState() const; void setPeerListState(const QByteArray &state); QString getPropSplitterSizes() const; diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index 8c0a90976..d0d6a3300 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -68,6 +68,8 @@ #include "uithememanager.h" #include "utils.h" +#define SETTINGS_KEY(name) "OptionsDialog/" name + namespace { QStringList translatedWeekdayNames() @@ -169,9 +171,10 @@ private: // Constructor OptionsDialog::OptionsDialog(QWidget *parent) - : QDialog(parent) - , m_refreshingIpFilter(false) - , m_ui(new Ui::OptionsDialog) + : QDialog {parent} + , m_ui {new Ui::OptionsDialog} + , m_storeDialogSize {SETTINGS_KEY("Size")} + , m_storeHSplitterSize {SETTINGS_KEY("HorizontalSplitterSizes")} { qDebug("-> Constructing Options"); m_ui->setupUi(this); @@ -565,7 +568,7 @@ OptionsDialog::OptionsDialog(QWidget *parent) for (QSpinBox *widget : asConst(findChildren())) widget->installEventFilter(wheelEventEater); - loadWindowState(); + Utils::Gui::resize(this, m_storeDialogSize); show(); // Have to be called after show(), because splitter width needed loadSplitterState(); @@ -606,7 +609,13 @@ OptionsDialog::~OptionsDialog() { qDebug("-> destructing Options"); - saveWindowState(); + // save dialog states + m_storeDialogSize = size(); + + QStringList hSplitterSizes; + for (const int size : asConst(m_ui->hsplitter->sizes())) + hSplitterSizes.append(QString::number(size)); + m_storeHSplitterSize = hSplitterSizes; for (const QString &path : asConst(m_addedScanDirs)) ScanFoldersModel::instance()->removePath(path); @@ -621,38 +630,18 @@ void OptionsDialog::changePage(QListWidgetItem *current, QListWidgetItem *previo m_ui->tabOption->setCurrentIndex(m_ui->tabSelection->row(current)); } -void OptionsDialog::loadWindowState() -{ - Utils::Gui::resize(this, Preferences::instance()->getPrefSize()); -} - void OptionsDialog::loadSplitterState() { - const QStringList sizesStr = Preferences::instance()->getPrefHSplitterSizes(); - // width has been modified, use height as width reference instead const int width = Utils::Gui::scaledSize(this , (m_ui->tabSelection->item(TAB_UI)->sizeHint().height() * 2)); - QList sizes {width, (m_ui->hsplitter->width() - width)}; - if (sizesStr.size() == 2) - sizes = {sizesStr.first().toInt(), sizesStr.last().toInt()}; - m_ui->hsplitter->setSizes(sizes); -} + const QStringList defaultSizes = {QString::number(width), QString::number(m_ui->hsplitter->width() - width)}; -void OptionsDialog::saveWindowState() const -{ - Preferences *const pref = Preferences::instance(); + QList splitterSizes; + for (const QString &string : asConst(m_storeHSplitterSize.get(defaultSizes))) + splitterSizes.append(string.toInt()); - // window size - pref->setPrefSize(size()); - - // Splitter size - const QStringList sizesStr = - { - QString::number(m_ui->hsplitter->sizes().first()), - QString::number(m_ui->hsplitter->sizes().last()) - }; - pref->setPrefHSplitterSizes(sizesStr); + m_ui->hsplitter->setSizes(splitterSizes); } void OptionsDialog::saveOptions() diff --git a/src/gui/optionsdialog.h b/src/gui/optionsdialog.h index 056dc8e17..8479c450a 100644 --- a/src/gui/optionsdialog.h +++ b/src/gui/optionsdialog.h @@ -30,6 +30,8 @@ #include +#include "base/settingvalue.h" + class QAbstractButton; class QCloseEvent; class QListWidgetItem; @@ -58,6 +60,8 @@ namespace Ui class OptionsDialog final : public QDialog { Q_OBJECT + Q_DISABLE_COPY(OptionsDialog) + using ThisType = OptionsDialog; enum Tabs @@ -95,9 +99,7 @@ private slots: void enableApplyButton(); void toggleComboRatioLimitAct(); void changePage(QListWidgetItem *, QListWidgetItem *); - void loadWindowState(); void loadSplitterState(); - void saveWindowState() const; void handleScanFolderViewSelectionChanged(); void on_IpFilterRefreshBtn_clicked(); void handleIPFilterParsed(bool error, int ruleCount); @@ -161,7 +163,6 @@ private: // IP Filter bool isIPFilteringEnabled() const; QString getFilter() const; - bool m_refreshingIpFilter; // Queueing system bool isQueueingSystemEnabled() const; int getMaxActiveDownloads() const; @@ -177,8 +178,15 @@ private: bool schedTimesOk(); Ui::OptionsDialog *m_ui; + SettingValue m_storeDialogSize; + SettingValue m_storeHSplitterSize; + QAbstractButton *m_applyButton; + AdvancedSettings *m_advancedSettings; + QList m_addedScanDirs; QList m_removedScanDirs; + + bool m_refreshingIpFilter = false; }; From ff63ad8b97022dbf2964828c5c42afa0f2b8d4e8 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Fri, 1 Jan 2021 15:56:59 +0800 Subject: [PATCH 3/3] Don't use deprecated locale name --- src/gui/optionsdialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/optionsdialog.cpp b/src/gui/optionsdialog.cpp index d0d6a3300..e867b614f 100644 --- a/src/gui/optionsdialog.cpp +++ b/src/gui/optionsdialog.cpp @@ -131,7 +131,7 @@ namespace case QLocale::Latvian: return QString::fromUtf8(C_LOCALE_LATVIAN); case QLocale::Lithuanian: return QString::fromUtf8(C_LOCALE_LITHUANIAN); case QLocale::Malay: return QString::fromUtf8(C_LOCALE_MALAY); - case QLocale::Norwegian: return QString::fromUtf8(C_LOCALE_NORWEGIAN); + case QLocale::NorwegianBokmal: return QString::fromUtf8(C_LOCALE_NORWEGIAN); case QLocale::Occitan: return QString::fromUtf8(C_LOCALE_OCCITAN); case QLocale::Polish: return QString::fromUtf8(C_LOCALE_POLISH); case QLocale::Portuguese: