#ifndef SCSTWSETTINGS_H #define SCSTWSETTINGS_H #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) 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(); return static_cast(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