From 6341d0d530896a9699c2860da2e3c706cbe0c5f2 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 28 Oct 2019 18:00:11 +0100 Subject: [PATCH] Model Select cosmetics --- radio/src/thirdparty/libopenui/src/textedit.cpp | 8 +++----- radio/src/thirdparty/libopenui/src/textedit.h | 17 ++++++++++++++++- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/radio/src/thirdparty/libopenui/src/textedit.cpp b/radio/src/thirdparty/libopenui/src/textedit.cpp index 638a6a337..fd8886f44 100644 --- a/radio/src/thirdparty/libopenui/src/textedit.cpp +++ b/radio/src/thirdparty/libopenui/src/textedit.cpp @@ -135,14 +135,13 @@ void TextEdit::onEvent(event_t event) invalidate(); } else { - trim(); + changeEnd(); FormField::onEvent(event); } break; case EVT_KEY_BREAK(KEY_EXIT): - cursorPos = 0; - trim(); + changeEnd(); FormField::onEvent(event); break; @@ -211,8 +210,7 @@ void TextEdit::onFocusLost() TextKeyboard::hide(); #endif - trim(); - cursorPos = 0; + changeEnd(); // TODO storageDirty(...); FormField::onFocusLost(); diff --git a/radio/src/thirdparty/libopenui/src/textedit.h b/radio/src/thirdparty/libopenui/src/textedit.h index 0ab93e928..90f316169 100644 --- a/radio/src/thirdparty/libopenui/src/textedit.h +++ b/radio/src/thirdparty/libopenui/src/textedit.h @@ -26,13 +26,14 @@ class TextEdit : public FormField { friend class TextKeyboard; public: - TextEdit(Window * parent, const rect_t &rect, char * value, uint8_t length, LcdFlags flags = 0) : + TextEdit(Window * parent, const rect_t & rect, char * value, uint8_t length, LcdFlags flags = 0) : FormField(parent, rect), value(value), length(length) { } + #if defined(DEBUG_WINDOWS) std::string getName() override { @@ -40,6 +41,11 @@ class TextEdit : public FormField { } #endif + void setChangeHandler(std::function handler) + { + changeHandler = handler; + } + uint8_t getMaxLength() { return length; @@ -64,9 +70,18 @@ class TextEdit : public FormField { char * value; uint8_t length; uint8_t cursorPos = 0; + std::function changeHandler = nullptr; void trim(); + void changeEnd() + { + cursorPos = 0; + trim(); + if (changeHandler) + changeHandler(); + } + static uint8_t getNextChar(uint8_t c) { if (c == ' ' || c == 0)