From 0e395e0e39cd0d25fc60a4786d99121edcd33468 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Thu, 7 May 2020 11:18:52 +0200 Subject: [PATCH] Choice cosmetics --- radio/src/thirdparty/libopenui/src/choice.cpp | 33 ++++++++++++------- radio/src/thirdparty/libopenui/src/choice.h | 8 +++-- 2 files changed, 28 insertions(+), 13 deletions(-) diff --git a/radio/src/thirdparty/libopenui/src/choice.cpp b/radio/src/thirdparty/libopenui/src/choice.cpp index 47d17072b..5c1559164 100644 --- a/radio/src/thirdparty/libopenui/src/choice.cpp +++ b/radio/src/thirdparty/libopenui/src/choice.cpp @@ -39,12 +39,7 @@ Choice::Choice(FormGroup * parent, const rect_t & rect, const char * const value getValue(std::move(getValue)), setValue(std::move(setValue)) { - if (values) { - auto value = &values[0]; - for (int i = vmin; i <= vmax; i++) { - this->values.emplace_back(*value++); - } - } + setValues(values); } Choice::Choice(FormGroup * parent, const rect_t & rect, std::vector values, int16_t vmin, int16_t vmax, @@ -76,20 +71,36 @@ Choice::Choice(FormGroup * parent, const rect_t & rect, const char * values, int } } -void Choice::addItem(const char * item) +void Choice::addValue(const char * value) { - values.emplace_back(item); + values.emplace_back(value); vmax += 1; } -void Choice::addItems(const char * items[], uint8_t count) +void Choice::addValues(const char * const values[], uint8_t count) { - values.reserve(values.size() + count); + this->values.reserve(this->values.size() + count); for (uint8_t i = 0; i < count; i++) - values.emplace_back(items[i]); + this->values.emplace_back(values[i]); vmax += count; } +void Choice::setValues(std::vector values) +{ + this->values = std::move(values); +} + +void Choice::setValues(const char * const values[]) +{ + this->values.clear(); + if (values) { + auto value = &values[0]; + for (int i = vmin; i <= vmax; i++) { + this->values.emplace_back(*value++); + } + } +} + void Choice::paint(BitmapBuffer * dc) { FormField::paint(dc); diff --git a/radio/src/thirdparty/libopenui/src/choice.h b/radio/src/thirdparty/libopenui/src/choice.h index 06deaef13..3141868a9 100644 --- a/radio/src/thirdparty/libopenui/src/choice.h +++ b/radio/src/thirdparty/libopenui/src/choice.h @@ -52,9 +52,13 @@ class Choice : public ChoiceBase { Choice(FormGroup * parent, const rect_t & rect, const char * const values[], int16_t vmin, int16_t vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); Choice(FormGroup * parent, const rect_t & rect, const char * values, int16_t vmin, int16_t vmax, std::function getValue, std::function setValue = nullptr, WindowFlags windowFlags = 0); - void addItem(const char * item); + void addValue(const char * value); - void addItems(const char * items[], uint8_t count); + void addValues(const char * const values[], uint8_t count); + + void setValues(std::vector values); + + void setValues(const char * const values[]); #if defined(DEBUG_WINDOWS) std::string getName() const override