knxdisplay/main/widgets/TabPageWidget.cpp
2026-01-26 09:26:11 +01:00

44 lines
1.2 KiB
C++

#include "TabPageWidget.hpp"
#include "esp_log.h"
static const char* TAG = "TabPageWidget";
TabPageWidget::TabPageWidget(const WidgetConfig& config)
: Widget(config)
{
}
TabPageWidget::~TabPageWidget() {
}
lv_obj_t* TabPageWidget::create(lv_obj_t* parent) {
// Parent MUST be a TabView
if (!parent || !lv_obj_check_type(parent, &lv_tabview_class)) {
ESP_LOGE(TAG, "Parent of TabPage must be a TabView!");
// Fallback: create a container so we don't crash
obj_ = lv_obj_create(parent ? parent : lv_scr_act());
return obj_;
}
obj_ = lv_tabview_add_tab(parent, config_.text);
// Pages fill the parent, so x/y/w/h are ignored usually,
// but LVGL handles layout.
ESP_LOGI(TAG, "Created TabPage '%s'", config_.text);
return obj_;
}
void TabPageWidget::applyStyle() {
if (obj_ == nullptr) return;
// Pages usually transparent, but we can style them
// Don't use applyCommonStyle fully as it sets pos/size which we don't want
if (config_.bgOpacity > 0) {
lv_obj_set_style_bg_color(obj_, lv_color_make(
config_.bgColor.r, config_.bgColor.g, config_.bgColor.b), 0);
lv_obj_set_style_bg_opa(obj_, config_.bgOpacity, 0);
}
}