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