13 #ifndef CONFIGURATION_H
14 #define CONFIGURATION_H
18 #include <QDomDocument>
21 #include <QStringList>
43 QString m_fileName {kDefaultFilename};
48 QDomNode FindNode(
const QString &setting,
bool create);
49 QDomNode FindNode(QStringList &path, QDomNode &
current,
bool create);
51 QString GetValue(
const QString &setting);
55 static constexpr
auto kDefaultFilename =
"config.xml";
57 static inline const QString kDefaultDB {
"Database/"};
58 static inline const QString kDefaultWOL {
"WakeOnLAN/"};
59 static inline const QString kDefaultMFE {
"UPnP/MythFrontend/DefaultBackend/"};
60 static inline const QString kDefaultPIN {kDefaultMFE +
"SecurityPin"};
61 static inline const QString kDefaultUSN {kDefaultMFE +
"USN"};
65 : m_fileName(std::move(fileName))
75 bool GetValue(
const QString &setting,
const bool defaultValue)
77 QString value = GetValue(setting);
78 return (!value.isNull()) ? QVariant(value).toBool() : defaultValue;
80 int GetValue(
const QString &setting,
const int defaultValue)
82 QString value = GetValue(setting);
83 return (!value.isNull()) ? QVariant(value).toInt() : defaultValue;
85 QString
GetValue(
const QString &setting,
const QString &defaultValue)
87 QString value = GetValue(setting);
88 return (!value.isNull()) ? value : defaultValue;
93 QString
GetValue(
const QString &setting,
const char* defaultValue)
95 QString value = GetValue(setting);
96 return (!value.isNull()) ? value : QString(defaultValue);
99 void SetValue(
const QString &setting,
bool value)
101 SetValue(setting, QVariant(value).
toString());
105 SetValue(setting, QVariant(value).
toString());
111 void SetValue(
const QString &setting,
const char* value)
113 SetValue(setting, QString(value));
115 void SetValue(
const QString &setting,
const QString &value);
116 void ClearValue(
const QString &setting);
118 template <
typename T>
119 typename std::enable_if_t<std::chrono::__is_duration<T>::value, T>
122 return T(GetValue(setting,
static_cast<int>(defaultValue.count())));
125 template <
typename T>
126 typename std::enable_if_t<std::chrono::__is_duration<T>::value>
129 SetValue(setting,
static_cast<int>(value.count()));
133 #endif // CONFIGURATION_H