Files
AskaEth 3d70a3dd2c feat: M6.10–M6.19 批量收编 + M6.19 推卡验收
- M7 launcher 重写 5 期(虚拟化宫格/meow_theme 单一权威/横幅动画/自定义 PIN 键盘)
- OOM 通用化(cachegov 上收 SDK)、自动切歌根治、meowpanel jv_free 泄漏修复、Hello 滚动卡顿修复
- ncm 歌词 UI / 媒体通知封面 / 封面分辨率 640
- 5 bug 修复:ncm 后台化 UI 叠层+点击穿透、再进 ncm 桌面叠层、播放页新旧 UI 叠层抢刷脏区(meow_ui_gfx 恢复边沿整帧重画)、PIN 亮屏亮度跳(keys.c meow_panel_on 按 settings_brightness_clamped 恢复)、通知中心封面显歌单封面(cover.c save_cover_raw 加 is_song + 命中块守卫)
- 四 App 统一重链新 meow_ui.a 51caee4a;M6.19=0.8.19 固件 2d2331f2 推卡自刷验收全绿
2026-09-03 12:16:01 +08:00

136 lines
8.3 KiB
C
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* hello_internal.h — hello 应用内部共享头(UI 各页 + app 装配层 + 宿主测试面)。
*
* 层级(SDK_VIEW_FRAMEWORK_DESIGN.md §B.1/B.2):
* - ui/ 每页一个 view 文件(持视图态 scroll/focus/drag/几何);共享 chrome 在 ui/common/;
* - logic 下纯业务模块(state: taps/secs;notify: 通知发送/取消),UI 只经 logic_* / notify_* 调用;
* - app.c main + 装配 + 事件分发(把 meow_ui_run 的平铺回调路由到各页)。
* 页面组织:home/full/demo 各建一个 meow_view(ACTIVITY),生命周期用
* meow_view_page_push/pop 驱动(on_enter/on_leave 唯一入口);绘图仍走 batch① 已接线的
* 路径(home/full 手绘 + demo 走 meow_ui_paint_full 注册表),on_draw 本批置 NULL(见报告)。
*
* 本头是全应用/测试的跨 TU 声明:只声明(extern),不定义,避免多定义。宿主 test_p1p2p3_repro
* 直接 #include 本头 + 链接各 .c,驱动 demo 真实函数(demo_paint/demo_rebuild_to/demo_touch_down)
* 对 back_buf 做断言——这是测「真实 demo 代码 + 真实 SDK」,不是模拟桩。
*/
#ifndef HELLO_INTERNAL_H
#define HELLO_INTERNAL_H
#include <stdint.h>
#include "meow_ui.h"
#include "meow_ui_view.h"
#include "logic/logic.h"
/* ---- App 级弹层(app.c 创建;demo 页打开/关)---- */
extern meow_dialog *g_dlg; /* Dialog(阻塞模态;main 创建一次) */
extern meow_sheet *g_sheet; /* BottomSheet(阻塞模态;main 创建一次) */
/* ---- Activity 归属(§6.1 ①)---- */
#define ACT_HOME 0
#define ACT_FULL 1
#define ACT_DEMO 2
/* ---- SDK 控件不透明:App 自记几何,用于局部 flush / 命中 / scroll 重建 ---- */
typedef struct { int x, y, w, h; } rect_t;
#define RX(x,y,w,h) ((rect_t){ (x), (y), (w), (h) })
/* ---- 视图控制器(ctx = biz-UI 绑定点)----
* 本批控制器为薄壳:持 meow_view 回指针;页面细粒度视图态(g_ds/g_drag_* /scroll 等)留在各页
* 模块作用域全局(设计定案 B:demo 视图态不迁 logic)。控制器未来可吸收这些状态。 */
typedef struct {
meow_view *view;
int active; /* 是否有页进入(与模块 active 全局同步) */
int _pad;
} home_ctrl;
typedef struct {
meow_view *view;
int active;
int _pad;
} full_ctrl;
typedef struct {
meow_view *view;
int active; /* = g_demo */
int focus; /* = g_demo_focus */
int scroll; /* = g_demo_scroll */
int _pad;
} demo_ctrl;
/* ---- home 页(ui/home/home.c)---- */
meow_view *home_view_create(void); /* 建 home view;on_create 建 home 控件 + 注册业务监听器 */
int home_on_tap(int x, int y);/* home 态命中分发:返回 1=已消费(含导航到 demo/full) */
/* ---- full 页(ui/full.c)---- */
meow_view *full_view_create(void); /* 建 full view(无控件;全屏文本由 full_draw 手绘) */
int full_is_active(void); /* 1=处于全屏态 */
void full_draw(void); /* 画全屏帧(clear accent + 文本 + flush) */
/* ---- demo 页(ui/demo/demo.c)---- */
meow_view *demo_view_create(void); /* 建 demo view;on_create 调 demo_init() 建 chrome+内容 */
int demo_is_active(void); /* 1=处于 demo 页 */
void demo_on_tap(int x, int y);
void demo_touch_down(int x, int y);
void demo_touch_move(int x, int y);
void demo_swipe(int dir, int dist);
void demo_tick(uint64_t now);
/* demo 构建/绘制入口(宿主 test_p1p2p3_repro 直接驱动 + demo view 复用):
* demo_init 建 chrome+内容(scroll=0);demo_paint 整帧按 z 重画;demo_rebuild_to 重建到 scroll。 */
void demo_init(void);
void demo_paint(void);
void demo_rebuild_to(int scroll);
/* ---- demo 视图态(设计定案 B:g_ds 非列表字段/scroll/drag_page 留 ui/demo/demo.c,不迁 logic;
* 列表视图态批③ 迁 ui/demo/list/list.c——下列四项定义在 list.c,经本头 extern 跨 TU 共享)。----
* 暴露为 extern,供宿主测试对真实 demo 状态断言(P1/P2/P3)。 */
extern int g_demo; /* 1=处于 demo 演示页 */
extern int g_demo_focus; /* 1=LazyColumn 聚焦(list.c) */
extern int g_demo_scroll; /* 内容区滚动偏移 */
extern int g_drag_list; /* 手指在列表:拖拽滚列表(list.c) */
extern int g_drag_page; /* 手指在页内容:拖拽滚页面 */
extern meow_widget *g_dlc; /* LazyColumn(list.c) */
extern meow_widget *g_dprc; /* ProgressBar 圆形 */
extern rect_t r_prc; /* 圆形进度外接框 */
extern rect_t r_list; /* 列表区几何(list.c) */
extern rect_t r_dr1, r_dr2; /* Radio 几何 */
/* ---- 列表区 CONTAINER 子视图(ui/demo/list/list.c;批③ 视图深度化)----
* demo 页把列表逻辑区块抽成 meow_view CONTAINER 子视图挂到 DEMO ACTIVITY view children,
* 承接列表交互(tap/down/move/swipe)、列表视图态与列表区块标题 on_draw 直绘。
* 嵌套生命周期由 SDK view_enter/view_leave 递归驱动(随 demo 页进出;list_view_enter/leave
* 已退役,无需 App 层显式接管)。 */
meow_view *list_view_create(void); /* 建 CONTAINER 子视图(须即 meow_view_add_child) */
meow_view *list_view_get(void); /* 返回子视图(宿主测嵌套 on_enter/on_leave 断言) */
void list_view_bind(meow_widget *w, rect_t list, rect_t title); /* 内容重建后绑控件+几何+恢复态 */
void list_view_release(void); /* 内容释放后摘引用/几何 */
int list_view_hit(int x, int y); /* tap 分发给列表区,命中即消费(含选中) */
int list_view_down(int x, int y); /* touch_down 命中列表:置 focus+drag_list */
int list_view_move(int y); /* touch_move 拖动列表:1=在列表拖动 */
int list_view_swipe(int del); /* swipe:列表聚焦时滚列表,1=已消费 */
/* ---- SDK 批次2 控件演示区 CONTAINER 子视图(ui/demo/sdk2/sdk2.c)----
* 复刻 list.c 模式:demo 页内容区底部追加三节——枚举选择器 meow_select / 2D 虚拟化宫格
* meow_lazygrid / 列表行左滑删除 meow_listview_set_swipe_delete。子视图自持三节控件与视图态
* (grid 非 meow_widget:on_draw 直绘 meow_lazygrid_draw;swipe-list 行左滑 3 相位手势),
* 对外暴露 sdk2_build_at(demo_build_at 调)与 hit/down/move/swipe/release(demo 分发改派)。 */
meow_view *sdk2_view_create(void); /* 建 CONTAINER 子视图(须即 meow_view_add_child) */
meow_view *sdk2_view_get(void); /* 返回子视图(宿主测嵌套生命周期断言) */
int sdk2_build_at(int yb_base, int ct, int scroll); /* 在 base yb 处建三节控件(owner=ACT_DEMO),返回下一 yb */
void sdk2_release(void); /* 内容释放后:释放 grid/摘控件引用/清几何 */
int sdk2_hit(int x, int y); /* tap 分发:select 按钮/宫格 tap/列表行 tap/行左滑松手 swipe_end */
int sdk2_down(int x, int y); /* touch_down:宫格拖拽或列表行左滑 begin;1=本区消费 */
int sdk2_move(int x, int y); /* touch_move:宫格滚动/列表左滑 move 或列表竖向滚动;1=消费 */
int sdk2_swipe(int del); /* swipe UP/DOWN:宫格或列表聚焦时滚自身;1=已消费 */
int sdk2_dragging(void); /* 1=本子视图拖拽在途(demo_swipe 早退防 on_swipe 二次滚动) */
/* ---- chrome(ui/common/chrome.c)---- */
extern meow_widget *g_tb; /* TopAppBar(chrome 固定) */
extern meow_widget *g_nav; /* NavigationBar(chrome 固定) */
extern meow_widget *g_fab; /* FAB(chrome 置顶;demo 交互可重建换 label) */
extern rect_t r_tb, r_nav, r_fab;
void chrome_create(void); /* 建 chrome(调用方须先 push ACT_DEMO 使 owner=ACT_DEMO) */
void chrome_free(void); /* 释放 chrome(demo on_destroy 调) */
/* ---- App 级导航/媒体接线(app.c)---- */
void hello_nav_report(void); /* 上报当前 Activity 栈深/顶层(各页 on_enter 调) */
#endif /* HELLO_INTERNAL_H */