M2.90: MIUIx 风格包落地 + ui.style 一键切换闭环

- meow_ui_theme.c: 为 MEOW_STYLE_MIUIX 实现整套 light/dark 配色(暖基面+小米橙 primary
  0xF57200/0xFF8C4A+蓝 tertiary;圆角 20/卡片 28、间距 12、细描边 1),与 MD3 可感知差异
- display.background 随 style×mode 派生 MIUIx 色板(bg_surfaces 增 style 参;图片背景保持各 style 默认面)
- meow_settings.c g_defs: ui.style 值域 'md3,miui'→'md3,miuix'(label Material You,MIUIx);
  apply_value SET_ENUM 对存量 'miui' 兼容映射为 miuix
- settings_page s_commit: ui.style 分支 → meow_ui_set_style + paint_sb_right + meow_dirty_full 即时换肤
- font_theme s_ui_theme() 接 ui.style + MIUIx dark/light 表;main_menu 背景签名含 ui.style + 纯色底随 style 换族
- 宿主编译 -Wall -Wextra 0 warning;test_meow_ui_theme 四套 s×m 渲染全 PASS;
  test_meow_ui_widgets/test_sdk_fixes 全 PASS(MD3 行为一致)
- 产物 md5: meow_ui.a a4231296 / launcher 9f97af1b(未部署走固件)/ hello e5527578 /
  files 993e41ca / ncm 6b9eeb0f(三 App 已 .new+mv 热更到卡, 设备 md5 已核一致)
- 待后续: 状态栏图标集仍 MD3 一套(sb_icons.h 无 per-style 换集接口, MIUIx 仅换配色);
  App 进程 SDK 主题缓存 g_loaded 不随 settings 外部改写重读, 运行中 App 下次启动才换肤
This commit is contained in:
MeowOS committed 2026-08-31 20:17:51 +08:00
1 parent f23720f934
commit 4e3f41a5a3
13 files changed
+250 -42

No files matched your search

+2 -1
View File
@@ -877,7 +877,7 @@ void meow_theme_remove_listener(meow_theme_listener cb);
### 8.1 主题增强:顶级主题 `ui.style` × 明暗 `display.theme` × 背景 `display.background` [源:2026-08-30]
> ✅ **已实现(M2.70/0.7.65 起)**:`meow_ui_set_style`/`meow_ui_style`(`MEOW_STYLE_MD3/MIUIX`)、`meow_theme_get`(MD3 语义色板 + 风格参数 + 背景 surface/bg)、状态栏图标随 `ui.style` 换集(详见 §3.1「同一个状态栏」)。**MIUIx 当前仅 md3 生效**(MIUIx 深度细节留后续迭代);`meow_settings.c g_defs` 的 `miui` 值对齐为 `miuix` 待定案(见 §8.1.1 注)。
> ✅ **已实现(M2.70/0.7.65 起 + MIUIx 完整包 M2.90/0.7.85)**:`meow_ui_set_style`/`meow_ui_style`(`MEOW_STYLE_MD3/MIUIX`)、`meow_theme_get`(MD3 语义色板 + 风格参数 + 背景 surface/bg)、状态栏图标随 `ui.style` 换集(详见 §3.1「同一个状态栏」)。**MIUIx 完整落定**:`meow_ui_theme.c` 为 `MEOW_STYLE_MIUIX` 实现整套 light/dark 配色(暖色基面 + 小米橙 primary + 蓝 tertiary 辅助、更大圆角 20/28、间距 12、细描边 1)+ `display.background` 按 style×mode 派生 MIUIx 色板(§8.1.1 矩阵);设置页 `ui.style` 一键切换即时生效。`meow_settings.c g_defs` 值域已由 `"md3,miui"` 对齐为 `"md3,miuix"`(label "Material You,MIUIx"),存量 `settings.conf`/备份里的 `"miui"` 兼容映射为 `miuix`(见 §8.1.1 注)。**状态栏图标集仍为 MD3 一套**(`sb_icons.h` 无 per-style 换集接口),MIUIx 仅换配色,见 §8.1.2 注。
> **一句话**:主题 = **顶级主题风格族(`ui.style`:MD3 / MIUIx)× 明暗(`display.theme`:dark / light)** 共同决定「整套配色 + 控件形态 + 背景底」。`display.background` **不再是独立全局维度**,而是「当前 style × 当前 mode」下**可选背景底选项集**——**可选集与默认随 style / mode 切换一起变**。**切明暗** → 同 style 的浅/深背景自动切换(修复"浅色不搭");**切 style** → 整套配色 + 背景换族(修复"背景仅对主页生效/只有深色")。本定案建立在 §5.8.4 的 MD3 语义色板之上(色板 = MD3 语义色;本节管 style×mode 选哪套 + 风格参数 + 背景源)。
@@ -919,6 +919,7 @@ const meow_theme *meow_theme_get(void);
- **明暗联动**:`display.theme` / `display.theme_mode`(auto)变化仍走现有 `meow_theme_mode` + `meow_theme_listener`(§8 现状),仅「同一 style 下」的浅/深背景随切换自动换。
- **命名对齐(与 `meow_ui.h` / launcher 现状)**:SDK **App 侧**结构体权威名 = **`meow_theme`**(既有 `meow_theme_get()`),**不是** `meow_ui_theme`;launcher 内部另有独立结构体 `meow_ui_theme_t`(`font_theme.c`,仅供状态栏/设置页,**与 App 侧无关、不暴露**)。故本节接口统一用 `meow_theme` / `meow_theme_get`;若实现期另起 `meow_ui_theme()`/`meow_ui_theme_t` 作同义别名亦可,视为与 `meow_theme` 等价(待定案)。
- **状态栏图标随 `ui.style` 换集**:状态栏右侧图标集与风格族绑定(MD3=默认图标、MIUIx=另套基础);`meow_ui_set_style` 时框架**一并切换状态栏图标集**(触发全局刷新,见 §8.1.4),颜色随 `meow_theme`(style×mode)日/夜(详见 §3.1「同一个状态栏」正确闭环)。
> **现状(M2.90 审计)**:图标集机制尚无 per-style 换集接口——`sb_icons.h` 只有一套 MD3 Material Symbols 位图(`meow_gfx_blit_icon(idx,…)` 按固定索引查 `sb_icons[]`),`meow_ui_set_style` 只改配色(颜色随 `meow_theme`),**不切换图标图形集**。MIUIx 深度图标(另套基础图形)需新增第二张图标表 + 按 `meow_ui_style()` 选择,**未实现**(留后续迭代;当前 MD3/MIUIx 共用同一图标图形、仅配色不同)。
#### 8.1.3 两套风格参数(草案值)