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.
12 #include <ObjectList.h>
13 #include <Referenceable.h>
28 class Setting
: public BReferenceable
{
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
{
42 virtual setting_type
Type() const;
44 virtual BVariant
DefaultValue() const;
46 virtual bool DefaultBoolValue() const = 0;
50 class FloatSetting
: public virtual Setting
{
52 virtual setting_type
Type() const;
54 virtual BVariant
DefaultValue() const;
56 virtual float DefaultFloatValue() const = 0;
60 class SettingsOption
: public BReferenceable
{
62 virtual ~SettingsOption();
64 virtual const char* ID() const = 0;
65 virtual const char* Name() const = 0;
69 class OptionsSetting
: public virtual Setting
{
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
{
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
{
102 virtual setting_type
Type() const;
104 virtual BVariant
DefaultValue() const;
106 virtual BRect
DefaultRectValue() const = 0;
110 class StringSetting
: public virtual Setting
{
112 virtual setting_type
Type() const;
114 virtual BVariant
DefaultValue() const;
116 virtual const BString
& DefaultStringValue() const = 0;
120 class AbstractSetting
: public virtual Setting
{
122 AbstractSetting(const BString
& id
,
123 const BString
& name
);
125 virtual const char* ID() const;
126 virtual const char* Name() const;
134 class BoolSettingImpl
: public AbstractSetting
, public BoolSetting
{
136 BoolSettingImpl(const BString
& id
,
137 const BString
& name
, bool defaultValue
);
139 virtual bool DefaultBoolValue() const;
146 class FloatSettingImpl
: public AbstractSetting
, public FloatSetting
{
148 FloatSettingImpl(const BString
& id
,
149 const BString
& name
, float defaultValue
);
151 virtual float DefaultFloatValue() const;
158 class OptionsSettingImpl
: public AbstractSetting
, public OptionsSetting
{
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
);
179 typedef BObjectList
<SettingsOption
> OptionList
;
183 SettingsOption
* fDefaultOption
;
187 class BoundedSettingImpl
: public AbstractSetting
, public BoundedSetting
{
189 BoundedSettingImpl(const BString
& id
,
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;
201 BVariant fLowerBound
;
202 BVariant fUpperBound
;
203 BVariant fDefaultValue
;
207 class RangeSettingImpl
: public AbstractSetting
, public RangeSetting
{
209 RangeSettingImpl(const BString
& id
,
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;
224 BVariant fLowerBound
;
225 BVariant fUpperBound
;
226 BVariant fLowerValue
;
227 BVariant fUpperValue
;
231 class RectSettingImpl
: public AbstractSetting
, public RectSetting
{
233 RectSettingImpl(const BString
& id
,
235 const BRect
& defaultValue
);
237 virtual BRect
DefaultRectValue() const;
244 class StringSettingImpl
: public AbstractSetting
, public StringSetting
{
246 StringSettingImpl(const BString
& id
,
248 const BString
& defaultValue
);
250 virtual const BString
& DefaultStringValue() const;
253 BString fDefaultValue
;