// 18 november 2015 #include "uipriv_haiku.hpp" // TODOs // - checkbox text isn't aligned with the checkbox struct uiCheckbox { uiHaikuControl c; BCheckBox *checkbox; void (*onToggled)(uiCheckbox *, void *); void *onToggledData; }; uiHaikuDefineControl( uiCheckbox, // type name uiCheckboxType, // type function checkbox // handle ) #define mCheckboxToggled 0x4E714E71 static void defaultOnToggled(uiCheckbox *c, void *data) { // do nothing } char *uiCheckboxText(uiCheckbox *c) { // TODO not on api.haiku-os.org? or is this not right? return uiHaikuStrdupText(c->checkbox->Label()); } void uiCheckboxSetText(uiCheckbox *c, const char *text) { // TODO not on api.haiku-os.org? or is this not right? c->checkbox->SetLabel(text); } void uiCheckboxOnToggled(uiCheckbox *c, void (*f)(uiCheckbox *c, void *data), void *data) { c->onToggled = f; c->onToggledData = data; } int uiCheckboxChecked(uiCheckbox *c) { return c->checkbox->Value() != B_CONTROL_OFF; } void uiCheckboxSetChecked(uiCheckbox *c, int checked) { int32 value; value = B_CONTROL_OFF; if (checked) value = B_CONTROL_ON; // TODO does this trigger an event? c->checkbox->SetValue(value); } uiCheckbox *uiNewCheckbox(const char *text) { uiCheckbox *c; c = (uiCheckbox *) uiNewControl(uiCheckboxType()); c->checkbox = new BCheckBox(text, new BMessage(mCheckboxToggled)); uiCheckboxOnToggled(c, defaultOnToggled, NULL); uiHaikuFinishNewControl(c, uiCheckbox); return c; }