- meow_ui.h(922 行)改为伞头:只做 #include 聚合 + 模块索引,不定义新 API。 - 新增 patch_v2/sdk/include/ 16 个子头(types/draw/image/theme/ime/widgets/input/ activity/zorder/statusbar/dialog/log/notify/config/font/audio),各自自洽可单独 include, 依赖最小化(不透明句柄前向声明 + 必要模块互引)。 - 验证:meow_ui.a md5 与主树完全一致(4786158d…,头重组 .o 逐字节等价); SDK .c 用 mipsel -Wall -Wextra 0 warning;hello/files 全量重编链接通过 (-Wall -Wextra 0 warning);宿主 test_p1p2p3_repro(P1c/P2/P3 ALL PASS) + 15 个 SDK/宿主测试 PASS;16 子头自洽编译 0 warning;伞头完整性回归 test_umbrella.c 0 warning;ncm 5 个含 meow_ui.h TÜ mipsel 交叉编译到 .o 0 warning。 - meow_ui_internal.h 及 view/nav/media/sys/vol 子头未动;build_sdk.sh 无需改。 - MEOW_APP_SDK.md 头部新增「公共头模块索引」。分支 sdk-header-split。
50 lines
2.6 KiB
C
50 lines
2.6 KiB
C
/*
|
||
* meow_ui_dialog.h — SDK 模态(App 层,非系统叠加):Dialog / BottomSheet(§5.8.6)。
|
||
*
|
||
* 原 meow_ui.h 拆分的一部分(dialog 模块)。复用 §5.6 B③ 弹窗 / §5.7 B④ 底部面板模板
|
||
* (与 launcher s_dd_modal 同构),控件化。阻塞式(内层 meow_input_pop 轮询,与
|
||
* meow_ui_text_input 同构);打开前排空残留触摸。关闭途径:点卡片内选项=确认、点卡片外=取消、
|
||
* 左缘返回手势=取消。不压状态栏(y 钳制)。
|
||
*/
|
||
#ifndef MEOW_UI_DIALOG_H
|
||
#define MEOW_UI_DIALOG_H
|
||
|
||
#include "meow_ui_types.h"
|
||
#include "meow_ui_ime.h" /* meow_ime_ctx(Dialog INPUT 型) */
|
||
|
||
#ifdef __cplusplus
|
||
extern "C" {
|
||
#endif
|
||
|
||
/* ============================================================ */
|
||
/* §5.8.6 模态(App 层,非系统叠加):Dialog / BottomSheet
|
||
* 复用 §5.6 B③ 弹窗 / §5.7 B④ 底部面板模板(与 launcher s_dd_modal 同构),控件化。
|
||
* 阻塞式(内层 meow_input_pop 轮询,与 meow_ui_text_input 同构);打开前排空残留触摸。
|
||
* 关闭途径:点卡片内选项=确认、点卡片外=取消、左缘返回手势=取消。不压状态栏(y 钳制)。 */
|
||
/* ============================================================ */
|
||
|
||
/* ---- Dialog(弹窗:确认/选择/输入/信息)---- */
|
||
typedef enum { MEOW_DLG_CONFIRM, MEOW_DLG_SELECT, MEOW_DLG_INPUT, MEOW_DLG_INFO } meow_dlg_t;
|
||
typedef struct meow_dialog meow_dialog;
|
||
meow_dialog *meow_dialog_create(meow_dlg_t t, const char *title);
|
||
void meow_dialog_set_items(meow_dialog *d, const char *const *item, int n, int cur); /* SELECT 型 */
|
||
void meow_dialog_set_ime(meow_dialog *d, meow_ime_ctx *ime); /* INPUT 型 */
|
||
void meow_dialog_show(meow_dialog *d); /* 阻塞到确认/取消 */
|
||
int meow_dialog_result(meow_dialog *d); /* SELECT=选项下标;CONFIRM/INFO 确认=1、取消=0 */
|
||
void meow_dialog_close(meow_dialog *d); /* 程序化关闭(App 亦可驱动) */
|
||
void meow_dialog_free(meow_dialog *d);
|
||
/* CONFIRM 型便捷:点「确定」返回 1,取消/遮罩=0 */
|
||
int meow_dialog_confirm(meow_dialog *d);
|
||
|
||
/* ---- BottomSheet(底部面板:标题 + 选项列表;open 阻塞返回选中 idx/-1)---- */
|
||
typedef struct meow_sheet meow_sheet;
|
||
meow_sheet *meow_sheet_create(const char *title, int h);
|
||
int meow_sheet_add_item(meow_sheet *s, const char *label); /* 返回项下标 */
|
||
int meow_sheet_open(meow_sheet *s); /* 阻塞;返回选中 idx / -1=取消 */
|
||
void meow_sheet_free(meow_sheet *s);
|
||
|
||
#ifdef __cplusplus
|
||
}
|
||
#endif
|
||
#endif /* MEOW_UI_DIALOG_H */
|