feat: add reminder scheduling and sound controls

This commit is contained in:
2026-06-01 21:01:11 +08:00
parent 4a7b739eea
commit c794e32023
36 changed files with 2494 additions and 35 deletions
+62 -1
View File
@@ -35,6 +35,9 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物项目
- Google Gemini 原生聊天请求
- 角色文件夹导入和角色切换
- 删除用户导入角色
- 本地一次性提醒:聊天创建、查询、取消,重启后 pending 提醒不丢
- 提醒到点气泡提示、拖动后延迟提示和隐藏时托盘通知
- 提醒音效切换、试听、用户 wav 导入和删除
- Windows 发布打包脚本和 Inno Setup 安装器脚本
- Windows GUI 子系统,Release exe 双击不弹控制台窗口
@@ -50,6 +53,7 @@ QtDesktopPet 是一个基于 Qt Widgets / C++17 的 Windows 桌面宠物项目
- C++17
- Qt 6 Widgets
- Qt 6 Network
- Qt 6 Multimedia
- CMake
- PNG 图片序列帧
- JSON 配置文件
@@ -145,6 +149,62 @@ resources/characters/shiroko/
- 隐藏到托盘时可释放非保护动画缓存
- `enableLazyLoad=false` 时仍保持启动阶段加载全部状态帧的兼容行为
## 定时提醒和音效
当前支持通过聊天输入创建一次性本地提醒,例如:
```text
10分钟后提醒我喝水
半小时后提醒我休息
一个半小时后提醒我喝水
明天9点提醒我开会
后天9点提醒我开会
6月3日9点提醒我提交
下周一上午10点提醒我周会
提醒列表
取消喝水提醒
```
提醒数据保存到:
```text
QStandardPaths::AppConfigLocation/reminders.json
```
提醒文件损坏时会备份为:
```text
reminders.broken.yyyyMMdd-HHmmss.json
```
内置提醒音效位于:
```text
resources/sounds/reminders/
```
用户导入的提醒音效保存到:
```text
QStandardPaths::AppDataLocation/sounds/reminders/
```
音效规则:
- 默认音效为 `reminder_default`
- 提醒触发时使用当前设置页选择的全局音效;修改音效后对所有未触发提醒立即生效
- 内置音效可切换、可试听,但不能在设置页删除
- 用户音效只支持导入 PCM wav
- 用户导入音效可切换、可试听、可删除
- 删除当前用户音效后会回退到 `reminder_default`
触发规则:
- 桌宠可见时显示气泡,不发系统通知
- 桌宠隐藏时发 Windows 托盘通知,不在下次显示时补气泡
- 用户拖动中不打断 `drag`,拖动结束后显示气泡
- 重复提醒尚未支持,包含“每天 / 每周 / 每月”等语义时会提示暂不支持
## 配置和日志
应用配置保存到 Qt 标准配置目录:
@@ -197,6 +257,7 @@ QtDesktopPet.exe
Qt runtime
resources/characters/
resources/icons/
resources/sounds/
LICENSE
README.md
```
@@ -278,7 +339,7 @@ reports/perf/
docs/performance_stability_check.md
```
发布包应排除 `tools/``docs/``reports/``build/``dist/``release_packages/``.git/`,只保留运行必需文件、`resources/characters/``resources/icons/``LICENSE` 和必要说明。
发布包应排除 `tools/``docs/``reports/``build/``dist/``release_packages/``.git/`,只保留运行必需文件、`resources/characters/``resources/icons/``resources/sounds/``LICENSE` 和必要说明。
## AI 配置和聊天