1
0
mirror of https://github.com/taigrr/arduinolibs synced 2025-01-18 04:33:12 -08:00
2012-04-05 15:06:24 +10:00

72 lines
1.2 KiB
C++

#include "Field.h"
Field::Field(const String &label)
: _label(label)
, _form(0)
, next(0)
, prev(0)
{
}
Field::Field(Form &form, const String &label)
: _label(label)
, _form(0)
, next(0)
, prev(0)
{
form.addField(this);
}
Field::~Field()
{
if (_form)
_form->removeField(this);
}
int Field::dispatch(int event)
{
// Nothing to do here.
return -1;
}
void Field::enterField(bool reverse)
{
// Print the label and then position the cursor on the second line.
// We assume that the screen has just been cleared.
lcd()->print(_label);
lcd()->setCursor(0, 1);
}
void Field::exitField()
{
// Nothing to do here.
}
void Field::setLabel(const String &label)
{
if (isCurrent()) {
unsigned int prevLen = _label.length();
unsigned int newLen = label.length();
_label = label;
lcd()->setCursor(0, 0);
lcd()->print(label);
while (newLen++ < prevLen)
lcd()->write(' ');
updateCursor();
} else {
_label = label;
}
}
bool Field::isCurrent() const
{
if (!_form->isVisible())
return false;
return _form->currentField() == this;
}
void Field::updateCursor()
{
// Nothing to do here.
}