static text: uses now LVGL label directly

This commit is contained in:
Raphael Coeffic
2022-06-11 15:13:11 +02:00
committed by Raphael Coeffic
parent 502b37a19a
commit 475d068521
2 changed files with 55 additions and 43 deletions
+50
View File
@@ -20,3 +20,53 @@
#include "static.h"
#include "font.h"
StaticText::StaticText(Window* parent, const rect_t& rect, std::string txt,
WindowFlags windowFlags, LcdFlags textFlags) :
Window(parent, rect, windowFlags, textFlags, lv_label_create),
text(std::move(txt))
{
lv_label_set_text(lvobj, text.c_str());
lv_obj_clear_flag(lvobj, LV_OBJ_FLAG_CLICK_FOCUSABLE);
lv_obj_set_style_text_font(lvobj, LV_FONT_DEFAULT, LV_PART_MAIN);
lv_obj_set_style_text_color(lvobj, makeLvColor(textFlags), LV_PART_MAIN);
if (textFlags & CENTERED)
lv_obj_set_style_text_align(lvobj, LV_TEXT_ALIGN_CENTER, 0);
else if (textFlags & RIGHT)
lv_obj_set_style_text_align(lvobj, LV_TEXT_ALIGN_RIGHT, 0);
// if (textFlags & FONT(BOLD)) {
// }
if (windowFlags & BUTTON_BACKGROUND) {
lv_obj_set_style_bg_opa(lvobj, LV_OPA_100, LV_PART_MAIN);
setBackgroundColor(COLOR_THEME_SECONDARY2);
}
}
#if defined(DEBUG_WINDOWS)
std::string StaticText::getName() const
{
return "StaticText \"" + text + "\"";
}
#endif
void StaticText::setText(std::string value)
{
if (text != value) {
text = std::move(value);
lv_label_set_text(lvobj, text.c_str());
}
}
void StaticText::setBackgroundColor(LcdFlags color)
{
bgColor = color;
auto actualColor = COLOR_VAL(bgColor);
lv_obj_set_style_bg_color(
lvobj,
lv_color_make(GET_RED(actualColor), GET_GREEN(actualColor),
GET_BLUE(actualColor)),
LV_PART_MAIN);
}
+5 -43
View File
@@ -25,55 +25,17 @@
class StaticText: public Window
{
public:
StaticText(Window * parent, const rect_t & rect, std::string text = "", WindowFlags windowFlags = 0, LcdFlags textFlags = 0) :
Window(parent, rect, windowFlags, textFlags),
text(std::move(text))
{
label = lv_label_create(lvobj);
lv_label_set_text(label, this->text.c_str());
lv_obj_clear_flag(label, LV_OBJ_FLAG_CLICK_FOCUSABLE);
lv_obj_clear_flag(lvobj, LV_OBJ_FLAG_CLICK_FOCUSABLE);
lv_obj_set_style_text_font(lvobj, &lv_font_roboto_13, LV_PART_MAIN);
lv_obj_set_style_text_color(label, makeLvColor(textFlags), LV_PART_MAIN);
if (textFlags & CENTERED)
lv_obj_center(label);
else if (textFlags & RIGHT)
lv_obj_align(label, LV_ALIGN_TOP_RIGHT, 0, 0);
if (textFlags & FONT(BOLD)) {
}
if (windowFlags & BUTTON_BACKGROUND) {
lv_obj_set_style_bg_opa(lvobj, LV_OPA_100, LV_PART_MAIN);
setBackgroundColor(COLOR_THEME_SECONDARY2);
}
}
StaticText(Window *parent, const rect_t &rect, std::string text = "",
WindowFlags windowFlags = 0, LcdFlags textFlags = 0);
#if defined(DEBUG_WINDOWS)
std::string getName() const override
{
return "StaticText \"" + text + "\"";
}
std::string getName() const override;
#endif
void setText(std::string value)
{
if (text != value) {
text = std::move(value);
lv_label_set_text(label, this->text.c_str());
}
}
void setBackgroundColor(LcdFlags color)
{
bgColor = color;
auto actualColor = COLOR_VAL(bgColor);
lv_obj_set_style_bg_color(lvobj, lv_color_make(GET_RED(actualColor), GET_GREEN(actualColor), GET_BLUE(actualColor)), LV_PART_MAIN);
}
void setText(std::string value);
void setBackgroundColor(LcdFlags color);
protected:
lv_obj_t *label = nullptr;
std::string text;
LcdFlags bgColor = 0;
};