Simplify the saving & loading of a setting

Remove excessive usage of constexpr.
This commit is contained in:
Chocobo1 2018-05-18 14:24:54 +08:00 committed by sledgehammer999
parent 9ff17c8d9d
commit 551fc35439
No known key found for this signature in database
GPG key ID: 6E4A2D025B7CC9A2
2 changed files with 13 additions and 25 deletions

View file

@ -46,7 +46,6 @@
#include "base/net/downloadmanager.h" #include "base/net/downloadmanager.h"
#include "base/preferences.h" #include "base/preferences.h"
#include "base/settingsstorage.h" #include "base/settingsstorage.h"
#include "base/settingvalue.h"
#include "base/torrentfileguard.h" #include "base/torrentfileguard.h"
#include "base/unicodestrings.h" #include "base/unicodestrings.h"
#include "base/utils/fs.h" #include "base/utils/fs.h"
@ -81,8 +80,8 @@ namespace
} }
} }
constexpr int AddNewTorrentDialog::minPathHistoryLength; const int AddNewTorrentDialog::minPathHistoryLength;
constexpr int AddNewTorrentDialog::maxPathHistoryLength; const int AddNewTorrentDialog::maxPathHistoryLength;
AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inParams, QWidget *parent) AddNewTorrentDialog::AddNewTorrentDialog(const BitTorrent::AddTorrentParams &inParams, QWidget *parent)
: QDialog(parent) : QDialog(parent)
@ -188,30 +187,21 @@ void AddNewTorrentDialog::setTopLevel(bool value)
int AddNewTorrentDialog::savePathHistoryLength() int AddNewTorrentDialog::savePathHistoryLength()
{ {
return savePathHistoryLengthSetting(); const int defaultHistoryLength = 8;
const int value = settings()->loadValue(KEY_SAVEPATHHISTORYLENGTH, defaultHistoryLength).toInt();
return qBound(minPathHistoryLength, value, maxPathHistoryLength);
} }
void AddNewTorrentDialog::setSavePathHistoryLength(int value) void AddNewTorrentDialog::setSavePathHistoryLength(int value)
{ {
Q_ASSERT(value >= minPathHistoryLength); const int clampedValue = qBound(minPathHistoryLength, value, maxPathHistoryLength);
Q_ASSERT(value <= maxPathHistoryLength);
const int oldValue = savePathHistoryLength(); const int oldValue = savePathHistoryLength();
if (oldValue != value) { if (clampedValue == oldValue)
savePathHistoryLengthSetting() = value; return;
settings()->storeValue(KEY_SAVEPATHHISTORY,
QStringList(settings()->loadValue(KEY_SAVEPATHHISTORY).toStringList().mid(0, value)));
}
}
CachedSettingValue<int> &AddNewTorrentDialog::savePathHistoryLengthSetting() settings()->storeValue(KEY_SAVEPATHHISTORYLENGTH, clampedValue);
{ settings()->storeValue(KEY_SAVEPATHHISTORY
const int defaultHistoryLength = 8; , QStringList(settings()->loadValue(KEY_SAVEPATHHISTORY).toStringList().mid(0, clampedValue)));
static CachedSettingValue<int> setting(KEY_SAVEPATHHISTORYLENGTH.toUtf8().constData(), defaultHistoryLength,
[](int v)
{
return std::max(minPathHistoryLength, std::min(maxPathHistoryLength, v));
});
return setting;
} }
void AddNewTorrentDialog::loadState() void AddNewTorrentDialog::loadState()

View file

@ -51,15 +51,14 @@ namespace Ui
class PropListDelegate; class PropListDelegate;
class TorrentContentFilterModel; class TorrentContentFilterModel;
class TorrentFileGuard; class TorrentFileGuard;
template <typename T> class CachedSettingValue;
class AddNewTorrentDialog : public QDialog class AddNewTorrentDialog : public QDialog
{ {
Q_OBJECT Q_OBJECT
public: public:
static constexpr int minPathHistoryLength = 0; static const int minPathHistoryLength = 0;
static constexpr int maxPathHistoryLength = 99; static const int maxPathHistoryLength = 99;
~AddNewTorrentDialog(); ~AddNewTorrentDialog();
@ -103,7 +102,6 @@ private:
void setupTreeview(); void setupTreeview();
void setCommentText(const QString &str) const; void setCommentText(const QString &str) const;
void setSavePath(const QString &newPath); void setSavePath(const QString &newPath);
static CachedSettingValue<int> &savePathHistoryLengthSetting();
void showEvent(QShowEvent *event) override; void showEvent(QShowEvent *event) override;