1. ui管理模块增加扩展接口

This commit is contained in:
coffee 2025-10-23 21:11:15 +08:00
parent cc177be0eb
commit 1c8727bc9f
2 changed files with 36 additions and 15 deletions

View File

@ -31,13 +31,10 @@
#define UIPAGE_LEN len
#define UIPAGE_CMD cmd
#if 1
#define UIPAGE_CASE(page, func, ...) case page: { LogD("current page[%d], event[%s]", page, #page); func(__VA_ARGS__); LogD("event End"); } break
#define UIPAGE_CASE_RET(page, func, ...) case page: { LogD("current page[%d], event[%s]", page, #page); return func(__VA_ARGS__); LogD("event End"); } break
#else
#define UIPAGE_CASE(page, func, ...) case page: { func(__VA_ARGS__); } break
#define UIPAGE_CASE_RET(page, func, ...) case page: { return func(__VA_ARGS__); } break
#endif
#define UIPAGE_CASE_TRACE(page, func, ...) case page: { LogTr("current page[%d], event[%s]", page, #page); func(__VA_ARGS__); LogTr("event End"); } break
#define UIPAGE_CASE_RET_TRACE(page, func, ...) case page: { LogTr("current page[%d], event[%s]", page, #page); return func(__VA_ARGS__); LogTr("event End"); } break
#define UIPAGE_INIT_FUNC(func, ...) UIPAGE_CASE(kCallInitPage, func, __VA_ARGS__)
#define UIPAGE_FREE_FUNC(func, ...) UIPAGE_CASE(kCallFreePage, func, __VA_ARGS__)
@ -58,7 +55,7 @@
#define UI_CALL_EVENT_TYPE(value) ((HUiPageEvent_t *)value)
// HD集成任务处理
#define HD_UIPAGE_EVENT_FUNC(func) UIPAGE_CASE(kCallNotifyEvent, func, *(UI_CALL_EVENT_TYPE(UIPAGE_DATA)))
#define HD_UIPAGE_EVENT_FUNC(func) UIPAGE_CASE_TRACE(kCallNotifyEvent, func, *(UI_CALL_EVENT_TYPE(UIPAGE_DATA)))
/** ================================================================= */
@ -89,6 +86,9 @@ void HUIPageInit(initPageType_t initPage);
// 设置主页, 切换到主页清空返回栈, 如果返回栈为空时, 当前页面不是主页, 则切换到主页
void HUIPageSetHome(HUiPageIndex_t page);
// 获取主页
HUiPageIndex_t HUIPageGetHome();
// 切换页面, 当前页面入栈, 相同页面不操作, 需要检查栈, 栈存在就回栈清空之后的, 不存在就压栈
// 因为有些页面可能不用HUIPageBack来返回, 所以需要兼容这种情况
void HUIPageSwitch(HUiPageIndex_t page);
@ -148,6 +148,12 @@ uint8_t HUIPageSaveIndex(uint8_t value);
// 获取当前页面索引, 仅在 HUIPageIsBack() 返回1时有效, 否则返回0
uint8_t HUIPageGetIndex();
// 临时保存当前页面索引
void HUIPageSaveTempIndex(uint8_t value);
// 获取临时保存的当前页面索引
uint8_t HUIPageGetTempIndex();
// 获取当前页面
HUiPageIndex_t HUIPageGetCurrPage();

View File

@ -34,6 +34,7 @@ typedef struct HUIPageManage
uint8_t isInit : 1; ///< 初始化显示页面
uint8_t saveIndex : 1; ///< 允许保存索引
uint8_t isBack : 1; ///< 标记是否是返回
uint8_t tmpIndex : 4; ///< 临时页面索引
} HUIPageManage;
// 页面管理
@ -176,6 +177,10 @@ void HUIPageSetHome(HUiPageIndex_t page) {
pageManage.homePage = page;
}
HUiPageIndex_t HUIPageGetHome() {
return pageManage.homePage;
}
// 切换页面, 当前页面入栈, 相同页面不操作, 需要检查栈, 栈存在就回栈清空之后的, 不存在就压栈
// 因为有些页面可能不用HUIPageBack来返回, 所以需要兼容这种情况
void HUIPageSwitch(HUiPageIndex_t page) {
@ -436,6 +441,16 @@ uint8_t HUIPageGetIndex() {
return HByteStackTop(indexStack);
}
// 临时保存当前页面索引
void HUIPageSaveTempIndex(uint8_t value) {
pageManage.tmpIndex = value;
}
// 获取临时保存的当前页面索引
uint8_t HUIPageGetTempIndex() {
return pageManage.tmpIndex;
}
// 获取当前页面
HUiPageIndex_t HUIPageGetCurrPage() {
return pageManage.currPage;