From c6d9ab681057aa9a5c5091de2499e2b46601cc03 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Mon, 28 Dec 2020 11:59:36 +0800 Subject: [PATCH] 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);