Files
Upsilon/apps/calculation/text_field.cpp
Émilie Feral c4ac44838a calculation] Correct ans insertion and evaluation
Change-Id: I3c84735ce43453a3e88db755c283e14311d24ad9
2016-12-08 15:21:52 +01:00

37 lines
1.4 KiB
C++

#include "text_field.h"
namespace Calculation {
TextField::TextField(Responder * parentResponder, char * textBuffer, size_t textBufferSize, TextFieldDelegate * delegate) :
::TextField(parentResponder, textBuffer, textBufferSize, delegate)
{
}
bool TextField::handleEvent(Ion::Events::Event event) {
if (event == Ion::Events::Ans) {
KDSize sizePreviousText = KDText::stringSize(m_textBuffer);
insertTextAtLocation("ans", cursorLocation());
setCursorLocation(cursorLocation() + strlen("ans"));
KDSize sizeText = KDText::stringSize(m_textBuffer);
KDRect dirtyZone(sizePreviousText.width(), 0, sizeText.width()-sizePreviousText.width(), sizeText.height());
markRectAsDirty(dirtyZone);
return true;
}
if (m_currentTextLength == 0 &&
(event == Ion::Events::Multiplication ||
event == Ion::Events::Plus ||
event == Ion::Events::Minus ||
event == Ion::Events::Dot ||
event == Ion::Events::Division)) {
KDSize sizePreviousText = KDText::stringSize(m_textBuffer);
insertTextAtLocation("ans", cursorLocation());
setCursorLocation(cursorLocation() + strlen("ans"));
KDSize sizeText = KDText::stringSize(m_textBuffer);
KDRect dirtyZone(sizePreviousText.width(), 0, sizeText.width()-sizePreviousText.width(), sizeText.height());
markRectAsDirty(dirtyZone);
}
return(::TextField::handleEvent(event));
}
}