// 18 november 2015
#include "uipriv_haiku.hpp"

struct uiEntry {
	uiHaikuControl c;
	BTextControl *tc;
	void (*onChanged)(uiEntry *, void *);
	void *onChangedData;
};

uiHaikuDefineControl(
	uiEntry,								// type name
	uiEntryType,							// type function
	tc									// handle
)

#define mEntryChanged 0x60FE60FE

static void defaultOnChanged(uiEntry *e, void *data)
{
	// do nothing
}

char *uiEntryText(uiEntry *e)
{
	return uiHaikuStrdupText(e->tc->Text());
}

void uiEntrySetText(uiEntry *e, const char *text)
{
	// TODO does this send a message?
	e->tc->SetText(text);
}

void uiEntryOnChanged(uiEntry *e, void (*f)(uiEntry *e, void *data), void *data)
{
	e->onChanged = f;
	e->onChangedData = data;
}

int uiEntryReadOnly(uiEntry *e)
{
	// TODO
	return 0;
}

void uiEntrySetReadOnly(uiEntry *e, int readonly)
{
	// TODO
}

uiEntry *uiNewEntry(void)
{
	uiEntry *e;

	e = (uiEntry *) uiNewControl(uiEntryType());

	e->tc = new BTextControl(NULL, "", new BMessage(mEntryChanged));

	uiEntryOnChanged(e, defaultOnChanged, NULL);

	uiHaikuFinishNewControl(e, uiEntry);

	return e;
}