Replace the Widgets main shell with AppShellHost + QML routes, add a QML independent player window, and remove the legacy player/page Widgets stack. Also wire settings cache/proxy actions, fix quit-time engine teardown, improve list/home scroll performance, and update Arch packaging to 0.0.8.
74 lines
3.2 KiB
Markdown
74 lines
3.2 KiB
Markdown
# qEmby QML 迁移状态
|
||
|
||
更新时间:2026-07-27(设置缺口补全)
|
||
|
||
## 结论
|
||
|
||
**唯一外壳 = 全 QML**(`AppShellHost` + `AppShell.qml`)。
|
||
Widgets 页面壳与播放器栈已删除。
|
||
**独立播放窗 = 第二个 QML `ApplicationWindow`**(`IndependentPlayerHost` + `IndependentPlayerWindow.qml`)。
|
||
|
||
保留 `QApplication`:托盘、文件对话框、业务 Widget 对话框(弹幕设置/识别、字幕设置、库/用户管理等)仍需要。
|
||
|
||
## 播放路径
|
||
|
||
| 模式 | 实现 |
|
||
|---|---|
|
||
| 壳内嵌入 | `PlayerRouteController` → 路由 `player` → `PlayerPage` |
|
||
| 独立窗口 | `IndependentPlayerHost` → 二级引擎 → `IndependentPlayerWindow` |
|
||
| 外部播放器 | `PlaybackManager` + `ExternalPlayerIPC` |
|
||
|
||
## 已删除(播放器栈 + 无引用 Widgets)
|
||
|
||
**播放器:** `PlayerWindow` `PlayerView` `NativeDanmakuOverlay` `MpvWidget` 及 OSD/切集/统计/长按/seek bubble 等。
|
||
|
||
**孤儿 UI(约 35 组,无 live `#include` 路径):**
|
||
`MediaGridWidget` `Horizontal*Gallery` `MediaCardDelegate` `MediaListModel`
|
||
`Detail*Widget` `AdminUserCard` `CollectionCard/Grid`
|
||
`SearchHistoryPopup`(Widgets 版,QML 已有)`ServerWheelView`
|
||
`DashboardSectionOrderWidget/Strip` `DanmakuServerDialog*`
|
||
`LibraryActionMenu` `TranscodingCodecList*`
|
||
`SettingsCard/SubPanel`(Widgets 版)`ThemeTransitionWidget` `ShadowOverlay`
|
||
`ShimmerWidget` `ModernScrollPanel` `ModernSortButton` `ModernNumberInput` 等。
|
||
|
||
## 仍保留的 Widgets
|
||
|
||
| 角色 | 代表 |
|
||
|---|---|
|
||
| 播放对话框 | `PlayerDanmaku*Dialog` `PlayerSubtitleSettingsDialog` `PlayerOverlayDialog` |
|
||
| 管理/库 | `LibraryCreate/EditDlg` `UserEditDialog` `TaskEditDialog` `*Codec*Dialog` |
|
||
| 媒体操作 | `MediaActionMenu` `MediaIdentify/ImageEditDialog` `AddToPlaylistDialog` |
|
||
| 通用 | `ModernDialogBase` `ModernToast` `ModernMessageBox` `ProxySettingsDialog` `WebDav*` |
|
||
| 播放核心 | `MpvController` `PlayerDanmakuController` |
|
||
|
||
## 启动
|
||
|
||
```bash
|
||
cmake --build cmake-build-debug --target qEmbyApp -j$(nproc)
|
||
./cmake-build-debug/bin/qEmbyApp
|
||
```
|
||
|
||
## 本轮设置补全
|
||
|
||
| 功能 | 位置 |
|
||
|---|---|
|
||
| 主页区块自定义排序(↑↓ + 重置) | `SettingsLibraryPage` + `SettingsViewModel::{customHomeSectionOrderEnabled,homeSectionOrder,moveHomeSection}` |
|
||
| 弹幕 API 服务器管理(选/启停/增删改) | `SettingsPlayerPage` + `DanmakuSettings` 桥接 |
|
||
| 缺失弹幕属性 | `danmakuSourceMode` / `AutoLoad` / `AutoMatch` / `WithRelated` / `CacheHours` |
|
||
| 库开关按服务器作用域 | `showContinueWatching` 等写入 `server/<id>/library/...`(与 Dashboard 一致,兼容读全局旧值) |
|
||
|
||
## 本轮优化(2026-07-27)
|
||
|
||
| 项 | 说明 |
|
||
|---|---|
|
||
| 设置缓存清理 | `clearRecommendCache` / `clearImageCache` 已接线 + toast |
|
||
| 代理设置 | 设置-通用「配置…」打开 `ProxySettingsDialog` |
|
||
| 列表性能 | MediaCard DPR sourceSize、滑动关 smooth/mipmap;Grid/Section 减小 cacheBuffer |
|
||
| 首页 | 区块 Loader 异步;reduceMotion 跳过入场动画 |
|
||
| 路由 | reduceMotion / 播放器页瞬时切页,少缩放动画 |
|
||
|
||
## 后续可选
|
||
|
||
- 播放器内弹幕设置 / 识别 / 字幕对话框 QML 化
|
||
- 主页排序改为拖拽(当前为上下按钮,足够用)
|