00001
00032 #ifndef LL_LLCHECKBOXCTRL_H
00033 #define LL_LLCHECKBOXCTRL_H
00034
00035
00036 #include "stdtypes.h"
00037 #include "lluictrl.h"
00038 #include "llbutton.h"
00039 #include "v4color.h"
00040 #include "llrect.h"
00041
00042
00043
00044
00045 const S32 LLCHECKBOXCTRL_BTN_SIZE = 13;
00046 const S32 LLCHECKBOXCTRL_VPAD = 2;
00047 const S32 LLCHECKBOXCTRL_HPAD = 2;
00048 const S32 LLCHECKBOXCTRL_SPACING = 5;
00049 const S32 LLCHECKBOXCTRL_HEIGHT = 16;
00050
00051
00052 #define CHECKBOXCTRL_HEIGHT LLCHECKBOXCTRL_HEIGHT
00053
00054 const BOOL RADIO_STYLE = TRUE;
00055 const BOOL CHECK_STYLE = FALSE;
00056
00057
00058
00059
00060 class LLFontGL;
00061 class LLTextBox;
00062 class LLViewBorder;
00063
00064 class LLCheckBoxCtrl
00065 : public LLUICtrl
00066 {
00067 public:
00068 LLCheckBoxCtrl(const LLString& name, const LLRect& rect, const LLString& label,
00069 const LLFontGL* font = NULL,
00070 void (*commit_callback)(LLUICtrl*, void*) = NULL,
00071 void* callback_userdata = NULL,
00072 BOOL initial_value = FALSE,
00073 BOOL use_radio_style = FALSE,
00074 const LLString& control_which = LLString::null);
00075 virtual ~LLCheckBoxCtrl();
00076
00077
00078 virtual EWidgetType getWidgetType() const { return WIDGET_TYPE_CHECKBOX; }
00079 virtual LLString getWidgetTag() const { return LL_CHECK_BOX_CTRL_TAG; }
00080 virtual LLXMLNodePtr getXML(bool save_children = true) const;
00081 static LLView* fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory);
00082
00083 virtual void setEnabled( BOOL b );
00084
00085 virtual void draw();
00086 virtual void reshape(S32 width, S32 height, BOOL called_from_parent);
00087
00088
00089 virtual void setValue(const LLSD& value );
00090 virtual LLSD getValue() const;
00091 BOOL get() { return (BOOL)getValue().asBoolean(); }
00092 void set(BOOL value) { setValue(value); }
00093
00094 virtual void setTentative(BOOL b) { mButton->setTentative(b); }
00095 virtual BOOL getTentative() const { return mButton->getTentative(); }
00096
00097 virtual BOOL setLabelArg( const LLString& key, const LLStringExplicit& text );
00098
00099 virtual void clear();
00100 virtual void onCommit();
00101
00102
00103 virtual BOOL toggle() { return mButton->toggleState(); }
00104
00105 void setEnabledColor( const LLColor4 &color ) { mTextEnabledColor = color; }
00106 void setDisabledColor( const LLColor4 &color ) { mTextDisabledColor = color; }
00107
00108 void setLabel( const LLStringExplicit& label );
00109 LLString getLabel() const;
00110
00111 virtual void setControlName(const LLString& control_name, LLView* context);
00112 virtual LLString getControlName() const;
00113
00114 static void onButtonPress(void *userdata);
00115
00116 virtual BOOL isDirty() const;
00117 virtual void resetDirty();
00118
00119 protected:
00120
00121 LLButton* mButton;
00122 LLTextBox* mLabel;
00123 const LLFontGL* mFont;
00124 LLColor4 mTextEnabledColor;
00125 LLColor4 mTextDisabledColor;
00126 BOOL mRadioStyle;
00127 BOOL mInitialValue;
00128 BOOL mSetValue;
00129 BOOL mKeyboardFocusOnClick;
00130 LLViewBorder* mBorder;
00131 };
00132
00133
00134
00135
00136 #define LLCheckboxCtrl LLCheckBoxCtrl
00137
00138
00139 #endif // LL_LLCHECKBOXCTRL_H