00001 #ifndef _SLIDER_HORIZONTAL_H_ 00002 #define _SLIDER_HORIZONTAL_H_ 00003 00004 #include <nds.h> 00005 #include "gadget.h" 00006 #include "gadgeteventhandler.h" 00007 #include "sliderbase.h" 00008 00009 namespace WoopsiUI { 00010 00011 class SliderHorizontalGrip; 00012 00018 class SliderHorizontal : public SliderBase, public Gadget, public GadgetEventHandler { 00019 00020 public: 00021 00029 SliderHorizontal(s16 x, s16 y, u16 width, u16 height); 00030 00035 inline const s16 getMinimumValue() const { return _minimumValue; }; 00036 00041 inline const s16 getMaximumValue() const { return _maximumValue; }; 00042 00047 inline const s16 getValue() const { return _value >> 16; }; 00048 00056 inline const s16 getPageSize() const { return _pageSize; }; 00057 00062 inline void setMinimumValue(const s16 value) { 00063 _minimumValue = value; 00064 _contentSize = _maximumValue - _minimumValue + 1; 00065 resizeGrip(); 00066 }; 00067 00072 inline void setMaximumValue(const s16 value) { 00073 _maximumValue = value; 00074 _contentSize = _maximumValue - _minimumValue + 1; 00075 resizeGrip(); 00076 }; 00077 00083 void setValue(const s16 value); 00084 00092 void setValueWithBitshift(const s32 value); 00093 00099 inline void setPageSize(const s16 pageSize) { 00100 _pageSize = pageSize; 00101 resizeGrip(); 00102 }; 00103 00108 virtual void handleDragEvent(const GadgetEventArgs& e); 00109 00116 s16 getMinimumStep() const; 00117 00118 protected: 00119 SliderHorizontalGrip* _grip; 00120 s16 _minimumValue; 00121 s16 _maximumValue; 00122 s32 _value; 00123 s16 _minimumGripWidth; 00124 s16 _pageSize; 00125 s32 _gutterWidth; 00127 u32 _contentSize; 00137 s32 getPhysicalMaximumValueWithBitshift() const; 00138 00143 const s32 getGripValue() const; 00144 00151 virtual void drawContents(GraphicsPort* port); 00152 00159 virtual void drawBorder(GraphicsPort* port); 00160 00166 virtual void onResize(u16 width, u16 height); 00167 00173 virtual void onClick(s16 x, s16 y); 00174 00178 virtual inline ~SliderHorizontal() { }; 00179 00183 inline SliderHorizontal(const SliderHorizontal& sliderHorizontal) : Gadget(sliderHorizontal) { }; 00184 00188 void resizeGrip(); 00189 }; 00190 } 00191 00192 #endif