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 推卡自刷验收全绿
This commit is contained in:
AskaEth committed 2026-09-03 12:16:01 +08:00
1 parent c2ee7626a4
commit 3d70a3dd2c
176 files changed
+15507 -597

No files matched your search

+47
View File
@@ -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 */