From b4368fe120a2608cd6dbbe51a0dd708bf6b5faa9 Mon Sep 17 00:00:00 2001 From: Raphael Coeffic Date: Mon, 5 Sep 2022 10:31:10 +0200 Subject: [PATCH] checkbox: add update() method (#62) --- radio/src/thirdparty/libopenui/src/checkbox.cpp | 9 ++++++++- radio/src/thirdparty/libopenui/src/checkbox.h | 2 ++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/radio/src/thirdparty/libopenui/src/checkbox.cpp b/radio/src/thirdparty/libopenui/src/checkbox.cpp index 0f3480945..708718c99 100644 --- a/radio/src/thirdparty/libopenui/src/checkbox.cpp +++ b/radio/src/thirdparty/libopenui/src/checkbox.cpp @@ -45,12 +45,19 @@ CheckBox::CheckBox(Window* parent, const rect_t& rect, lv_obj_set_style_bg_color(lvobj, makeLvColor(COLOR_THEME_DISABLED), LV_PART_MAIN); lv_obj_set_style_bg_color(lvobj, makeLvColor(COLOR_THEME_DISABLED), LV_STATE_FOCUSED); - if (_getValue && _getValue()) lv_obj_add_state(lvobj, LV_STATE_CHECKED); + update(); lv_obj_add_event_cb(lvobj, checkbox_event_handler, LV_EVENT_VALUE_CHANGED, this); } +void CheckBox::update() const +{ + if (!_getValue) return; + if (_getValue()) lv_obj_add_state(lvobj, LV_STATE_CHECKED); + else lv_obj_clear_state(lvobj, LV_STATE_CHECKED); +} + void CheckBox::onClicked() { // prevent FormField::onClicked() diff --git a/radio/src/thirdparty/libopenui/src/checkbox.h b/radio/src/thirdparty/libopenui/src/checkbox.h index 46b260890..7600c7225 100644 --- a/radio/src/thirdparty/libopenui/src/checkbox.h +++ b/radio/src/thirdparty/libopenui/src/checkbox.h @@ -51,6 +51,8 @@ class CheckBox : public FormField _getValue = std::move(handler); } + void update() const; + protected: std::string label; std::function _getValue;