Added "on_check" XUI parameter for checkboxes

Ansariel 2012-10-15 17:15:11 +02:00
parent b80860e244
commit ef7deefaef
2 changed files with 42 additions and 0 deletions

View File

@ -53,6 +53,9 @@ LLCheckBoxCtrl::Params::Params()
: initial_value("initial_value", false),
label_text("label_text"),
check_button("check_button"),
// <FS:Ansariel> on_check callback parameter
on_check("on_check"),
// </FS:Ansariel>
radio_style("radio_style")
{}
@ -116,6 +119,13 @@ LLCheckBoxCtrl::LLCheckBoxCtrl(const LLCheckBoxCtrl::Params& p)
mButton = LLUICtrlFactory::create<LLButton>(params);
addChild(mButton);
// <FS:Ansariel> on_check callback parameter
if (p.on_check.isProvided())
{
setCheckCallback(initEnableCallback(p.on_check));
}
// </FS:Ansariel>
}
LLCheckBoxCtrl::~LLCheckBoxCtrl()
@ -250,3 +260,19 @@ void LLCheckBoxCtrl::resetDirty()
mButton->resetDirty();
}
}
// <FS:Ansariel> on_check callback parameter
// virtual
void LLCheckBoxCtrl::draw()
{
if (!mCheckSignal.empty())
{
bool checked = mCheckSignal(this, LLSD());
if (getValue().asBoolean() != checked)
{
setValue(checked);
}
}
LLUICtrl::draw();
}
// </FS:Ansariel>

View File

@ -57,6 +57,10 @@ public:
Optional<LLTextBox::Params> label_text;
Optional<LLButton::Params> check_button;
// <FS:Ansariel> on_check callback parameter
Optional<EnableCallbackParam> on_check;
// </FS:Ansariel>
Ignored radio_style;
Params();
@ -108,6 +112,18 @@ public:
virtual BOOL isDirty() const; // Returns TRUE if the user has modified this control.
virtual void resetDirty(); // Clear dirty state
// <FS:Ansariel> on_check callback parameter
virtual void draw();
boost::signals2::connection setCheckCallback( const enable_signal_t::slot_type& cb )
{
return mCheckSignal.connect(cb);
}
private:
enable_signal_t mCheckSignal;
// </FS:Ansariel>
protected:
// note: value is stored in toggle state of button
LLButton* mButton;