Files
cmautobuy/docs/task/5-实现设置页设备管理-ui-与事件接口.md
T

76 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 5 实现设置页设备管理 UI 与事件接口
- 类型:需求
- 父级大工单:#1
- 所属 MVP / 版本:#2 / MVP
- 状态:已完成
- 日期:2026-08-06
- Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/5
## 背景与目标
原设备管理是独立导航页,只提供无线地址和连接按钮,设置页还是占位内容。本任务把设备管理并入设置页,完成可独立测试的界面、互斥设备选择模型和事件接口,为后续设备号、SQLite 与 ADB 服务接入提供稳定边界。
## 最终方案
- 设置页使用可滚动布局,包含“当前设备”和“Android 设备”两组。
- 当前设备显示只读设备号和可编辑设备名,设备号在服务接入前显示“待生成”。
- Android 设备组提供无线地址、搜索、连接、保存、删除和六列表格。
- 表格使用 `TableView + QAbstractTableModel`,以 Android 序列号作为稳定身份。
- 无真实设备时按表格可视高度显示不可交互空行;真实设备数据到达后只显示实际设备行。
- 左侧复选框表示待保存的当前设备,和普通行选择分离,同一时间最多勾选一台正常设备。
- `SettingsPageEventBinder` 负责按钮和勾选事件,向应用层发出搜索、连接、保存和删除信号。
- 页面不执行 ADB、SQLite 或硬件信息读取;这些阻塞操作由后续服务工单处理。
- 主窗口移除独立设备页面,只保留“PDD 任务”和“设置”两个顶级模块。
本任务属于现有页面的局部扩展,布局和交互已通过文字方案确认,因此没有制作 HTML 原型。
## 改了哪些
- `client/src/settings_ui.py`:新增设备视图模型、互斥勾选表格、空数据占位行、两组设备管理界面和更新方法。
- `client/src/settings_ui_event.py`:新增搜索、连接、保存、删除事件绑定、输入校验和忙碌状态控制。
- `client/src/ui_main.py`:移除独立设备页面的导入、创建和导航项。
## 验收结果
| 验收标准 | 结果 |
|---|---|
| 主窗口只保留 PDD 任务和设置两个顶级模块 | 通过 |
| 设置页包含当前设备和 Android 设备两组 | 通过 |
| 当前设备包含只读设备号和可编辑设备名 | 通过 |
| Android 设备组包含无线地址和四个命令按钮 | 通过 |
| 表格显示选择、设备号、连接方式、型号、Android 版本和状态 | 通过 |
| 使用 `TableView + QAbstractTableModel` 且最多勾选一台 | 通过 |
| 四类组件事件由 `settings_ui_event.py` 绑定并发出 | 通过 |
| 空设备列表仍保留表格和表头 | 通过 |
| 空设备列表用不可交互空行填满可视区域,且无多余垂直滚动条 | 通过 |
| 未执行真实 ADB、SQLite 或硬件信息读取 | 通过 |
## 测试
- 执行的命令:
```powershell
C:/Python310/python.exe -m py_compile src/settings_ui.py src/settings_ui_event.py src/ui_main.py
```
```powershell
$env:QT_QPA_PLATFORM="offscreen"
# 创建 SettingsPage 和 MainWindow,注入 USB、Wi-Fi、离线模拟设备,
# 验证互斥勾选、按钮事件、空表格及设备导航已移除。
Remove-Item Env:QT_QPA_PLATFORM
```
- 结果:语法检查通过;离屏界面与事件测试输出 `SETTINGS_DEVICE_UI_OK`;空设备占位行测试输出 `ANDROID_EMPTY_GRID_OK`;`git diff --check` 通过。
- **没验证到的部分**:未执行真实 ADB 搜索、无线连接、USB/Wi-Fi 删除、设备号生成、SQLite 保存或真机测试;未人工验证 200% 缩放、深色、高对比度和 Narrator。离屏环境存在既有的 PyQt5 字体目录缺失警告,不影响断言。
## 遗留问题
- 后续工单实现稳定设备号生成和非敏感设置持久化。
- 后续工单使用后台线程接入真实 ADB 搜索、连接、保存选择和删除语义。
## 相关提交
- `41f7cbb` 实现设置页设备管理界面与事件接口
- `1bc597f` 无设备时填充 Android 空表格