refactor(hello): 视图框架批次② — hello.c 拆分为 app.c+ui/{home,full,demo}.c+ui/common/chrome.c+logic/{notify,state}.c(定案B: demo视图态留ui/;定案b: page导航包装activity栈);test_p1p2p3_repro 改多文件链接形态 (agent-177)

hello f45ba051→c06b3b4f; mipsel -Wall -Wextra 0 warning; 宿主 P1c/P2/P3+widgets 全 PASS
出入(诚实): view on_draw/on_event 路径暂未启用(注册表直绘已覆盖, on_draw 双画风险), 留批③实测; home/full 仍手绘未迁注册表
This commit is contained in:
MeowOS committed 2026-08-31 03:31:09 +08:00
1 parent 896f391fee
commit 1d2496b38c
12 files changed
+668 -364

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
/* ui/common/chrome.c — demo 页共享 chrome(TopAppBar / NavigationBar / FAB)。
*
* 与 demo 内容分离:chrome 固定不随内容重建滚动;显式 set_z(999) 置顶(§6.2),
* 区域/整帧重画都最后画 chrome。FAB 可被 demo 交互重建换计数 label(见 demo_on_tap)。
* chrome 控件 owner=ACT_DEMO(由调用方 demo_init 先 push ACT_DEMO 再建),命中/绘制只在 demo 态生效。
*/
#include "hello_internal.h"
meow_widget *g_tb = NULL; /* TopAppBar(chrome 固定) */
meow_widget *g_nav = NULL; /* NavigationBar(chrome 固定) */
meow_widget *g_fab = NULL; /* FAB(chrome 固定,可重建换计数 label) */
rect_t r_tb, r_nav, r_fab;
void chrome_create(void)
{
int sb = meow_ui_statusbar_height();
r_tb = RX(0, sb, 480, 56); g_tb = meow_topappbar_create(0, sb, 480, 56, "Widgets Demo");
meow_topappbar_set_back(g_tb, 1);
r_nav = RX(0, 680, 480, 40); g_nav = meow_navigationbar_create(0, 680, 480, 40);
meow_navigationbar_add_item(g_nav, "Buttons");
meow_navigationbar_add_item(g_nav, "List");
meow_navigationbar_add_item(g_nav, "More");
meow_navigationbar_set_selected(g_nav, 0);
r_fab = RX(406, 616, 56, 56); g_fab = meow_fab_create(406, 616, 56, "+");
/* chrome 显式置顶(§6.2):> 一切自动 z(127),区域重画/整帧都最后画 chrome。 */
meow_widget_set_z(g_tb, 999);
meow_widget_set_z(g_nav, 999);
meow_widget_set_z(g_fab, 999);
}
void chrome_free(void)
{
if (g_tb) { meow_widget_free(g_tb); g_tb = NULL; }
if (g_nav) { meow_widget_free(g_nav); g_nav = NULL; }
if (g_fab) { meow_widget_free(g_fab); g_fab = NULL; }
}