Choice cosmetics

This commit is contained in:
Bertrand Songis
2020-05-07 11:18:52 +02:00
parent 77900db310
commit 0e395e0e39
2 changed files with 28 additions and 13 deletions
+22 -11
View File
@@ -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<std::string> 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<std::string> 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);
+6 -2
View File
@@ -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<int16_t()> getValue, std::function<void(int16_t)> setValue = nullptr, WindowFlags windowFlags = 0);
Choice(FormGroup * parent, const rect_t & rect, const char * values, int16_t vmin, int16_t vmax, std::function<int16_t()> getValue, std::function<void(int16_t)> 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<std::string> values);
void setValues(const char * const values[]);
#if defined(DEBUG_WINDOWS)
std::string getName() const override