32 #include <type_traits>
35 #include <QReadWriteLock>
37 #include <QVariantHash>
45 struct IsQFlags<QFlags<T>> : std::true_type {};
59 T
loadValue(
const QString &key,
const T &defaultValue = {})
const
61 if constexpr (std::is_enum_v<T>)
63 const auto value = loadValue<QString>(key);
68 const typename T::Int
value =
loadValue(key,
static_cast<typename T::Int
>(defaultValue));
71 else if constexpr (std::is_same_v<T, QVariant>)
80 return value.template canConvert<T>() ?
value.template value<T>() : defaultValue;
87 if constexpr (std::is_enum_v<T>)
96 bool hasKey(
const QString &key)
const;
102 QVariant
loadValueImpl(
const QString &key,
const QVariant &defaultValue = {})
const;
void storeValue(const QString &key, const T &value)
T loadValue(const QString &key, const T &defaultValue={}) const
static SettingsStorage * instance()
void storeValueImpl(const QString &key, const QVariant &value)
void removeValue(const QString &key)
static SettingsStorage * m_instance
static void freeInstance()
static void initInstance()
bool hasKey(const QString &key) const
QVariant loadValueImpl(const QString &key, const QVariant &defaultValue={}) const
QString fromEnum(const T &value)
T toEnum(const QString &serializedValue, const T &defaultValue)
T value(const QString &key, const T &defaultValue={})