Extend the generic Settings classes to support float and rect settings.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43081 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Rene Gollent 2011-11-01 21:10:24 +00:00
parent 15dbca93da
commit 12a1034a7d
2 changed files with 120 additions and 1 deletions

View File

@ -34,6 +34,23 @@ BoolSetting::DefaultValue() const
}
// #pragma mark - FloatSetting
setting_type
FloatSetting::Type() const
{
return SETTING_TYPE_FLOAT;
}
BVariant
FloatSetting::DefaultValue() const
{
return DefaultFloatValue();
}
// #pragma mark - SettingsOption
@ -71,6 +88,22 @@ RangeSetting::Type() const
}
// #pragma mark - RectSetting
setting_type
RectSetting::Type() const
{
return SETTING_TYPE_RECT;
}
BVariant
RectSetting::DefaultValue() const
{
return DefaultRectValue();
}
// #pragma mark - AbstractSetting
@ -115,6 +148,25 @@ BoolSettingImpl::DefaultBoolValue() const
}
// #pragma mark - FloatSettingImpl
FloatSettingImpl::FloatSettingImpl(const BString& id, const BString& name,
float defaultValue)
:
AbstractSetting(id, name),
fDefaultValue(defaultValue)
{
}
float
FloatSettingImpl::DefaultFloatValue() const
{
return fDefaultValue;
}
// #pragma mark - OptionsSettingImpl
@ -263,3 +315,22 @@ RangeSettingImpl::UpperBound() const
{
return fUpperBound;
}
// #pragma mark - RectSettingImpl
RectSettingImpl::RectSettingImpl(const BString& id, const BString& name,
const BRect& defaultValue)
:
AbstractSetting(id, name),
fDefaultValue(defaultValue)
{
}
BRect
RectSettingImpl::DefaultRectValue() const
{
return fDefaultValue;
}

View File

@ -1,5 +1,6 @@
/*
* Copyright 2009, Ingo Weinhold, ingo_weinhold@gmx.de.
* Copyright 2011, Rene Gollent, rene@gollent.com.
* Distributed under the terms of the MIT License.
*/
#ifndef SETTING_H
@ -15,8 +16,10 @@
enum setting_type {
SETTING_TYPE_BOOL,
SETTING_TYPE_FLOAT,
SETTING_TYPE_OPTIONS,
SETTING_TYPE_RANGE
SETTING_TYPE_RANGE,
SETTING_TYPE_RECT
};
@ -42,6 +45,16 @@ public:
};
class FloatSetting : public virtual Setting {
public:
virtual setting_type Type() const;
virtual BVariant DefaultValue() const;
virtual float DefaultFloatValue() const = 0;
};
class SettingsOption : public BReferenceable {
public:
virtual ~SettingsOption();
@ -74,6 +87,16 @@ public:
};
class RectSetting : public virtual Setting {
public:
virtual setting_type Type() const;
virtual BVariant DefaultValue() const;
virtual BRect DefaultRectValue() const = 0;
};
class AbstractSetting : public virtual Setting {
public:
AbstractSetting(const BString& id,
@ -100,6 +123,18 @@ private:
};
class FloatSettingImpl : public AbstractSetting, public FloatSetting {
public:
FloatSettingImpl(const BString& id,
const BString& name, float defaultValue);
virtual float DefaultFloatValue() const;
private:
float fDefaultValue;
};
class OptionsSettingImpl : public AbstractSetting, public OptionsSetting {
public:
OptionsSettingImpl(const BString& id,
@ -149,4 +184,17 @@ private:
};
class RectSettingImpl : public AbstractSetting, public RectSetting {
public:
RectSettingImpl(const BString& id,
const BString& name,
const BRect& defaultValue);
virtual BRect DefaultRectValue() const;
private:
BRect fDefaultValue;
};
#endif // SETTING_H