mirror of
https://github.com/qbittorrent/qBittorrent.git
synced 2025-12-20 15:37:26 -06:00
Implement enum support in CachedSettingValue
Enums are stored as strings, that improves configuration file readability and maintainability. String values are obtained via QMetaEnum, and since with Qt 5.5 QMetaEnum::fromType() includes a static_assert, this has to be a safe method.
This commit is contained in:
@@ -28,15 +28,9 @@
|
||||
|
||||
#include "torrentfileguard.h"
|
||||
|
||||
#include <QMetaEnum>
|
||||
#include "settingsstorage.h"
|
||||
#include "settingvalue.h"
|
||||
#include "utils/fs.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
const QLatin1String KEY_AUTO_DELETE_ENABLED ("Core/AutoDeleteAddedTorrentFile");
|
||||
}
|
||||
|
||||
FileGuard::FileGuard(const QString &path)
|
||||
: m_path {path}
|
||||
, m_remove {true}
|
||||
@@ -79,18 +73,17 @@ void TorrentFileGuard::markAsAddedToSession()
|
||||
|
||||
TorrentFileGuard::AutoDeleteMode TorrentFileGuard::autoDeleteMode()
|
||||
{
|
||||
QMetaEnum meta {modeMetaEnum()};
|
||||
return static_cast<AutoDeleteMode>(meta.keyToValue(SettingsStorage::instance()->loadValue(
|
||||
KEY_AUTO_DELETE_ENABLED, meta.valueToKey(Never)).toByteArray()));
|
||||
return autoDeleteModeSetting();
|
||||
}
|
||||
|
||||
void TorrentFileGuard::setAutoDeleteMode(TorrentFileGuard::AutoDeleteMode mode)
|
||||
{
|
||||
QMetaEnum meta {modeMetaEnum()};
|
||||
SettingsStorage::instance()->storeValue(KEY_AUTO_DELETE_ENABLED, meta.valueToKey(mode));
|
||||
autoDeleteModeSetting() = mode;
|
||||
}
|
||||
|
||||
QMetaEnum TorrentFileGuard::modeMetaEnum()
|
||||
CachedSettingValue<TorrentFileGuard::AutoDeleteMode> &TorrentFileGuard::autoDeleteModeSetting()
|
||||
{
|
||||
return QMetaEnum::fromType<AutoDeleteMode>();
|
||||
static CachedSettingValue<AutoDeleteMode> setting("Core/AutoDeleteAddedTorrentFile", AutoDeleteMode::Never);
|
||||
return setting;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user