67 lines
1.8 KiB
C
67 lines
1.8 KiB
C
|
#ifndef SCSTWSETTINGS_H
|
||
|
#define SCSTWSETTINGS_H
|
||
|
|
||
|
#include <QObject>
|
||
|
#include <QVariant>
|
||
|
#include <QMetaEnum>
|
||
|
#include <QtDebug>
|
||
|
#include <QFile>
|
||
|
#include <QStandardPaths>
|
||
|
#include <QJsonDocument>
|
||
|
#include <ScStw.hpp>
|
||
|
|
||
|
class ScStwSettings : public QObject
|
||
|
{
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
explicit ScStwSettings(QObject *parent = nullptr);
|
||
|
|
||
|
/*!
|
||
|
* \brief The BaseStationSetting enum contains all settings of the base station that can be changed by a client
|
||
|
*
|
||
|
* \see ScStw::baseStationSettingFromInt()
|
||
|
* \see ScStw::baseStationSettingToString()
|
||
|
* \see ScStw::baseStationSettingFromString()
|
||
|
* \see ScStw::baseStationSettings
|
||
|
*/
|
||
|
enum BaseStationSetting {
|
||
|
InvalidSetting = -1,
|
||
|
ReadySoundEnableSetting,
|
||
|
ReadySoundDelaySetting,
|
||
|
AtYourMarksSoundEnableSetting,
|
||
|
AtYourMarksSoundDelaySetting,
|
||
|
SoundVolumeSetting
|
||
|
};
|
||
|
|
||
|
Q_ENUM(BaseStationSetting)
|
||
|
|
||
|
QVariant readSetting(BaseStationSetting key);
|
||
|
bool writeSetting(BaseStationSetting key, QVariant value);
|
||
|
void setDefaultSetting(BaseStationSetting key, QVariant defaultVariant);
|
||
|
|
||
|
static BaseStationSetting keyFromInt(int i) {
|
||
|
QMetaEnum enumeration = QMetaEnum::fromType<BaseStationSetting>();
|
||
|
return static_cast<BaseStationSetting>(enumeration.keyToValue(enumeration.valueToKey(i)));
|
||
|
}
|
||
|
|
||
|
protected:
|
||
|
QVariant readSetting(QString key);
|
||
|
bool writeSetting(QString key, QVariant value, int keyInt,int keyLevel = -1);
|
||
|
void setDefaultSetting(QString key, QVariant defaultVariant, int keyInt,int keyLevel = -1);
|
||
|
|
||
|
private:
|
||
|
QFile * settingsFile;
|
||
|
QVariantMap settingsCache;
|
||
|
|
||
|
bool loadSettingsFromFile();
|
||
|
|
||
|
private slots:
|
||
|
bool writeSettingsToFile();
|
||
|
|
||
|
signals:
|
||
|
void settingChanged(int key, int keyLevel);
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif // SCSTWSETTINGS_H
|