00001 00032 #ifndef LL_LLSLIDER_H 00033 #define LL_LLSLIDER_H 00034 00035 #include "lluictrl.h" 00036 #include "v4color.h" 00037 00038 class LLUICtrlFactory; 00039 00040 class LLSlider : public LLUICtrl 00041 { 00042 public: 00043 LLSlider( 00044 const LLString& name, 00045 const LLRect& rect, 00046 void (*on_commit_callback)(LLUICtrl* ctrl, void* userdata), 00047 void* callback_userdata, 00048 F32 initial_value, 00049 F32 min_value, 00050 F32 max_value, 00051 F32 increment, 00052 BOOL volume, 00053 const LLString& control_name = LLString::null ); 00054 00055 virtual EWidgetType getWidgetType() const; 00056 virtual LLString getWidgetTag() const; 00057 virtual LLXMLNodePtr getXML(bool save_children = true) const; 00058 static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory); 00059 00060 void setValue( F32 value, BOOL from_event = FALSE ); 00061 F32 getValueF32() const; 00062 00063 virtual void setValue(const LLSD& value ) { setValue((F32)value.asReal(), TRUE); } 00064 virtual LLSD getValue() const { return LLSD(getValueF32()); } 00065 00066 virtual void setMinValue(LLSD min_value) { setMinValue((F32)min_value.asReal()); } 00067 virtual void setMaxValue(LLSD max_value) { setMaxValue((F32)max_value.asReal()); } 00068 00069 F32 getInitialValue() const { return mInitialValue; } 00070 F32 getMinValue() const { return mMinValue; } 00071 F32 getMaxValue() const { return mMaxValue; } 00072 F32 getIncrement() const { return mIncrement; } 00073 BOOL getVolumeSlider() const { return mVolumeSlider; } 00074 void setMinValue(F32 min_value) {mMinValue = min_value;} 00075 void setMaxValue(F32 max_value) {mMaxValue = max_value;} 00076 void setIncrement(F32 increment) {mIncrement = increment;} 00077 void setMouseDownCallback( void (*cb)(LLUICtrl* ctrl, void* userdata) ) { mMouseDownCallback = cb; } 00078 void setMouseUpCallback( void (*cb)(LLUICtrl* ctrl, void* userdata) ) { mMouseUpCallback = cb; } 00079 00080 virtual BOOL handleHover(S32 x, S32 y, MASK mask); 00081 virtual BOOL handleMouseUp(S32 x, S32 y, MASK mask); 00082 virtual BOOL handleMouseDown(S32 x, S32 y, MASK mask); 00083 virtual BOOL handleKeyHere(KEY key, MASK mask, BOOL called_from_parent); 00084 virtual void draw(); 00085 00086 protected: 00087 void setValueAndCommit(F32 value); 00088 00089 protected: 00090 F32 mValue; 00091 F32 mInitialValue; 00092 F32 mMinValue; 00093 F32 mMaxValue; 00094 F32 mIncrement; 00095 00096 BOOL mVolumeSlider; 00097 S32 mMouseOffset; 00098 LLRect mDragStartThumbRect; 00099 00100 LLRect mThumbRect; 00101 LLColor4 mTrackColor; 00102 LLColor4 mThumbOutlineColor; 00103 LLColor4 mThumbCenterColor; 00104 LLColor4 mDisabledThumbColor; 00105 00106 void (*mMouseDownCallback)(LLUICtrl* ctrl, void* userdata); 00107 void (*mMouseUpCallback)(LLUICtrl* ctrl, void* userdata); 00108 }; 00109 00110 #endif // LL_LLSLIDER_H