feat: implement image list panel UI for garment and print assets

Implement ImageListPanel with two _AssetPanel sub-widgets (garment/print)
separated by a vertical QSplitter:

- _AssetItemWidget: checkbox (batch select) + 52px thumbnail + subfolder
  label + filename; WA_StyledBackground enables preview highlight (#cce4f7)
- _AssetPanel: open-folder button → scan_image_folder(); stats row with
  tristate 全选 checkbox + "含子文件夹·共N 已选M" label + sort selector
  (文件夹+名称 / 名称); QListWidget with NoSelection mode so preview
  highlight and batch checkbox are visually distinct
- ImageListPanel: exposes garment_preview_changed, print_preview_changed,
  garments_changed, prints_changed signals for downstream panels

File scanning delegates to services/file_service.scan_image_folder();
no scanning logic duplicated in UI layer.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 08:44:17 +08:00
co-authored by Claude Sonnet 4.6
parent 0887cb35aa
commit 94d30ab183
2 changed files with 448 additions and 15 deletions
+13 -13
View File
@@ -290,22 +290,22 @@
任务:
- [ ] 先读取 `src/app/widgets/image_list_panel.py` 现有内容
- [ ] 实现衣服图片列表
- [ ] 实现印花图片列表
- [ ] 实现打开文件夹按钮
- [ ] 实现全选和取消全选
- [ ] 实现单张勾选和取消勾选
- [ ] 显示已选数量和总数量(例如:`含子文件夹 · 共 12`)
- [ ] 显示来源子文件夹标签和文件名
- [ ] 实现排序选择器(默认按文件夹+名称排序)
- [ ] 点击素材后更新当前预览选择
- [x] 先读取 `src/app/widgets/image_list_panel.py` 现有内容
- [x] 实现衣服图片列表
- [x] 实现印花图片列表
- [x] 实现打开文件夹按钮
- [x] 实现全选和取消全选
- [x] 实现单张勾选和取消勾选
- [x] 显示已选数量和总数量(例如:`含子文件夹 · 共 12`)
- [x] 显示来源子文件夹标签和文件名
- [x] 实现排序选择器(默认按文件夹+名称排序)
- [x] 点击素材后更新当前预览选择
验收:
- [ ] 支持递归导入素材
- [ ] 当前预览选中态和批量勾选态可区分
- [ ] 不在 UI 层重复实现文件扫描规则
- [x] 支持递归导入素材
- [x] 当前预览选中态和批量勾选态可区分
- [x] 不在 UI 层重复实现文件扫描规则
## 9. 图像预览编辑器