xref: /haiku/src/apps/codycam/Settings.h (revision d9cebac2b77547b7064f22497514eecd2d047160)
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