44 lines
1.2 KiB
C++
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);
|
|
}
|
|
}
|