22#ifndef SAYONARA_PLAYER_SETTING_H
23#define SAYONARA_PLAYER_SETTING_H
25#include "Utils/Settings/SettingConverter.h"
26#include "Utils/Settings/SettingKey.h"
27#include "Utils/Pimpl.h"
47 [[nodiscard]] SettingKey getKey()
const;
48 [[nodiscard]] QString dbKey()
const;
49 [[nodiscard]]
bool isDatabaseSetting()
const;
51 void assignValue(
const QString& value);
53 virtual bool loadValueFromString(
const QString& str) = 0;
54 [[nodiscard]]
virtual QString valueToString()
const = 0;
55 virtual void assignDefaultValue() = 0;
58template<
typename KeyClass>
66 Setting(
const char* databaseKey,
const typename KeyClass::Data& value) :
69 m_defaultValue {value} {}
71 explicit Setting(
const typename KeyClass::Data& value) :
74 m_defaultValue {value} {}
78 void assignDefaultValue()
override { m_value = m_defaultValue; }
80 [[nodiscard]] QString valueToString()
const override {
return SettingConverter::toString(m_value); }
82 bool loadValueFromString(
const QString& str)
override {
return SettingConverter::fromString(str, m_value); }
84 const typename KeyClass::Data& value()
const {
return m_value; }
88 bool assignValue(
const typename KeyClass::Data& val)
101 typename KeyClass::Data m_value;
102 typename KeyClass::Data m_defaultValue;