Implemented uiCheckbox and uiEntry on Haiku. Still no event handling.
This commit is contained in:
parent
278c973ae5
commit
b23de8794e
|
@ -1,42 +1,61 @@
|
|||
// 18 november 2015
|
||||
#include "uipriv_haiku.hpp"
|
||||
|
||||
// TODOs
|
||||
// - checkbox text isn't aligned with the checkbox
|
||||
|
||||
struct uiCheckbox {
|
||||
uiHaikuControl c;
|
||||
BStringView *dummy;
|
||||
BCheckBox *checkbox;
|
||||
void (*onToggled)(uiCheckbox *, void *);
|
||||
void *onToggledData;
|
||||
};
|
||||
|
||||
uiHaikuDefineControl(
|
||||
uiCheckbox, // type name
|
||||
uiCheckboxType, // type function
|
||||
dummy // handle
|
||||
checkbox // handle
|
||||
)
|
||||
|
||||
#define mCheckboxToggled 0x4E714E71
|
||||
|
||||
static void defaultOnToggled(uiCheckbox *c, void *data)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
char *uiCheckboxText(uiCheckbox *c)
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
// 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
|
||||
// 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)
|
||||
{
|
||||
// TODO
|
||||
c->onToggled = f;
|
||||
c->onToggledData = data;
|
||||
}
|
||||
|
||||
int uiCheckboxChecked(uiCheckbox *c)
|
||||
{
|
||||
// TODO
|
||||
return 0;
|
||||
return c->checkbox->Value() != B_CONTROL_OFF;
|
||||
}
|
||||
|
||||
void uiCheckboxSetChecked(uiCheckbox *c, int checked)
|
||||
{
|
||||
// TODO
|
||||
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)
|
||||
|
@ -45,8 +64,9 @@ uiCheckbox *uiNewCheckbox(const char *text)
|
|||
|
||||
c = (uiCheckbox *) uiNewControl(uiCheckboxType());
|
||||
|
||||
c->dummy = new BStringView(BRect(0, 0, 1, 1), NULL,
|
||||
"TODO uiCheckbox not implemented");
|
||||
c->checkbox = new BCheckBox(text, new BMessage(mCheckboxToggled));
|
||||
|
||||
uiCheckboxOnToggled(c, defaultOnToggled, NULL);
|
||||
|
||||
uiHaikuFinishNewControl(c, uiCheckbox);
|
||||
|
||||
|
|
|
@ -3,29 +3,39 @@
|
|||
|
||||
struct uiEntry {
|
||||
uiHaikuControl c;
|
||||
BStringView *dummy;
|
||||
BTextControl *tc;
|
||||
void (*onChanged)(uiEntry *, void *);
|
||||
void *onChangedData;
|
||||
};
|
||||
|
||||
uiHaikuDefineControl(
|
||||
uiEntry, // type name
|
||||
uiEntryType, // type function
|
||||
dummy // handle
|
||||
tc // handle
|
||||
)
|
||||
|
||||
#define mEntryChanged 0x60FE60FE
|
||||
|
||||
static void defaultOnChanged(uiEntry *e, void *data)
|
||||
{
|
||||
// do nothing
|
||||
}
|
||||
|
||||
char *uiEntryText(uiEntry *e)
|
||||
{
|
||||
// TODO
|
||||
return NULL;
|
||||
return uiHaikuStrdupText(e->tc->Text());
|
||||
}
|
||||
|
||||
void uiEntrySetText(uiEntry *e, const char *text)
|
||||
{
|
||||
// TODO
|
||||
// TODO does this send a message?
|
||||
e->tc->SetText(text);
|
||||
}
|
||||
|
||||
void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data)
|
||||
{
|
||||
// TODO
|
||||
e->onChanged = f;
|
||||
e->onChangedData = data;
|
||||
}
|
||||
|
||||
int uiEntryReadOnly(uiEntry *e)
|
||||
|
@ -45,8 +55,9 @@ uiEntry *uiNewEntry(void)
|
|||
|
||||
e = (uiEntry *) uiNewControl(uiEntryType());
|
||||
|
||||
e->dummy = new BStringView(BRect(0, 0, 1, 1), NULL,
|
||||
"TODO uiEntry not implemented");
|
||||
e->tc = new BTextControl(NULL, "", new BMessage(mEntryChanged));
|
||||
|
||||
uiEntryOnChanged(e, defaultOnChanged, NULL);
|
||||
|
||||
uiHaikuFinishNewControl(e, uiEntry);
|
||||
|
||||
|
|
Loading…
Reference in New Issue