diff --git a/radio/src/thirdparty/libopenui/src/bitmapbuffer.h b/radio/src/thirdparty/libopenui/src/bitmapbuffer.h index 526f31915..ce3f05fc0 100644 --- a/radio/src/thirdparty/libopenui/src/bitmapbuffer.h +++ b/radio/src/thirdparty/libopenui/src/bitmapbuffer.h @@ -333,10 +333,9 @@ class BitmapBuffer: public BitmapBufferBase return drawSizedText(x, y, s, strlen(s), flags); } - coord_t drawTextAtIndex(coord_t x, coord_t y, const char * s, uint8_t idx, LcdFlags flags = 0) + coord_t drawTextAtIndex(coord_t x, coord_t y, const char** s, uint8_t idx, LcdFlags flags = 0) { - char length = *s++; - return drawSizedText(x, y, s+length*idx, length, flags); + return drawText(x, y, s[idx], flags); } static void formatNumberAsString(char *buffer, const uint8_t buffer_size, int32_t val, LcdFlags flags = 0, uint8_t len = 0, const char * prefix = nullptr, const char * suffix = nullptr); diff --git a/radio/src/thirdparty/libopenui/src/choice.h b/radio/src/thirdparty/libopenui/src/choice.h index 710990572..b54d57676 100644 --- a/radio/src/thirdparty/libopenui/src/choice.h +++ b/radio/src/thirdparty/libopenui/src/choice.h @@ -48,18 +48,31 @@ class ChoiceBase : public FormField class Choice: public ChoiceBase { public: - Choice(FormGroup * parent, const rect_t & rect, int vmin, int vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); - Choice(FormGroup * parent, const rect_t & rect, std::vector values, int vmin, int vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); - Choice(FormGroup * parent, const rect_t & rect, const char * const values[], int vmin, int vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); - Choice(FormGroup * parent, const rect_t & rect, const char * values, int vmin, int vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); + Choice(FormGroup *parent, const rect_t &rect, int vmin, int vmax, + std::function getValue, + std::function setValue = nullptr, + WindowFlags windowFlags = 0); + Choice(FormGroup *parent, const rect_t &rect, + std::vector values, int vmin, int vmax, + std::function getValue, + std::function setValue = nullptr, + WindowFlags windowFlags = 0); + Choice(FormGroup *parent, const rect_t &rect, const char *const values[], + int vmin, int vmax, std::function getValue, + std::function setValue = nullptr, + WindowFlags windowFlags = 0); + Choice(FormGroup *parent, const rect_t &rect, const char *values, int vmin, + int vmax, std::function getValue, + std::function setValue = nullptr, + WindowFlags windowFlags = 0); - void addValue(const char * value); + void addValue(const char *value); - void addValues(const char * const values[], uint8_t count); + void addValues(const char *const values[], uint8_t count); - void setValues(std::vector values); + void setValues(std::vector values); - void setValues(const char * const values[]); + void setValues(const char *const values[]); #if defined(DEBUG_WINDOWS) std::string getName() const override diff --git a/radio/src/thirdparty/libopenui/src/libopenui_helpers.h b/radio/src/thirdparty/libopenui/src/libopenui_helpers.h index a5914a95a..be7a1ad96 100644 --- a/radio/src/thirdparty/libopenui/src/libopenui_helpers.h +++ b/radio/src/thirdparty/libopenui/src/libopenui_helpers.h @@ -79,10 +79,9 @@ inline T sgn(T a) } // TODO duplicated code -inline std::string TEXT_AT_INDEX(const char * val, uint8_t idx) +inline std::string TEXT_AT_INDEX(const char** val, uint8_t idx) { - const char * start = val + 1 + idx * val[0]; - return std::string(start, min(val[0], (uint8_t)strlen(start))); + return std::string(val[idx]); } inline const char * findNextLine(const char * stack)