Phase 2: Base 库核心 TODO¶
状态: ⬜ 待开始 预计周期: 3~4 周 依赖阶段: Phase 0, Phase 1 目标交付物: 主题引擎、动画管理器、DPI 适配、配置中心、日志系统
一、阶段目标¶
核心目标¶
建立所有上层模块依赖的基础设施,包括主题引擎、动画管理、分辨率适配、配置中心和日志系统。
具体交付物¶
- [ ]
ThemeEngine主题引擎模块 - [ ]
AnimationManager动画管理器 - [ ]
DPIManager分辨率适配管理器 - [ ]
ConfigStore配置中心 - [ ]
Logger日志系统 - [ ] 各模块单元测试
二、Week 1: 主题引擎¶
Day 1-2: 基础结构¶
- [ ] 创建 ThemeEngine 类框架
- [ ] 定义
Theme数据结构 - [ ] 单例模式实现
- [ ] 信号定义
- [ ] 定义主题数据结构
- [ ]
Theme主结构 - [ ]
ColorVariables - [ ]
SizeVariables - [ ]
FontVariables - [ ] 实现主题加载器
ThemeLoader - [ ] JSON 解析
- [ ] 文件系统扫描
- [ ] 创建默认主题包
- [ ]
assets/themes/default/theme.json - [ ]
assets/themes/default/variables/colors.json - [ ]
assets/themes/default/variables/sizes.json - [ ]
assets/themes/default/variables/fonts.json
Day 3: 变量系统¶
- [ ] 实现变量解析器
VariableResolver - [ ] 点分隔路径支持 (如
text.primary) - [ ] 嵌套对象解析
- [ ] 支持点分隔路径
- [ ] 实现变量继承
- [ ] 父主题变量覆盖
- [ ] 缺失变量回退
Day 4: QSS 处理¶
- [ ] 实现 QSS 变量替换
QSSProcessor - [ ]
@variable语法解析 - [ ] 递归替换
- [ ] 实现 QSS 合并
- [ ] 多文件合并
- [ ] 优先级处理
- [ ] 支持主题继承
- [ ] 继承链解析
- [ ] 循环继承检测
Day 5: 集成与测试¶
- [ ] 集成到应用
- [ ] Application 初始化
- [ ] QApplication::setStyleSheet()
- [ ] 编写单元测试
- [ ] 变量查询测试
- [ ] QSS 处理测试
- [ ] 继承测试
- [ ] 性能优化
- [ ] 目标: 热重载 < 100ms
三、Week 2: 动画管理器¶
Day 1-2: 核心功能¶
- [ ] 创建 AnimationManager 类
- [ ] 单例模式
- [ ] 动画列表管理
- [ ] 实现基础动画创建
- [ ]
createPropertyAnimation() - [ ] 动画生命周期管理
- [ ] 实现 HWTier 降级逻辑
- [ ] Low 档: 时长归零
- [ ] Mid 档: 简化动画
- [ ] High 档: 完整动画
- [ ] 实现
adjustDuration()方法
Day 3: 预定义动画¶
- [ ] 实现淡入淡出
- [ ]
createFadeIn() - [ ]
createFadeOut() - [ ] 实现滑动动画
- [ ]
createSlideIn() - [ ] 方向支持
- [ ] 实现缩放动画
- [ ]
createScale() - [ ] 实现旋转动画
- [ ]
createRotation()
Day 4: 组动画¶
- [ ] 实现并行动画组
- [ ]
createParallelGroup() - [ ] 同步播放
- [ ] 实现串行动画组
- [ ]
createSequentialGroup() - [ ] 顺序播放
- [ ] 实现动画生命周期管理
- [ ] 启动/暂停/停止
- [ ] 清理机制
Day 5: 测试与优化¶
- [ ] 编写单元测试
- [ ] 各动画类型测试
- [ ] 降级逻辑测试
- [ ] 性能测试
- [ ] 帧率测试
- [ ] CPU 占用
- [ ] 内存泄漏检查
- [ ] Valgrind 检查
- [ ] 动画对象清理
四、Week 3: DPI 管理器与配置中心¶
Day 1-2: DPI 管理器¶
- [ ] 创建 DPIManager 类
- [ ] 单例模式
- [ ] 屏幕参数检测
- [ ] 实现屏幕检测
- [ ] QScreen 查询
- [ ] 物理尺寸计算
- [ ] 实现 dp/sp 转换
- [ ]
dp()方法 - [ ]
sp()方法 - [ ] 基准 DPI 160
- [ ] 实现模拟器注入接口
- [ ]
injectScreenParameters() - [ ]
clearInjectedParameters()
Day 3-4: 配置中心¶
- [ ] 创建 ConfigStore 类
- [ ] 三层存储 (System/User/App)
- [ ] 命名空间支持
- [ ] 实现层级存储
- [ ] 点分隔键名
- [ ] 优先级处理
- [ ] 实现变更监听
- [ ]
watch()方法 - [ ] 信号触发
- [ ] 实现配置持久化
- [ ] QSettings 包装
- [ ] 文件格式
Day 5: 测试¶
- [ ] 跨平台测试
- [ ] Linux 测试
- [ ] Windows 测试
- [ ] 单元测试
- [ ] DPI 转换测试
- [ ] 配置存储测试
- [ ] 集成测试
五、Week 4: 日志系统与集成¶
Day 1-2: 日志系统¶
- [ ] 创建 Logger 类
- [ ] 单例模式
- [ ] 等级过滤
- [ ] 实现 FileSink
- [ ] 文件轮转
- [ ] 异步写入
- [ ] 实现 ConsoleSink
- [ ] 彩色输出
- [ ] 格式化
- [ ] 实现 NetworkSink
- [ ] UDP 发送
- [ ] 远程日志
Day 3: 日志增强¶
- [ ] 实现日志轮转
- [ ] 大小限制
- [ ] 文件数量限制
- [ ] 实现标签过滤
- [ ] 白名单
- [ ] 黑名单
- [ ] 实现彩色输出
- [ ] ANSI 颜色码
- [ ] Windows 支持
Day 4: 集成测试¶
- [ ] 全模块集成
- [ ] Theme + Animation
- [ ] DPI + Config
- [ ] 端到端测试
- [ ] 应用启动流程
- [ ] 配置加载流程
- [ ] 性能测试
- [ ] 启动时间
- [ ] 内存占用
Day 5: 文档与发布¶
- [ ] API 文档
- [ ] Doxygen 注释
- [ ] 使用示例
- [ ] 使用示例
- [ ] 主题切换
- [ ] 动画使用
- [ ] Code Review
六、验收标准¶
主题引擎¶
- [ ] 支持动态切换主题
- [ ] 支持变量继承
- [ ] Low 档位自动禁用阴影/圆角/渐变
- [ ] 热重载时间 < 100ms
动画管理器¶
- [ ] Low 档位动画时长归零
- [ ] 所有预定义动画正常工作
- [ ] 无内存泄漏
- [ ] 动画不阻塞主线程
DPI 管理器¶
- [ ] dp/sp 转换准确
- [ ] 支持模拟器注入
- [ ] 热插拔屏幕自动适配
配置中心¶
- [ ] 层级存储正常
- [ ] 变更监听触发
- [ ] 持久化正常
日志系统¶
- [ ] 多 Sink 并发安全
- [ ] 日志轮转正常
- [ ] 性能影响 < 1%
七、文件清单¶
ThemeEngine¶
- [ ]
include/CFDesktop/Base/ThemeEngine/ThemeEngine.h - [ ]
include/CFDesktop/Base/ThemeEngine/Theme.h - [ ]
include/CFDesktop/Base/ThemeEngine/ThemeLoader.h - [ ]
src/base/theme/ThemeEngine.cpp - [ ]
src/base/theme/ThemeLoader.cpp - [ ]
src/base/theme/QSSProcessor.cpp - [ ]
src/base/theme/VariableResolver.cpp
AnimationManager¶
- [ ]
include/CFDesktop/Base/AnimationManager/AnimationManager.h - [ ]
include/CFDesktop/Base/AnimationManager/Animation.h - [ ]
include/CFDesktop/Base/AnimationManager/PropertyAnimation.h - [ ]
include/CFDesktop/Base/AnimationManager/GroupAnimation.h - [ ]
src/base/animation/AnimationManager.cpp - [ ]
src/base/animation/PropertyAnimation.cpp - [ ]
src/base/animation/GroupAnimation.cpp
DPIManager¶
- [ ]
include/CFDesktop/Base/DPIManager/DPIManager.h - [ ]
include/CFDesktop/Base/DPIManager/DisplayInfo.h - [ ]
include/CFDesktop/Base/DPIManager/DPIConverter.h - [ ]
src/base/dpi/DPIManager.cpp - [ ]
src/base/dpi/DPIConverter.cpp
ConfigStore¶
- [ ]
include/CFDesktop/Base/ConfigStore/ConfigStore.h - [ ]
include/CFDesktop/Base/ConfigStore/ConfigNode.h - [ ]
include/CFDesktop/Base/ConfigStore/ConfigWatcher.h - [ ]
src/base/config/ConfigStore.cpp - [ ]
src/base/config/ConfigWatcher.cpp
Logger¶
- [ ]
include/CFDesktop/Base/Logger/Logger.h - [ ]
include/CFDesktop/Base/Logger/LogMessage.h - [ ]
include/CFDesktop/Base/Logger/LogSink.h - [ ]
include/CFDesktop/Base/Logger/FileSink.h - [ ]
include/CFDesktop/Base/Logger/ConsoleSink.h - [ ]
include/CFDesktop/Base/Logger/NetworkSink.h - [ ]
src/base/logging/Logger.cpp - [ ]
src/base/logging/FileSink.cpp - [ ]
src/base/logging/ConsoleSink.cpp - [ ]
src/base/logging/NetworkSink.cpp
资源文件¶
- [ ]
assets/themes/default/theme.json - [ ]
assets/themes/default/variables/colors.json - [ ]
assets/themes/default/variables/sizes.json - [ ]
assets/themes/default/variables/fonts.json - [ ]
assets/themes/default/styles/base.qss - [ ]
assets/themes/default/styles/widgets.qss - [ ]
assets/themes/default/styles/animations.qss - [ ]
configs/logging.conf
八、相关文档¶
最后更新: 2026-03-05