1 #ifndef SETTINGS_H 2 #define SETTINGS_H 3 4 #include "SettingsHandler.h" 5 6 void SetUpSettings(char* filename); 7 void QuitSettings(); 8 9 class StringValueSetting : public SettingsArgvDispatcher { 10 // simple string setting 11 public: 12 StringValueSetting(const char* name, const char* defaultValue, 13 const char* valueExpectedErrorString, 14 const char* wrongValueErrorString); 15 16 virtual ~StringValueSetting(); 17 18 void ValueChanged(const char* newValue); 19 const char* Value() const; 20 virtual const char* Handle(const char *const *argv); 21 22 protected: 23 virtual void SaveSettingValue(Settings*); 24 virtual bool NeedsSaving() const; 25 26 const char* fDefaultValue; 27 const char* fValueExpectedErrorString; 28 const char* fWrongValueErrorString; 29 char* fValue; 30 }; 31 32 33 class EnumeratedStringValueSetting : public StringValueSetting { 34 // string setting, values that do not match string enumeration 35 // are rejected 36 public: 37 EnumeratedStringValueSetting(const char* name, const char* defaultValue, 38 const char *const *values, const char* valueExpectedErrorString, 39 const char* wrongValueErrorString); 40 41 void ValueChanged(const char* newValue); 42 virtual const char* Handle(const char *const *argv); 43 44 protected: 45 const char *const *fValues; 46 char* fValue; 47 }; 48 49 50 class ScalarValueSetting : public SettingsArgvDispatcher { 51 // simple int32 setting 52 public: 53 ScalarValueSetting(const char* name, int32 defaultValue, 54 const char* valueExpectedErrorString, const char* wrongValueErrorString, 55 int32 min = LONG_MIN, int32 max = LONG_MAX); 56 57 void ValueChanged(int32 newValue); 58 int32 Value() const; 59 void GetValueAsString(char*) const; 60 virtual const char* Handle(const char *const *argv); 61 62 protected: 63 virtual void SaveSettingValue(Settings*); 64 virtual bool NeedsSaving() const; 65 66 int32 fDefaultValue; 67 int32 fValue; 68 int32 fMax; 69 int32 fMin; 70 const char* fValueExpectedErrorString; 71 const char* fWrongValueErrorString; 72 }; 73 74 class BooleanValueSetting : public ScalarValueSetting { 75 // on-off setting 76 public: 77 BooleanValueSetting(const char* name, bool defaultValue); 78 79 bool Value() const; 80 virtual const char* Handle(const char *const *argv); 81 82 protected: 83 virtual void SaveSettingValue(Settings *); 84 }; 85 86 #endif // SETTINGS_H 87