From f81711e0de29e317716c0b0c6d45e443df795f11 Mon Sep 17 00:00:00 2001 From: Marc Flerackers Date: Thu, 23 Jan 2003 15:35:12 +0000 Subject: [PATCH] Added the virtual function BSlider::SetLimits git-svn-id: file:///srv/svn/repos/haiku/trunk/current@2541 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- headers/os/interface/Slider.h | 476 +++++++++++++++++----------------- src/kits/interface/Slider.cpp | 9 +- 2 files changed, 247 insertions(+), 238 deletions(-) diff --git a/headers/os/interface/Slider.h b/headers/os/interface/Slider.h index 9b08c47e72..b5e5b4facf 100644 --- a/headers/os/interface/Slider.h +++ b/headers/os/interface/Slider.h @@ -1,237 +1,239 @@ -//------------------------------------------------------------------------------ -// Copyright (c) 2001-2002, OpenBeOS -// -// Permission is hereby granted, free of charge, to any person obtaining a -// copy of this software and associated documentation files (the "Software"), -// to deal in the Software without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Software, and to permit persons to whom the -// Software is furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -// DEALINGS IN THE SOFTWARE. -// -// File Name: Button.h -// Author: Marc Flerackers (mflerackers@androme.be) -// Description: BSlider creates and displays a sliding thumb control. -//------------------------------------------------------------------------------ - -#ifndef _SLIDER_H -#define _SLIDER_H - -// Standard Includes ----------------------------------------------------------- - -// System Includes ------------------------------------------------------------- -#include -#include - -// Project Includes ------------------------------------------------------------ - -// Local Includes -------------------------------------------------------------- - -// Local Defines --------------------------------------------------------------- -enum hash_mark_location { - B_HASH_MARKS_NONE = 0, - B_HASH_MARKS_TOP = 1, - B_HASH_MARKS_LEFT = 1, - B_HASH_MARKS_BOTTOM = 2, - B_HASH_MARKS_RIGHT = 2, - B_HASH_MARKS_BOTH = 3 -}; - -enum thumb_style { - B_BLOCK_THUMB, - B_TRIANGLE_THUMB -}; - -// Globals --------------------------------------------------------------------- - - -// BSlider class --------------------------------------------------------------- -class BSlider : public BControl { -public: - BSlider(BRect frame, - const char *name, - const char *label, - BMessage *message, - int32 minValue, - int32 maxValue, - thumb_style thumbType = B_BLOCK_THUMB, - uint32 resizingMode = B_FOLLOW_LEFT | - B_FOLLOW_TOP, - uint32 flags = B_NAVIGABLE | B_WILL_DRAW | - B_FRAME_EVENTS); - BSlider(BRect frame, - const char *name, - const char *label, - BMessage *message, - int32 minValue, - int32 maxValue, - orientation posture /*= B_HORIZONTAL*/, - thumb_style thumbType = B_BLOCK_THUMB, - uint32 resizingMode = B_FOLLOW_LEFT | - B_FOLLOW_TOP, - uint32 flags = B_NAVIGABLE | B_WILL_DRAW | - B_FRAME_EVENTS); -virtual ~BSlider(); - - BSlider(BMessage *data); -static BArchivable *Instantiate(BMessage *data); -virtual status_t Archive(BMessage *data, bool deep = true) const; -virtual status_t Perform(perform_code d, void *arg); - -virtual void WindowActivated(bool state); -virtual void AttachedToWindow(); -virtual void AllAttached(); -virtual void AllDetached(); -virtual void DetachedFromWindow(); - -virtual void MessageReceived(BMessage *msg); -virtual void FrameMoved(BPoint new_position); -virtual void FrameResized(float w,float h); -virtual void KeyDown(const char * bytes, int32 n); -virtual void MouseDown(BPoint); -virtual void MouseUp(BPoint pt); -virtual void MouseMoved(BPoint pt, uint32 c, const BMessage *m); -virtual void Pulse(); - -virtual void SetLabel(const char *label); -virtual void SetLimitLabels(const char *minLabel, - const char *maxLabel); - const char* MinLimitLabel() const; - const char* MaxLimitLabel() const; -virtual void SetValue(int32); -virtual int32 ValueForPoint(BPoint) const; -virtual void SetPosition(float); - float Position() const; -virtual void SetEnabled(bool on); - void GetLimits(int32 * minimum, int32 * maximum); - -virtual void Draw(BRect); -virtual void DrawSlider(); -virtual void DrawBar(); -virtual void DrawHashMarks(); -virtual void DrawThumb(); -virtual void DrawFocusMark(); -virtual void DrawText(); -virtual char* UpdateText() const; - -virtual BRect BarFrame() const; -virtual BRect HashMarksFrame() const; -virtual BRect ThumbFrame() const; - -virtual void SetFlags(uint32 flags); -virtual void SetResizingMode(uint32 mode); - -virtual void GetPreferredSize( float *width, float *height); -virtual void ResizeToPreferred(); - -virtual status_t Invoke(BMessage *msg=NULL); -virtual BHandler *ResolveSpecifier(BMessage *msg, - int32 index, - BMessage *specifier, - int32 form, - const char *property); -virtual status_t GetSupportedSuites(BMessage *data); - -virtual void SetModificationMessage(BMessage *message); - BMessage *ModificationMessage() const; - -virtual void SetSnoozeAmount(int32); - int32 SnoozeAmount() const; - -virtual void SetKeyIncrementValue(int32 value); - int32 KeyIncrementValue() const; - -virtual void SetHashMarkCount(int32 count); - int32 HashMarkCount() const; - -virtual void SetHashMarks(hash_mark_location where); - hash_mark_location HashMarks() const; - -virtual void SetStyle(thumb_style s); - thumb_style Style() const; - -virtual void SetBarColor(rgb_color); - rgb_color BarColor() const; -virtual void UseFillColor(bool, const rgb_color* c=NULL); - bool FillColor(rgb_color*) const; - - BView* OffscreenView() const; - - orientation Orientation() const; -virtual void SetOrientation(orientation); - - float BarThickness() const; -virtual void SetBarThickness(float thickness); - -virtual void SetFont(const BFont *font, uint32 properties = B_FONT_ALL); -/*----- Private or reserved -----------------------------------------*/ -private: - void _DrawBlockThumb(); - void _DrawTriangleThumb(); - - BPoint _Location() const; - void _SetLocation(BPoint p); - - float _MinPosition() const; - float _MaxPosition() const; - -//virtual void _ReservedSlider1(); -//virtual void _ReservedSlider2(); -//virtual void _ReservedSlider3(); -virtual void _ReservedSlider4(); -virtual void _ReservedSlider5(); -virtual void _ReservedSlider6(); -virtual void _ReservedSlider7(); -virtual void _ReservedSlider8(); -virtual void _ReservedSlider9(); -virtual void _ReservedSlider10(); -virtual void _ReservedSlider11(); -virtual void _ReservedSlider12(); - - BSlider &operator=(const BSlider &); - - void _InitObject(); - - BMessage* fModificationMessage; - int32 fSnoozeAmount; - - rgb_color fBarColor; - rgb_color fFillColor; - bool fUseFillColor; - - char* fMinLimitStr; - char* fMaxLimitStr; - - int32 fMinValue; - int32 fMaxValue; - int32 fKeyIncrementValue; - - int32 fHashMarkCount; - hash_mark_location fHashMarks; - - BBitmap* fOffScreenBits; - BView* fOffScreenView; - - thumb_style fStyle; - - BPoint fLocation; - BPoint fInitialLocation; - - orientation fOrientation; - float fBarThickness; - - uint32 _reserved[8]; -}; -//------------------------------------------------------------------------------ - -#endif // _SLIDER_H +//------------------------------------------------------------------------------ +// Copyright (c) 2001-2002, OpenBeOS +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the "Software"), +// to deal in the Software without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Software, and to permit persons to whom the +// Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. +// +// File Name: Slider.h +// Author: Marc Flerackers (mflerackers@androme.be) +// Description: BSlider creates and displays a sliding thumb control. +//------------------------------------------------------------------------------ + +#ifndef _SLIDER_H +#define _SLIDER_H + +// Standard Includes ----------------------------------------------------------- + +// System Includes ------------------------------------------------------------- +#include +#include + +// Project Includes ------------------------------------------------------------ + +// Local Includes -------------------------------------------------------------- + +// Local Defines --------------------------------------------------------------- +enum hash_mark_location { + B_HASH_MARKS_NONE = 0, + B_HASH_MARKS_TOP = 1, + B_HASH_MARKS_LEFT = 1, + B_HASH_MARKS_BOTTOM = 2, + B_HASH_MARKS_RIGHT = 2, + B_HASH_MARKS_BOTH = 3 +}; + +enum thumb_style { + B_BLOCK_THUMB, + B_TRIANGLE_THUMB +}; + +// Globals --------------------------------------------------------------------- + + +// BSlider class --------------------------------------------------------------- +class BSlider : public BControl { +public: + BSlider(BRect frame, + const char *name, + const char *label, + BMessage *message, + int32 minValue, + int32 maxValue, + thumb_style thumbType = B_BLOCK_THUMB, + uint32 resizingMode = B_FOLLOW_LEFT | + B_FOLLOW_TOP, + uint32 flags = B_NAVIGABLE | B_WILL_DRAW | + B_FRAME_EVENTS); + BSlider(BRect frame, + const char *name, + const char *label, + BMessage *message, + int32 minValue, + int32 maxValue, + orientation posture /*= B_HORIZONTAL*/, + thumb_style thumbType = B_BLOCK_THUMB, + uint32 resizingMode = B_FOLLOW_LEFT | + B_FOLLOW_TOP, + uint32 flags = B_NAVIGABLE | B_WILL_DRAW | + B_FRAME_EVENTS); +virtual ~BSlider(); + + BSlider(BMessage *data); +static BArchivable *Instantiate(BMessage *data); +virtual status_t Archive(BMessage *data, bool deep = true) const; +virtual status_t Perform(perform_code d, void *arg); + +virtual void WindowActivated(bool state); +virtual void AttachedToWindow(); +virtual void AllAttached(); +virtual void AllDetached(); +virtual void DetachedFromWindow(); + +virtual void MessageReceived(BMessage *msg); +virtual void FrameMoved(BPoint new_position); +virtual void FrameResized(float w,float h); +virtual void KeyDown(const char * bytes, int32 n); +virtual void MouseDown(BPoint); +virtual void MouseUp(BPoint pt); +virtual void MouseMoved(BPoint pt, uint32 c, const BMessage *m); +virtual void Pulse(); + +virtual void SetLabel(const char *label); +virtual void SetLimitLabels(const char *minLabel, + const char *maxLabel); + const char* MinLimitLabel() const; + const char* MaxLimitLabel() const; +virtual void SetValue(int32); +virtual int32 ValueForPoint(BPoint) const; +virtual void SetPosition(float); + float Position() const; +virtual void SetEnabled(bool on); + void GetLimits(int32 * minimum, int32 * maximum); + +virtual void Draw(BRect); +virtual void DrawSlider(); +virtual void DrawBar(); +virtual void DrawHashMarks(); +virtual void DrawThumb(); +virtual void DrawFocusMark(); +virtual void DrawText(); +virtual char* UpdateText() const; + +virtual BRect BarFrame() const; +virtual BRect HashMarksFrame() const; +virtual BRect ThumbFrame() const; + +virtual void SetFlags(uint32 flags); +virtual void SetResizingMode(uint32 mode); + +virtual void GetPreferredSize( float *width, float *height); +virtual void ResizeToPreferred(); + +virtual status_t Invoke(BMessage *msg=NULL); +virtual BHandler *ResolveSpecifier(BMessage *msg, + int32 index, + BMessage *specifier, + int32 form, + const char *property); +virtual status_t GetSupportedSuites(BMessage *data); + +virtual void SetModificationMessage(BMessage *message); + BMessage *ModificationMessage() const; + +virtual void SetSnoozeAmount(int32); + int32 SnoozeAmount() const; + +virtual void SetKeyIncrementValue(int32 value); + int32 KeyIncrementValue() const; + +virtual void SetHashMarkCount(int32 count); + int32 HashMarkCount() const; + +virtual void SetHashMarks(hash_mark_location where); + hash_mark_location HashMarks() const; + +virtual void SetStyle(thumb_style s); + thumb_style Style() const; + +virtual void SetBarColor(rgb_color); + rgb_color BarColor() const; +virtual void UseFillColor(bool, const rgb_color* c=NULL); + bool FillColor(rgb_color*) const; + + BView* OffscreenView() const; + + orientation Orientation() const; +virtual void SetOrientation(orientation); + + float BarThickness() const; +virtual void SetBarThickness(float thickness); + +virtual void SetFont(const BFont *font, uint32 properties = B_FONT_ALL); + +virtual void SetLimits(int32 minimum, int32 maximum); // Was _ReservedSlider4() +/*----- Private or reserved -----------------------------------------*/ +private: + void _DrawBlockThumb(); + void _DrawTriangleThumb(); + + BPoint _Location() const; + void _SetLocation(BPoint p); + + float _MinPosition() const; + float _MaxPosition() const; + +//virtual void _ReservedSlider1(); +//virtual void _ReservedSlider2(); +//virtual void _ReservedSlider3(); +//virtual void _ReservedSlider4(); +virtual void _ReservedSlider5(); +virtual void _ReservedSlider6(); +virtual void _ReservedSlider7(); +virtual void _ReservedSlider8(); +virtual void _ReservedSlider9(); +virtual void _ReservedSlider10(); +virtual void _ReservedSlider11(); +virtual void _ReservedSlider12(); + + BSlider &operator=(const BSlider &); + + void _InitObject(); + + BMessage* fModificationMessage; + int32 fSnoozeAmount; + + rgb_color fBarColor; + rgb_color fFillColor; + bool fUseFillColor; + + char* fMinLimitStr; + char* fMaxLimitStr; + + int32 fMinValue; + int32 fMaxValue; + int32 fKeyIncrementValue; + + int32 fHashMarkCount; + hash_mark_location fHashMarks; + + BBitmap* fOffScreenBits; + BView* fOffScreenView; + + thumb_style fStyle; + + BPoint fLocation; + BPoint fInitialLocation; + + orientation fOrientation; + float fBarThickness; + + uint32 _reserved[8]; +}; +//------------------------------------------------------------------------------ + +#endif // _SLIDER_H diff --git a/src/kits/interface/Slider.cpp b/src/kits/interface/Slider.cpp index 442debaa42..b39fbc9fd2 100644 --- a/src/kits/interface/Slider.cpp +++ b/src/kits/interface/Slider.cpp @@ -1002,6 +1002,13 @@ void BSlider::SetFont(const BFont *font, uint32 properties) BControl::SetFont(font, properties); } //------------------------------------------------------------------------------ +void BSlider::SetLimits(int32 minimum, int32 maximum) +{ + // TODO: Redraw + fMinValue = minimum; + fMaxValue = maximum; +} +//------------------------------------------------------------------------------ void BSlider::_DrawBlockThumb() { BRect frame = ThumbFrame(); @@ -1167,7 +1174,7 @@ float BSlider::_MaxPosition() const return BarFrame().top + 1.0f; } //------------------------------------------------------------------------------ -void BSlider::_ReservedSlider4() {} +//void BSlider::_ReservedSlider4() {} void BSlider::_ReservedSlider5() {} void BSlider::_ReservedSlider6() {} void BSlider::_ReservedSlider7() {}