sdk: 同步主仓新增模块 cachegov/lazygrid/select/net 通道
This commit is contained in:
1 parent
0af6af7c7e
commit
64cde13c8d
15 files changed
+1326
-10
No files matched your search
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* meow_select.h — SDK 枚举/预设选择器(§5.8.6 模态组件,M7.2 设置页缺口 #4)。
|
||||
*
|
||||
* 定位:给「枚举 / 预设选择器」一个开箱即用的**下拉模态**——设置页采样率/码率/主题/语言等
|
||||
* 枚举、均衡器预设等。封装 = BottomSheet(标题 + 选项列表)+ meow_listview(SINGLE) 单选列表:
|
||||
* 选项数组 + 当前选中(高亮)+ 点选项 = 选中 + 关闭 + on_change 回调;点面板外/左缘返回 = 取消。
|
||||
*
|
||||
* 设计(§3 缺口 #4):选项用 meow_listview(SINGLE) 渲染(单选高亮、可惯性滚动、虚拟化长列表),
|
||||
* 外层是模态 BottomSheet(复用 meow_dialog 的遮罩/快照恢复,scrim 只叠一层/关闭无残影)。
|
||||
* 阻塞式(内层 meow_input_pop 轮询,与 meow_dialog 同构);打开前排空残留触摸。
|
||||
*
|
||||
* 内存纪律:选项数组定长(≤MEOW_SELECT_MAX_ITEMS,栈/数组持有,非 malloc 长列表);
|
||||
* 列表在 open 时创建(冷路径)、close 时释放;open 循环零 malloc。
|
||||
*/
|
||||
#ifndef MEOW_UI_SELECT_H
|
||||
#define MEOW_UI_SELECT_H
|
||||
|
||||
#include "meow_ui_types.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef struct meow_select meow_select;
|
||||
|
||||
/* 选中回调(on_change):idx=被选中的选项下标(0..n-1)。 */
|
||||
typedef void (*meow_select_fn)(int idx, void *ctx);
|
||||
|
||||
#define MEOW_SELECT_MAX_ITEMS 32 /* 选项上限(静态数组;越界 add 忽略并返回 -1) */
|
||||
|
||||
/* ---- 组件式(可复用 + on_change 回调)---- */
|
||||
meow_select *meow_select_create(const char *title, int cur); /* cur=初始选中项;越界 clamp */
|
||||
int meow_select_add_item(meow_select *s, const char *label); /* 返回项下标;满/无效= -1 */
|
||||
void meow_select_set_on_change(meow_select *s, meow_select_fn cb, void *ctx);
|
||||
/* 打开模态(阻塞到确认/取消):选中 → 置 result=idx + 调 on_change(idx)+ 返回 idx;
|
||||
* 取消/点面板外/左缘返回 → 返回 -1(不调 on_change)。 */
|
||||
int meow_select_open(meow_select *s);
|
||||
void meow_select_free(meow_select *s);
|
||||
|
||||
/* ---- 一次性(无回调,返回值即选择)----
|
||||
* opts=选项数组(const char* 数组);n=个数;cur=初始选中。返回选中下标/-1=取消。 */
|
||||
int meow_select_show(const char *title, const char *const *opts, int n, int cur);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* MEOW_UI_SELECT_H */
|
||||
Reference in new issue
Block a user