#ifndef SCSTWSETTINGS_H #define SCSTWSETTINGS_H #include #include #include #include #include #include #include #include #include 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) enum KeyLevelEnum { KeyLevel = 0 }; Q_ENUM(KeyLevelEnum) Q_INVOKABLE QVariant readSetting(BaseStationSetting key); Q_INVOKABLE bool writeSetting(BaseStationSetting key, QVariant value); Q_INVOKABLE void setDefaultSetting(BaseStationSetting key, QVariant defaultVariant); static BaseStationSetting keyFromInt(int i) { QMetaEnum enumeration = QMetaEnum::fromType(); return static_cast(enumeration.keyToValue(enumeration.valueToKey(i))); } protected: virtual QVariant readSetting(QString key, int keyInt = -1, int keyLevel = -1); virtual bool writeSetting(QString key, QVariant value, int keyInt = -1,int keyLevel = -1); virtual 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