From 1c8727bc9faa4ffc9799a72c71555db98d1f8dbf Mon Sep 17 00:00:00 2001 From: coffee Date: Thu, 23 Oct 2025 21:11:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=20ui=E7=AE=A1=E7=90=86=E6=A8=A1=E5=9D=97?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=89=A9=E5=B1=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/HUIPageManage.h | 18 ++++++++++++------ src/HUIPageManage.c | 33 ++++++++++++++++++++++++--------- 2 files changed, 36 insertions(+), 15 deletions(-) diff --git a/include/HUIPageManage.h b/include/HUIPageManage.h index ad2331f..3907aa3 100644 --- a/include/HUIPageManage.h +++ b/include/HUIPageManage.h @@ -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(); diff --git a/src/HUIPageManage.c b/src/HUIPageManage.c index 1970142..9023a21 100644 --- a/src/HUIPageManage.c +++ b/src/HUIPageManage.c @@ -25,15 +25,16 @@ typedef struct HUIPageManage { - pageCallType_t pageCall[HUI_PAGE_MAX_NUM]; ///< 页面回调 - long userData; ///< 用户数据 - uint8_t homePage; ///< 首页, 当切换到首页时清空返回栈 - uint8_t currPage; ///< 当前页面 - uint8_t prevPage; ///< 上一个页面 - uint8_t modifyUserData : 1; ///< 标记是否修改用户数据 - uint8_t isInit : 1; ///< 初始化显示页面 - uint8_t saveIndex : 1; ///< 允许保存索引 - uint8_t isBack : 1; ///< 标记是否是返回 + pageCallType_t pageCall[HUI_PAGE_MAX_NUM]; ///< 页面回调 + long userData; ///< 用户数据 + uint8_t homePage; ///< 首页, 当切换到首页时清空返回栈 + uint8_t currPage; ///< 当前页面 + uint8_t prevPage; ///< 上一个页面 + uint8_t modifyUserData : 1; ///< 标记是否修改用户数据 + 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;