From 12a1034a7ded9c96d2f8fb03760b15c9dc72c98e Mon Sep 17 00:00:00 2001 From: Rene Gollent Date: Tue, 1 Nov 2011 21:10:24 +0000 Subject: [PATCH] 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 --- .../debugger/settings/generic/Setting.cpp | 71 +++++++++++++++++++ src/apps/debugger/settings/generic/Setting.h | 50 ++++++++++++- 2 files changed, 120 insertions(+), 1 deletion(-) diff --git a/src/apps/debugger/settings/generic/Setting.cpp b/src/apps/debugger/settings/generic/Setting.cpp index f8390e0247..f704699270 100644 --- a/src/apps/debugger/settings/generic/Setting.cpp +++ b/src/apps/debugger/settings/generic/Setting.cpp @@ -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; +} diff --git a/src/apps/debugger/settings/generic/Setting.h b/src/apps/debugger/settings/generic/Setting.h index f434008a5f..e779451f00 100644 --- a/src/apps/debugger/settings/generic/Setting.h +++ b/src/apps/debugger/settings/generic/Setting.h @@ -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