跳转至

Phase 13: Widget 与桌面应用 TODO

状态: ⬜ 待开始 预计周期: 4~5 周 依赖阶段: Phase 9, Phase 12 目标交付物: Widget 系统、壁纸管理、文件管理器 App、媒体控制服务

一、阶段目标

核心目标

实现桌面 Widget 系统、壁纸管理、文件管理器 App 和媒体控制服务,完善桌面应用层。

具体交付物

  • [ ] WidgetFramework Widget 框架
  • [ ] 内置 Widget(时钟/日历/天气/资源监控)
  • [ ] WallpaperManager 壁纸管理器
  • [ ] FileManagerApp 文件管理器
  • [ ] FilePickerDialog 文件选择器
  • [ ] MediaService 媒体控制服务

二、待实现任务

Week 1-2: Widget 框架

Week 1, Day 1-2: Widget 框架核心

  • [ ] 创建 Widget 基类
  • [ ] WidgetBase 抽象类
  • [ ] 生命周期管理(init/update/pause/resume/destroy)
  • [ ] 尺寸配置(最小/最大/首选)
  • [ ] 刷新频率配置
  • [ ] 创建 Widget 容器
  • [ ] WidgetContainer
  • [ ] 布局管理(网格布局)
  • [ ] Widget 注册/注销
  • [ ] Widget 重排
  • [ ] 实现 Widget 沙箱
  • [ ] 进程隔离(可选)
  • [ ] 资源限制(CPU/内存)
  • [ ] 权限控制
  • [ ] 编写单元测试

Week 1, Day 3-5: Widget API

  • [ ] 实现 Widget 注册 API
  • [ ] registerWidget(widgetId, widget)
  • [ ] unregisterWidget(widgetId)
  • [ ] 实现 Widget 配置
  • [ ] 配置编辑界面
  • [ ] 配置持久化
  • [ ] 实现 Widget 通信
  • [ ] 事件分发
  • [ ] 数据共享(可选)
  • [ ] 编写单元测试

Week 2: 编辑模式

  • [ ] 实现编辑模式
  • [ ] 长按进入编辑模式
  • [ ] 编辑模式视觉反馈
  • [ ] 实现拖拽重排
  • [ ] 拖拽手柄
  • [ ] 放置指示
  • [ ] 实现缩放
  • [ ] 调整 Widget 尺寸
  • [ ] 尺寸约束
  • [ ] 实现删除
  • [ ] 删除按钮
  • [ ] 确认对话框
  • [ ] 编写单元测试

Week 2: 内置 Widget

Day 1-2: 时钟 Widget

  • [ ] 创建 ClockWidget 类
  • [ ] 继承 WidgetBase
  • [ ] 实现显示
  • [ ] 数字时钟
  • [ ] 模拟时钟(可选)
  • [ ] 日期显示
  • [ ] 实现配置
  • [ ] 12/24 小时制
  • [ ] 显示秒
  • [ ] 字体大小
  • [ ] 编写单元测试

Day 3: 日历 Widget

  • [ ] 创建 CalendarWidget 类
  • [ ] 实现月历显示
  • [ ] 月份导航
  • [ ] 今天高亮
  • [ ] 事件标记(可选)
  • [ ] 实现配置
  • [ ] 周起始日
  • [ ] 显示周数
  • [ ] 编写单元测试

Day 4: 天气 Widget

  • [ ] 创建 WeatherWidget 类
  • [ ] 实现天气显示
  • [ ] 当前温度
  • [ ] 天气图标
  • [ ] 城市名称
  • [ ] 实现数据获取
  • [ ] API 接口(可配置)
  • [ ] 缓存机制
  • [ ] 定时刷新
  • [ ] 实现配置
  • [ ] 城市选择
  • [ ] 温度单位(°C/°F)
  • [ ] 编写单元测试

Day 5: 资源监控 Widget

  • [ ] 创建 ResourceMonitorWidget 类
  • [ ] 实现 CPU 监控
  • [ ] 实时使用率
  • [ ] 进度条/图表
  • [ ] 实现内存监控
  • [ ] 实时使用率
  • [ ] 可用/总量
  • [ ] 实现配置
  • [ ] 更新频率
  • [ ] 显示样式
  • [ ] 编写单元测试

Week 3: 壁纸系统

Day 1-2: WallpaperManager 核心

  • [ ] 创建 WallpaperManager 类
  • [ ] 单例模式
  • [ ] 实现壁纸设置
  • [ ] setWallpaper(imagePath) 设置壁纸
  • [ ] getWallpaper() 获取当前壁纸
  • [ ] 恢复默认壁纸
  • [ ] 实现壁纸存储
  • [ ] 系统壁纸目录
  • [ ] 用户壁纸目录
  • [ ] 实现壁纸列表
  • [ ] getAvailableWallpapers() 获取列表
  • [ ] 壁纸缩略图
  • [ ] 编写单元测试

Day 3: 静态壁纸

  • [ ] 实现静态壁纸支持
  • [ ] 图片格式(JPG/PNG/WebP)
  • [ ] 缩放模式(填充/适应/拉伸)
  • [ ] 背景色填充

Day 4: 动态壁纸(High Tier)

  • [ ] 实现动态壁纸支持
  • [ ] 视频壁纸(MP4)
  • [ ] Lottie 动画壁纸(可选)
  • [ ] 实现性能监控
  • [ ] 检测帧率
  • [ ] Low/Mid Tier 自动降级
  • [ ] 实现配置
  • [ ] 动画速度
  • [ ] 暂停策略(省电)

Day 5: 主题联动

  • [ ] 实现主题壁纸推荐
  • [ ] 主题包切换时推荐壁纸
  • [ ] 自动应用(可选)
  • [ ] 实现定时切换
  • [ ] 按时间间隔
  • [ ] 按时间段(早/中/晚)

Week 3-4: 文件管理器

Week 3, Day 1-2: FileManagerApp 核心

  • [ ] 创建 FileManagerApp(独立进程)
  • [ ] 实现主窗口布局
  • [ ] 左侧:目录树
  • [ ] 中间:文件列表
  • [ ] 底部:状态栏
  • [ ] 实现目录树导航
  • [ ] 树形结构
  • [ ] 展开/收起
  • [ ] 隐藏文件(可选)
  • [ ] 实现面包屑导航
  • [ ] 路径显示
  • [ ] 点击跳转
  • [ ] 编写单元测试

Week 3, Day 3-4: 文件列表视图

  • [ ] 实现视图模式
  • [ ] 图标视图
  • [ ] 列表视图
  • [ ] 详情视图
  • [ ] 实现排序
  • [ ] 按名称
  • [ ] 按大小
  • [ ] 按日期
  • [ ] 按类型
  • [ ] 实现选择
  • [ ] 单选
  • [ ] 多选(Ctrl/Shift)
  • [ ] 全选
  • [ ] 编写单元测试

Week 3, Day 5: 文件操作

  • [ ] 实现基础操作
  • [ ] 复制(Ctrl+C / Ctrl+V)
  • [ ] 剪切(Ctrl+X / Ctrl+V)
  • [ ] 粘贴
  • [ ] 删除(Delete)
  • [ ] 重命名(F2)
  • [ ] 实现拖拽操作
  • [ ] 拖拽移动
  • [ ] Ctrl+拖拽复制
  • [ ] 实现右键菜单
  • [ ] 新建文件夹
  • [ ] 属性
  • [ ] 编写单元测试

Week 4, Day 1: 文件搜索

  • [ ] 实现搜索框
  • [ ] 实时搜索
  • [ ] 通配符支持
  • [ ] 实现搜索结果
  • [ ] 高亮匹配
  • [ ] 按相关性排序
  • [ ] 编写单元测试

Week 4, Day 2-3: FilePickerDialog 文件选择器

  • [ ] 创建 FilePickerDialog 类
  • [ ] 系统级 API
  • [ ] 所有 App 可调用
  • [ ] 实现打开文件对话框
  • [ ] 文件选择
  • [ ] 过滤器(文件类型)
  • [ ] 多选支持
  • [ ] 实现保存文件对话框
  • [ ] 文件名输入
  • [ ] 覆盖确认
  • [ ] 实现 IPC 接口
  • [ ] 跨进程调用
  • [ ] 编写单元测试

Week 4-5: MediaService 媒体服务

Week 4, Day 1-2: 媒体服务核心

  • [ ] 创建 MediaService(独立进程)
  • [ ] 实现媒体会话管理
  • [ ] MediaSession
  • [ ] 会话生命周期
  • [ ] 多会话管理(优先级队列)
  • [ ] 实现媒体元数据
  • [ ] 标题/艺术家/专辑
  • [ ] 封面图
  • [ ] 时长/位置
  • [ ] 实现 IPC 接口
  • [ ] play() / pause() / stop()
  • [ ] next() / previous()
  • [ ] seek(position)
  • [ ] setVolume(volume)
  • [ ] 编写单元测试

Week 4, Day 3-4: 媒体控制集成

  • [ ] 状态栏媒体卡片
  • [ ] 显示当前播放
  • [ ] 播放/暂停按钮
  • [ ] 锁屏媒体卡片
  • [ ] 显示当前播放
  • [ ] 完整控制(上一曲/下一曲)
  • [ ] 控制中心媒体区块
  • [ ] 与 Phase 11 集成
  • [ ] 进度条
  • [ ] 音量控制
  • [ ] 编写集成测试

Week 4, Day 5: 音频设备集成

  • [ ] 实现输出设备切换
  • [ ] 设备列表
  • [ ] 默认设备
  • [ ] 实现音量控制
  • [ ] 系统音量
  • [ ] 媒体音量
  • [ ] 编写单元测试

Week 5, Day 1-3: 测试与优化

  • [ ] Widget 沙箱测试
  • [ ] 崩溃隔离
  • [ ] 资源限制
  • [ ] 文件管理器测试
  • [ ] 大文件处理
  • [ ] 特殊字符处理
  • [ ] 媒体服务测试
  • [ ] 多应用并发
  • [ ] 会话切换
  • [ ] 性能测试
  • [ ] 内存泄漏检查

Week 5, Day 4-5: 文档与发布

  • [ ] API 文档
  • [ ] Widget API
  • [ ] FilePicker API
  • [ ] MediaService API
  • [ ] 使用示例
  • [ ] 代码审查

三、验收标准

功能验收

  • [ ] Widget 可正常加载和交互
  • [ ] 文件管理器可管理文件
  • [ ] 媒体服务可控制播放
  • [ ] 壁纸系统正常工作
  • [ ] FilePicker 可被其他应用调用

性能验收

  • [ ] Widget 刷新率可配置
  • [ ] 文件操作响应 < 100ms
  • [ ] 媒体控制延迟 < 50ms

代码质量

  • [ ] 单元测试覆盖率 > 80%
  • [ ] 符合项目代码规范

四、文件清单(待实现)

头文件

  • [ ] ui/desktop/widget/widget_framework.h
  • [ ] ui/desktop/widget/widget_base.h
  • [ ] ui/desktop/widget/widget_container.h
  • [ ] ui/desktop/widget/widget_api.h
  • [ ] ui/desktop/widget/widget_config.h
  • [ ] ui/desktop/widget/builtin/clock_widget.h
  • [ ] ui/desktop/widget/builtin/calendar_widget.h
  • [ ] ui/desktop/widget/builtin/weather_widget.h
  • [ ] ui/desktop/widget/builtin/resource_monitor_widget.h
  • [ ] ui/desktop/widget/wallpaper_manager.h
  • [ ] ui/desktop/app/file_manager_app.h
  • [ ] ui/desktop/app/file_picker_dialog.h
  • [ ] ui/desktop/app/file_tree_view.h
  • [ ] ui/desktop/app/file_list_view.h
  • [ ] ui/desktop/service/media_service.h
  • [ ] ui/desktop/service/media_session.h

源文件

  • [ ] src/desktop/widget/widget_framework.cpp
  • [ ] src/desktop/widget/widget_base.cpp
  • [ ] src/desktop/widget/widget_container.cpp
  • [ ] src/desktop/widget/widget_api.cpp
  • [ ] src/desktop/widget/builtin/clock_widget.cpp
  • [ ] src/desktop/widget/builtin/calendar_widget.cpp
  • [ ] src/desktop/widget/builtin/weather_widget.cpp
  • [ ] src/desktop/widget/builtin/resource_monitor_widget.cpp
  • [ ] src/desktop/widget/wallpaper_manager.cpp
  • [ ] src/desktop/app/file_manager_app.cpp
  • [ ] src/desktop/app/file_picker_dialog.cpp
  • [ ] src/desktop/app/file_tree_view.cpp
  • [ ] src/desktop/app/file_list_view.cpp
  • [ ] src/desktop/service/media_service.cpp
  • [ ] src/desktop/service/media_session.cpp

测试文件

  • [ ] tests/unit/desktop/widget/test_widget_framework.cpp
  • [ ] tests/unit/desktop/widget/test_widget_container.cpp
  • [ ] tests/unit/desktop/widget/test_clock_widget.cpp
  • [ ] tests/unit/desktop/widget/test_calendar_widget.cpp
  • [ ] tests/unit/desktop/widget/test_weather_widget.cpp
  • [ ] tests/unit/desktop/widget/test_resource_monitor.cpp
  • [ ] tests/unit/desktop/widget/test_wallpaper_manager.cpp
  • [ ] tests/unit/desktop/app/test_file_manager.cpp
  • [ ] tests/unit/desktop/app/test_file_picker.cpp
  • [ ] tests/unit/desktop/service/test_media_service.cpp
  • [ ] tests/integration/desktop/test_widget_integration.cpp
  • [ ] tests/integration/desktop/test_file_operations.cpp
  • [ ] tests/integration/desktop/test_media_integration.cpp

资源文件

  • [ ] assets/widgets/clock/
  • [ ] assets/widgets/calendar/
  • [ ] assets/widgets/weather/
  • [ ] assets/widgets/resource_monitor/
  • [ ] assets/wallpapers/
  • [ ] apps/filemanager/icons/

五、相关文档


最后更新: 2026-03-21