39 lines
1001 B
C++
39 lines
1001 B
C++
#include "LedWidget.hpp"
|
|
|
|
LedWidget::LedWidget(const WidgetConfig& config)
|
|
: Widget(config)
|
|
{
|
|
}
|
|
|
|
lv_obj_t* LedWidget::create(lv_obj_t* parent) {
|
|
obj_ = lv_led_create(parent);
|
|
|
|
lv_obj_set_pos(obj_, config_.x, config_.y);
|
|
if (config_.width > 0 && config_.height > 0) {
|
|
lv_obj_set_size(obj_, config_.width, config_.height);
|
|
}
|
|
|
|
return obj_;
|
|
}
|
|
|
|
void LedWidget::applyStyle() {
|
|
if (obj_ == nullptr) return;
|
|
|
|
// LED-specific styling
|
|
lv_obj_set_style_radius(obj_, LV_RADIUS_CIRCLE, 0);
|
|
lv_led_set_color(obj_, lv_color_make(
|
|
config_.bgColor.r, config_.bgColor.g, config_.bgColor.b));
|
|
lv_led_set_brightness(obj_, config_.bgOpacity);
|
|
|
|
// Shadow
|
|
applyShadowStyle();
|
|
}
|
|
|
|
void LedWidget::onKnxSwitch(bool value) {
|
|
if (obj_ == nullptr) return;
|
|
if (config_.textSource != TextSource::KNX_DPT_SWITCH) return;
|
|
|
|
uint8_t brightness = value ? (config_.bgOpacity > 0 ? config_.bgOpacity : 255) : 0;
|
|
lv_led_set_brightness(obj_, brightness);
|
|
}
|