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.
3.2 KiB
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 |
启动
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 化
- 主页排序改为拖拽(当前为上下按钮,足够用)