60 lines
2.7 KiB
C
60 lines
2.7 KiB
C
/*
|
|
* 模块名称:UI Content Page (内容页面显示层)
|
|
* 模块功能:菜单叶子节点的内容页(装置信息/交流量/直流量)——独立 LVGL 屏幕,
|
|
* 全屏容器自绘全部内容(浅 V 装饰 + 居中标题 + 行数据 + 页脚页码),
|
|
* 无子对象;进入时切屏并获焦、ESC 返回菜单屏并还原焦点;
|
|
* 不持有导航状态——由逻辑层 ui_menu.c 在 ENTER 叶子节点时驱动
|
|
* 适用平台:STM32F407ZGTx / PC 模拟器(两端共用)
|
|
* 作者:王建锋
|
|
* 创建日期:2026-09-09
|
|
* 修改记录:
|
|
* 2026-09-09 王建锋 创建:装置信息/交流量/直流量三页(参考图 10/20/21)
|
|
*/
|
|
#ifndef UI_CONTENT_PAGE_H
|
|
#define UI_CONTENT_PAGE_H
|
|
|
|
#include <stdint.h>
|
|
#include <stdbool.h>
|
|
|
|
/*
|
|
* 内容页 ID:与菜单叶子节点一一对应(映射见 ui_menu.c menu_content_page_for);
|
|
* CONTENT_PAGE_COUNT 兼作"无内容页/未打开"哨兵值
|
|
*/
|
|
typedef enum {
|
|
CONTENT_PAGE_DEVICE_INFO = 0u, /* 装置信息(node 1):静态键值行 + 副标题,单页 */
|
|
CONTENT_PAGE_AC, /* 交流量(node 3):数据列表,24 项 / 8 项每页 */
|
|
CONTENT_PAGE_DC, /* 直流量(node 4):数据列表,3 项单页 */
|
|
CONTENT_PAGE_COUNT /* 哨兵:无效 ID / 未打开 */
|
|
} content_page_id_t;
|
|
|
|
/*
|
|
* 函数功能:打开指定内容页(建屏 + 切屏 + 焦点置页面容器)
|
|
* 入口参数:id - 内容页 ID content_page_id_t
|
|
* 返回值:true - 成功;false - 失败(ID 无效/已有页面打开/对象创建失败)
|
|
* 限定条件:ui_menu_init() 已完成(默认输入组与菜单屏存在)
|
|
* 函数说明:1. 新建独立屏幕,全屏容器自绘全部内容(无子对象,池开销极小)
|
|
* 2. 容器入默认输入组并获焦——按键由本模块处理(↑↓移选/ESC返回)
|
|
* 3. 导航状态不压层:菜单 s_depth/s_sel 原样保留,ESC 返回即还原
|
|
*/
|
|
bool ui_content_page_open(content_page_id_t id);
|
|
|
|
/*
|
|
* 函数功能:关闭当前内容页(焦点回菜单容器 + 切回菜单屏 + 销毁页面)
|
|
* 入口参数:无
|
|
* 返回值:无
|
|
* 限定条件:ui_content_page_is_open() 为 true
|
|
* 函数说明:先移焦再删屏,防输入组焦点悬空;LVGL 池内存随即回落
|
|
*/
|
|
void ui_content_page_close(void);
|
|
|
|
/*
|
|
* 函数功能:查询是否有内容页打开
|
|
* 入口参数:无
|
|
* 返回值:true - 有页面打开;false - 无
|
|
* 限定条件:无
|
|
* 函数说明:供逻辑层/调试判断当前处于菜单屏还是内容页
|
|
*/
|
|
bool ui_content_page_is_open(void);
|
|
|
|
#endif /* UI_CONTENT_PAGE_H */
|