Files
trail-mate/modules/ui_shared/include/ui/menu/menu_profile.h
T
liu weikai 400c5ed996 fix(esp): reduce RAM pressure and TDeck display stalls
Tune Arduino task stacks and board env flags to recover internal RAM for BLE startup.

Avoid synchronous boot UI rendering on Arduino loopTask and move large board singletons toward PSRAM where available.

Improve TDeck/Pager display responsiveness by restoring practical LVGL DMA buffers, using SPI pixel writes, disabling transition animations, and testing TDeck display SPI at 80MHz.
2026-06-26 16:20:37 +08:00

105 lines
2.8 KiB
C++

#pragma once
#include "lvgl.h"
namespace ui::menu_profile
{
enum class LayoutVariant : uint8_t
{
CompactGrid = 0,
PagerFocus,
LargeTouchGrid,
};
enum class BadgeAnchorMode : uint8_t
{
IconTopLeft = 0,
IconTopRight,
};
enum class InputMode : uint8_t
{
EncoderPrimary = 0,
Hybrid,
TouchPrimary,
};
struct MenuLayoutProfile
{
const char* name = "default";
LayoutVariant variant = LayoutVariant::CompactGrid;
InputMode input_mode = InputMode::Hybrid;
BadgeAnchorMode badge_anchor_mode = BadgeAnchorMode::IconTopRight;
lv_coord_t card_width = 150;
lv_coord_t card_height = 120;
uint16_t icon_scale = 256;
lv_coord_t card_radius = 10;
lv_coord_t card_border_width = 2;
lv_coord_t card_pad_left = 0;
lv_coord_t card_pad_right = 0;
lv_coord_t card_pad_top = 0;
lv_coord_t card_pad_bottom = 0;
lv_coord_t card_pad_row = 0;
lv_coord_t grid_height_pct = 70;
lv_coord_t grid_top_offset = 30;
lv_coord_t grid_pad_row = 6;
lv_coord_t grid_pad_column = 6;
lv_coord_t grid_pad_left = 0;
lv_coord_t grid_pad_right = 0;
lv_coord_t top_bar_height = 30;
lv_coord_t top_bar_side_inset = 5;
lv_coord_t top_bar_text_pad = 4;
lv_coord_t status_row_gap = 2;
lv_coord_t status_row_offset_y = 2;
lv_coord_t desc_offset = -10;
lv_coord_t node_id_offset_x = 5;
lv_coord_t node_id_offset_y = -10;
lv_coord_t badge_offset_x = 4;
lv_coord_t badge_offset_y = -4;
lv_coord_t badge_min_size = 20;
lv_coord_t badge_pad_h = 6;
lv_coord_t badge_pad_v = 2;
lv_coord_t title_offset_x = 0;
lv_coord_t title_offset_y = 0;
lv_coord_t card_label_width_inset = 4;
uint8_t max_columns = 0;
bool wrap_grid = false;
bool vertical_scroll = false;
bool snap_center = false;
bool directional_key_nav = false;
bool transparent_cards = false;
bool grid_anchor_top_left = false;
bool show_top_bar = false;
bool show_card_label = false;
bool show_desc_label = true;
bool show_node_id = true;
bool show_memory_stats = true;
bool scroll_card_label = false;
bool large_touch_hitbox = false;
bool transition_animation = true;
const lv_font_t* card_label_font = &lv_font_montserrat_14;
const lv_font_t* desc_font = &lv_font_montserrat_14;
const lv_font_t* node_id_font = &lv_font_montserrat_14;
const lv_font_t* top_bar_font = &lv_font_montserrat_14;
const lv_font_t* badge_font = &lv_font_montserrat_14;
};
const MenuLayoutProfile& current();
MenuLayoutProfile make_tdeck_profile();
MenuLayoutProfile make_pager_profile();
MenuLayoutProfile make_tab5_profile();
MenuLayoutProfile make_t_display_p4_profile();
MenuLayoutProfile make_default_profile(lv_coord_t width, lv_coord_t height);
} // namespace ui::menu_profile