# 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//library/...`(与 Dashboard 一致,兼容读全局旧值) | ## 本轮优化(2026-07-27) | 项 | 说明 | |---|---| | 设置缓存清理 | `clearRecommendCache` / `clearImageCache` 已接线 + toast | | 代理设置 | 设置-通用「配置…」打开 `ProxySettingsDialog` | | 列表性能 | MediaCard DPR sourceSize、滑动关 smooth/mipmap;Grid/Section 减小 cacheBuffer | | 首页 | 区块 Loader 异步;reduceMotion 跳过入场动画 | | 路由 | reduceMotion / 播放器页瞬时切页,少缩放动画 | ## 后续可选 - 播放器内弹幕设置 / 识别 / 字幕对话框 QML 化 - 主页排序改为拖拽(当前为上下按钮,足够用)