Skip to content

Feat: 支持晾衣机(Airer) 并优化 MiwuWrapper#64

Merged
sky130 merged 4 commits into
masterfrom
device-airer
May 4, 2026
Merged

Feat: 支持晾衣机(Airer) 并优化 MiwuWrapper#64
sky130 merged 4 commits into
masterfrom
device-airer

Conversation

@sky130
Copy link
Copy Markdown
Owner

@sky130 sky130 commented May 4, 2026

No description provided.

sky130 added 4 commits May 4, 2026 19:40
- **新增 Airer 设备支持**:
    - 添加 `Airer` 设备定义及其对应的 `AirerLayout` 布局。
    - 实现 `AirerLayoutWrapper` 处理上升、下降、暂停及状态监听逻辑。
    - 在 `StatusText` 中绑定 `airer.status` 属性。
- **重构 Switch 组件**:
    - 将 `Switch` 重命名为 `SwitchBar`,并同步更新相关的 `SwitchBarWrapper` 和布局文件 `miot_widget_switch_bar.xml`。
    - 更新 `Camera`、`Fan`、`Light` 等设备中的引用,移除 `WidgetSwitch` 别名。
- **优化 `MiwuWrapper` 及现有逻辑**:
    - 在 `MiwuWrapper` 中新增 `valueListOf` 和 `valueListOfOrNull` 辅助方法,用于通过描述查找属性值。
    - 重构 `CurtainLayoutWrapper`,使用新定义的 `valueListOf` 获取 Open/Close/Pause 属性值。
    - 为 `Curtain` 设备添加 `StatusText` 组件支持。
- **其他改进**:
    - 在 `icons.txt` 中新增 `PointUp` 和 `PointDown` 图标映射。
    - 为 `StatusText` 补充了针对不同设备(如气感、窗帘、真空吸尘器等)的属性绑定。
- **Airer 设备适配**:
    - 在 `AirerLayoutWrapper` 中修正 `registerProperty` 的服务类型,从 `Service.Curtain` 改为 `Service.Airer`。
    - 增强 `Airer` 状态解析逻辑,新增对 "Up" 映射至 `AirerState.Rising` 的支持。
    - 从 `Airer` 设备注解及 `StatusText` 绑定列表中移除冗余的 `StatusText` 关联。
- **SwitchBar 组件优化**:
    - **UI 调整**: 调整 `miot_widget_switch_bar.xml` 中的文字大小,将标题 `textSize` 增加至 `17sp`,副标题减小至 `14sp`。
    - **逻辑改进**: 在 `SwitchBarWrapper` 中,将判断条件从 `serviceName` 改为 `deviceType`,并使用 `descriptionTranslation` 更新副标题显示。
    - **代码清理**: 使用 `androidx.core.view.isVisible` 简化可见性控制代码。
- **重构状态管理**: 将 UI 更新逻辑从 `onUpdateValue` 迁移至 `value` 属性的 `set` 访问器中,实现数据驱动 UI 更新。
- **简化代码结构**:
    - 使用 Kotlin 解构语法简化不同状态下资源 ID 和文本的赋值逻辑。
    - 调整类成员声明顺序并清理多余空行。
- **UI 逻辑优化**: 统一了 `value` 变更时的背景图切换与文本显示逻辑。
- **模型重构**:
    - 将 `Action` 和 `Property` 类从 `SpecAtt.Service` 的内部类提升至 `SpecAtt` 的直接内部类。
    - 更新 `SpecAction` 和 `SpecProperty` 类型别名以匹配新的嵌套层级。
    - 在 `SpecAtt` 中新增 `LANG_SERVICE`、`LANG_PROPERTY_OR_ACTION` 和 `LANG_VALUE_LIST` 常量,以增强国际化解析逻辑的可读性。
- **包路径调整**:
    - 将 `SpecAtt` 和 `SpecType` 从 `miwu.miot.model.att` 迁移至 `miwu.miot.model.spec` 包。
    - 同步更新所有受影响模块(包括 `miot-api`、`miwu-support`、`miwu-android` 等)中的导入语句。
- **增强 `MiwuWrapper`**:
    - 为 `MiwuWrapper` 中的关键函数(如 `update`、`action`、`getService` 等)引入 `@WrapperFun` 和 `@WrapperManager` DSL 注解。
    - 在 `MiwuWrapper` 中新增 `registerAction` 和 `registerProperty` 方法,以支持多属性(Multi-Attribute)组件。
- **组件优化**:
    - **CurtainLayoutWrapper**: 为 `currentState` 添加自定义 setter 以自动通知状态监听器,并优化了属性注册逻辑。
    - **BaseMiwuWidget**: 更新了获取 Service、Property 和 Action 的方法签名,使其使用新的 `SpecProperty` 和 `SpecAction` 类型。
- **代码清理**:
    - 移除 `SpecProcessor` 中未使用的导入和过时的 KSP 接口别名。
    - 在 `MiwuLayoutWrapper` 中为 `view` 扩展函数添加 `@WrapperFun` 注解。
- **MiwuWrapper 核心改进**:
    - 新增 `updateValue(SpecAtt.Property.Value)` 方法,支持直接使用属性值对象进行更新。
    - 扩展 `valueListOf` 与 `valueListOfOrNull` 方法,支持通过 `Int` 类型的 value 查找属性值,并提供针对 `SpecAtt.Property` 的扩展函数。
    - 为多个核心方法添加 `@WrapperFun` 注解。
- **AirerLayoutWrapper 优化**:
    - 引入 `AirerState.from(name, value)` 工厂方法统一状态解析逻辑。
    - 重构 `currentState` 属性,增加 `set` 监听器以自动触发状态回调。
    - 使用新的 `valueListOf` API 简化属性注册逻辑。
- **CurtainLayoutWrapper 优化**:
    - 迁移 `updateValue` 逻辑至基类实现。
    - 简化状态判断与属性更新调用。
- **其他调整**:
    - `MiwuLayoutWrapper`: 重命名 `add` 方法为 `addView` 并添加 `@WrapperFun` 注解。
    - `MiotWidgetListButtonBinding`: 为 `icon`、`title` 和 `onClick` 扩展属性/方法添加 `@MiwuWrapper.WrapperFun` 注解。
@sky130 sky130 changed the title Feat: 支持**晾衣机**(Airer) 并优化基础框架 Feat: 支持晾衣机(Airer) 并优化 MiwuWrapper May 4, 2026
@sky130 sky130 merged commit d6a715d into master May 4, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant