Files
qemby/ai/qml-migration-status.md
T
dela 2ee3a234a6 feat: complete QML shell migration and ship 0.0.8 Arch package
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.
2026-07-27 16:41:18 +08:00

3.2 KiB
Raw Blame History

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