Make UEFI boot-platform build again
[haiku.git] / headers / private / debugger / settings / generic / Setting.h
blob3a1a1c2ddbe29b01335af2aa9fc860eee138adeb
1 /*
2 * Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
3 * Copyright 2011-2016, Rene Gollent, rene@gollent.com.
4 * Distributed under the terms of the MIT License.
5 */
6 #ifndef SETTING_H
7 #define SETTING_H
10 #include <String.h>
12 #include <ObjectList.h>
13 #include <Referenceable.h>
14 #include <Variant.h>
17 enum setting_type {
18 SETTING_TYPE_BOOL,
19 SETTING_TYPE_FLOAT,
20 SETTING_TYPE_OPTIONS,
21 SETTING_TYPE_BOUNDED,
22 SETTING_TYPE_RANGE,
23 SETTING_TYPE_RECT,
24 SETTING_TYPE_STRING
28 class Setting : public BReferenceable {
29 public:
30 virtual ~Setting();
32 virtual setting_type Type() const = 0;
33 virtual const char* ID() const = 0;
34 virtual const char* Name() const = 0;
36 virtual BVariant DefaultValue() const = 0;
40 class BoolSetting : public virtual Setting {
41 public:
42 virtual setting_type Type() const;
44 virtual BVariant DefaultValue() const;
46 virtual bool DefaultBoolValue() const = 0;
50 class FloatSetting : public virtual Setting {
51 public:
52 virtual setting_type Type() const;
54 virtual BVariant DefaultValue() const;
56 virtual float DefaultFloatValue() const = 0;
60 class SettingsOption : public BReferenceable {
61 public:
62 virtual ~SettingsOption();
64 virtual const char* ID() const = 0;
65 virtual const char* Name() const = 0;
69 class OptionsSetting : public virtual Setting {
70 public:
71 virtual setting_type Type() const;
73 virtual BVariant DefaultValue() const;
75 virtual int32 CountOptions() const = 0;
76 virtual SettingsOption* OptionAt(int32 index) const = 0;
77 virtual SettingsOption* OptionByID(const char* id) const = 0;
79 virtual SettingsOption* DefaultOption() const = 0;
83 class BoundedSetting : public virtual Setting {
84 public:
85 virtual setting_type Type() const;
87 virtual BVariant LowerBound() const = 0;
88 virtual BVariant UpperBound() const = 0;
92 class RangeSetting : public virtual BoundedSetting {
93 virtual setting_type Type() const;
95 virtual BVariant LowerValue() const = 0;
96 virtual BVariant UpperValue() const = 0;
100 class RectSetting : public virtual Setting {
101 public:
102 virtual setting_type Type() const;
104 virtual BVariant DefaultValue() const;
106 virtual BRect DefaultRectValue() const = 0;
110 class StringSetting : public virtual Setting {
111 public:
112 virtual setting_type Type() const;
114 virtual BVariant DefaultValue() const;
116 virtual const BString& DefaultStringValue() const = 0;
120 class AbstractSetting : public virtual Setting {
121 public:
122 AbstractSetting(const BString& id,
123 const BString& name);
125 virtual const char* ID() const;
126 virtual const char* Name() const;
128 private:
129 BString fID;
130 BString fName;
134 class BoolSettingImpl : public AbstractSetting, public BoolSetting {
135 public:
136 BoolSettingImpl(const BString& id,
137 const BString& name, bool defaultValue);
139 virtual bool DefaultBoolValue() const;
141 private:
142 bool fDefaultValue;
146 class FloatSettingImpl : public AbstractSetting, public FloatSetting {
147 public:
148 FloatSettingImpl(const BString& id,
149 const BString& name, float defaultValue);
151 virtual float DefaultFloatValue() const;
153 private:
154 float fDefaultValue;
158 class OptionsSettingImpl : public AbstractSetting, public OptionsSetting {
159 public:
160 OptionsSettingImpl(const BString& id,
161 const BString& name);
162 virtual ~OptionsSettingImpl();
164 virtual SettingsOption* DefaultOption() const;
166 virtual int32 CountOptions() const;
167 virtual SettingsOption* OptionAt(int32 index) const;
168 virtual SettingsOption* OptionByID(const char* id) const;
170 bool AddOption(SettingsOption* option);
171 bool AddOption(const BString& id,
172 const BString& name);
174 void SetDefaultOption(SettingsOption* option);
176 private:
177 class Option;
179 typedef BObjectList<SettingsOption> OptionList;
181 private:
182 OptionList fOptions;
183 SettingsOption* fDefaultOption;
187 class BoundedSettingImpl : public AbstractSetting, public BoundedSetting {
188 public:
189 BoundedSettingImpl(const BString& id,
190 const BString& name,
191 const BVariant& lowerBound,
192 const BVariant& upperBound,
193 const BVariant& defaultValue);
195 virtual BVariant DefaultValue() const;
197 virtual BVariant LowerBound() const;
198 virtual BVariant UpperBound() const;
200 private:
201 BVariant fLowerBound;
202 BVariant fUpperBound;
203 BVariant fDefaultValue;
207 class RangeSettingImpl : public AbstractSetting, public RangeSetting {
208 public:
209 RangeSettingImpl(const BString& id,
210 const BString& name,
211 const BVariant& lowerBound,
212 const BVariant& upperBound,
213 const BVariant& lowerValue,
214 const BVariant& upperValue);
216 virtual BVariant DefaultValue() const;
218 virtual BVariant LowerBound() const;
219 virtual BVariant UpperBound() const;
220 virtual BVariant LowerValue() const;
221 virtual BVariant UpperValue() const;
223 private:
224 BVariant fLowerBound;
225 BVariant fUpperBound;
226 BVariant fLowerValue;
227 BVariant fUpperValue;
231 class RectSettingImpl : public AbstractSetting, public RectSetting {
232 public:
233 RectSettingImpl(const BString& id,
234 const BString& name,
235 const BRect& defaultValue);
237 virtual BRect DefaultRectValue() const;
239 private:
240 BRect fDefaultValue;
244 class StringSettingImpl : public AbstractSetting, public StringSetting {
245 public:
246 StringSettingImpl(const BString& id,
247 const BString& name,
248 const BString& defaultValue);
250 virtual const BString& DefaultStringValue() const;
252 private:
253 BString fDefaultValue;
257 #endif // SETTING_H