Add a thin layer around SettingsStorage class

This new layer would be handy for saving GUI widget states as they don't
need the value cached and they store/load rarely.
This commit is contained in:
Chocobo1 2020-12-28 23:32:59 +08:00
commit 0b0597be0c
No known key found for this signature in database
GPG key ID: 210D9C873253A68C
12 changed files with 122 additions and 92 deletions

View file

@ -118,6 +118,6 @@ private:
std::unique_ptr<TorrentFileGuard> m_torrentGuard;
BitTorrent::AddTorrentParams m_torrentParams;
CachedSettingValue<QSize> m_storeDialogSize;
CachedSettingValue<QByteArray> m_storeSplitterState;
SettingValue<QSize> m_storeDialogSize;
SettingValue<QByteArray> m_storeSplitterState;
};

View file

@ -159,7 +159,7 @@ void PreviewSelectDialog::loadWindowState()
Utils::Gui::resize(this, m_storeDialogSize);
// Restore TreeView Header state
if (!m_storeTreeHeaderState.value().isEmpty())
if (!m_storeTreeHeaderState.get().isEmpty())
{
m_headerStateInitialized = m_ui->previewList->header()->restoreState(m_storeTreeHeaderState);
}

View file

@ -82,6 +82,6 @@ private:
bool m_headerStateInitialized = false;
// Settings
CachedSettingValue<QSize> m_storeDialogSize;
CachedSettingValue<QByteArray> m_storeTreeHeaderState;
SettingValue<QSize> m_storeDialogSize;
SettingValue<QByteArray> m_storeTreeHeaderState;
};

View file

@ -358,7 +358,7 @@ void SearchJobWidget::fillFilterComboBoxes()
m_ui->filterMode->addItem(tr("Torrent names only"), static_cast<int>(NameFilteringMode::OnlyNames));
m_ui->filterMode->addItem(tr("Everywhere"), static_cast<int>(NameFilteringMode::Everywhere));
QVariant selectedMode = static_cast<int>(nameFilteringModeSetting().value());
QVariant selectedMode = static_cast<int>(nameFilteringModeSetting().get(NameFilteringMode::OnlyNames));
int index = m_ui->filterMode->findData(selectedMode);
m_ui->filterMode->setCurrentIndex((index == -1) ? 0 : index);
}
@ -545,9 +545,9 @@ void SearchJobWidget::appendSearchResults(const QVector<SearchResult> &results)
updateResultsCount();
}
CachedSettingValue<SearchJobWidget::NameFilteringMode> &SearchJobWidget::nameFilteringModeSetting()
SettingValue<SearchJobWidget::NameFilteringMode> &SearchJobWidget::nameFilteringModeSetting()
{
static CachedSettingValue<NameFilteringMode> setting("Search/FilteringMode", NameFilteringMode::OnlyNames);
static SettingValue<NameFilteringMode> setting {"Search/FilteringMode"};
return setting;
}

View file

@ -43,7 +43,7 @@ class SearchHandler;
class SearchSortModel;
struct SearchResult;
template <typename T> class CachedSettingValue;
template <typename T> class SettingValue;
namespace Ui
{
@ -117,7 +117,7 @@ private:
void copyField(int column) const;
static QString statusText(Status st);
static CachedSettingValue<NameFilteringMode> &nameFilteringModeSetting();
static SettingValue<NameFilteringMode> &nameFilteringModeSetting();
Ui::SearchJobWidget *m_ui;
SearchHandler *m_searchHandler;

View file

@ -54,16 +54,16 @@ TorrentCreatorDialog::TorrentCreatorDialog(QWidget *parent, const QString &defau
, m_storeStartSeeding(SETTINGS_KEY("StartSeeding"))
, m_storeIgnoreRatio(SETTINGS_KEY("IgnoreRatio"))
#if (LIBTORRENT_VERSION_NUM >= 20000)
, m_storeTorrentFormat(SETTINGS_KEY("TorrentFormat"), 1)
, m_storeTorrentFormat(SETTINGS_KEY("TorrentFormat"))
#else
, m_storeOptimizeAlignment(SETTINGS_KEY("OptimizeAlignment"), true)
, m_paddedFileSizeLimit(SETTINGS_KEY("PaddedFileSizeLimit"), -1)
, m_storeOptimizeAlignment(SETTINGS_KEY("OptimizeAlignment"))
, m_paddedFileSizeLimit(SETTINGS_KEY("PaddedFileSizeLimit"))
#endif
, m_storeLastAddPath(SETTINGS_KEY("LastAddPath"), QDir::homePath())
, m_storeLastAddPath(SETTINGS_KEY("LastAddPath"))
, m_storeTrackerList(SETTINGS_KEY("TrackerList"))
, m_storeWebSeedList(SETTINGS_KEY("WebSeedList"))
, m_storeComments(SETTINGS_KEY("Comments"))
, m_storeLastSavePath(SETTINGS_KEY("LastSavePath"), QDir::homePath())
, m_storeLastSavePath(SETTINGS_KEY("LastSavePath"))
, m_storeSource(SETTINGS_KEY("Source"))
{
m_ui->setupUi(this);
@ -184,7 +184,7 @@ void TorrentCreatorDialog::onCreateButtonClicked()
input = fi.canonicalFilePath();
// get save path
const QString savePath = QString(m_storeLastSavePath) + QLatin1Char('/') + fi.fileName() + QLatin1String(".torrent");
const QString savePath = m_storeLastSavePath.get(QDir::homePath()) + QLatin1Char('/') + fi.fileName() + QLatin1String(".torrent");
QString destination = QFileDialog::getSaveFileName(this, tr("Select where to save the new torrent"), savePath, tr("Torrent Files (*.torrent)"));
if (destination.isEmpty())
return;
@ -324,7 +324,7 @@ void TorrentCreatorDialog::saveSettings()
void TorrentCreatorDialog::loadSettings()
{
m_ui->textInputPath->setText(m_storeLastAddPath);
m_ui->textInputPath->setText(m_storeLastAddPath.get(QDir::homePath()));
m_ui->comboPieceSize->setCurrentIndex(m_storePieceSize);
m_ui->checkPrivate->setChecked(m_storePrivateTorrent);
@ -332,10 +332,10 @@ void TorrentCreatorDialog::loadSettings()
m_ui->checkIgnoreShareLimits->setChecked(m_storeIgnoreRatio);
m_ui->checkIgnoreShareLimits->setEnabled(m_ui->checkStartSeeding->isChecked());
#if (LIBTORRENT_VERSION_NUM >= 20000)
m_ui->comboTorrentFormat->setCurrentIndex(m_storeTorrentFormat);
m_ui->comboTorrentFormat->setCurrentIndex(m_storeTorrentFormat.get(1));
#else
m_ui->checkOptimizeAlignment->setChecked(m_storeOptimizeAlignment);
m_ui->spinPaddedFileSizeLimit->setValue(m_paddedFileSizeLimit);
m_ui->checkOptimizeAlignment->setChecked(m_storeOptimizeAlignment.get(true));
m_ui->spinPaddedFileSizeLimit->setValue(m_paddedFileSizeLimit.get(-1));
#endif
m_ui->trackersList->setPlainText(m_storeTrackerList);

View file

@ -78,21 +78,21 @@ private:
BitTorrent::TorrentCreatorThread *m_creatorThread;
// settings
CachedSettingValue<QSize> m_storeDialogSize;
CachedSettingValue<int> m_storePieceSize;
CachedSettingValue<bool> m_storePrivateTorrent;
CachedSettingValue<bool> m_storeStartSeeding;
CachedSettingValue<bool> m_storeIgnoreRatio;
SettingValue<QSize> m_storeDialogSize;
SettingValue<int> m_storePieceSize;
SettingValue<bool> m_storePrivateTorrent;
SettingValue<bool> m_storeStartSeeding;
SettingValue<bool> m_storeIgnoreRatio;
#if (LIBTORRENT_VERSION_NUM >= 20000)
CachedSettingValue<int> m_storeTorrentFormat;
SettingValue<int> m_storeTorrentFormat;
#else
CachedSettingValue<bool> m_storeOptimizeAlignment;
CachedSettingValue<int> m_paddedFileSizeLimit;
SettingValue<bool> m_storeOptimizeAlignment;
SettingValue<int> m_paddedFileSizeLimit;
#endif
CachedSettingValue<QString> m_storeLastAddPath;
CachedSettingValue<QString> m_storeTrackerList;
CachedSettingValue<QString> m_storeWebSeedList;
CachedSettingValue<QString> m_storeComments;
CachedSettingValue<QString> m_storeLastSavePath;
CachedSettingValue<QString> m_storeSource;
SettingValue<QString> m_storeLastAddPath;
SettingValue<QString> m_storeTrackerList;
SettingValue<QString> m_storeWebSeedList;
SettingValue<QString> m_storeComments;
SettingValue<QString> m_storeLastSavePath;
SettingValue<QString> m_storeSource;
};

View file

@ -60,5 +60,5 @@ private:
void loadSettings();
Ui::TrackerEntriesDialog *m_ui;
CachedSettingValue<QSize> m_storeDialogSize;
SettingValue<QSize> m_storeDialogSize;
};