mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-20 23:54:26 +08:00
6.7 KiB
6.7 KiB
移除视频壁纸功能规格说明书
Why
当前 LanMountainDesktop 项目包含视频壁纸功能,该功能引入了以下复杂性和依赖:
- 引入了 LibVLCSharp.Avalonia、VideoLAN.LibVLC.Windows、VideoLAN.LibVLC.Mac 等重型依赖
- 在主窗口中残留大量视频壁纸相关代码和字段
- 在设置页面中保留了视频类型选择器和相关 UI 元素
- 在本地化文件中保留了视频壁纸相关文本
- 增加了应用复杂度和维护成本
用户决定移除该功能以简化代码库。
What Changes
- 移除 LibVLCSharp.Avalonia 及 VideoLAN.LibVLC.* NuGet 依赖
- 移除 AppearanceThemeService.cs 中的 LibVlcVideoWallpaperSeedExtractor 类和 IVideoWallpaperSeedExtractor 接口
- 移除 MainWindow.axaml.cs 中的视频壁纸相关字段和清理代码
- 移除 MainWindow.SettingsHardCut.Stubs.cs 中的视频壁纸相关方法
- 移除 MainWindow.axaml 中的 DesktopVideoWallpaperImage 和 DesktopVideoWallpaperView 控件
- 移除 WallpaperSettingsPage.axaml 中的视频类型选择器和视频模式提示
- 移除 WallpaperSettingsPageViewModel.cs 中的 IsVideo、VideoModeHintText 等属性
- 移除 SettingsContracts.cs 中 WallpaperMediaType 枚举的 Video 值
- 移除 SettingsDomainServices.cs 中 WallpaperMediaService 类的视频扩展名检测逻辑
- 移除本地化文件中的视频壁纸相关文本
Impact
Affected specs
- 壁纸设置功能规格
- 主窗口桌面层规格
Affected code
LanMountainDesktop.csproj- NuGet 依赖配置Services/AppearanceThemeService.cs- 视频壁纸种子提取器Views/MainWindow.axaml.cs- 主窗口字段和清理逻辑Views/MainWindow.SettingsHardCut.Stubs.cs- 视频壁纸控制方法Views/MainWindow.axaml- 视频壁纸 UI 控件Views/SettingsPages/WallpaperSettingsPage.axaml- 壁纸设置页面 UIViewModels/WallpaperSettingsPageViewModel.cs- 壁纸设置 ViewModelServices/Settings/SettingsContracts.cs- 壁纸媒体类型枚举Services/Settings/SettingsDomainServices.cs- 壁纸媒体服务Localization/zh-CN.json- 本地化文本
REMOVED Requirements
Requirement: 视频壁纸播放功能
Reason: 用户决定移除视频壁纸功能以简化代码库,减少重型依赖
Migration:
- 用户如需动态壁纸,可使用静态图片壁纸替代
- 现有视频壁纸设置将被重置为纯色背景
Scenario: 视频壁纸播放
- GIVEN 用户选择了视频文件作为壁纸
- WHEN 系统检测到视频格式
- THEN 系统不再支持视频壁纸播放
- AND THEN 系统提示用户该文件类型不受支持
Requirement: LibVLC 依赖
Reason: 移除视频壁纸功能后不再需要 LibVLC 库
Migration: 从项目依赖中移除以下包:
- LibVLCSharp.Avalonia
- VideoLAN.LibVLC.Windows
- VideoLAN.LibVLC.Mac
Requirement: 视频壁纸种子提取
Reason: 移除视频壁纸功能后不再需要从视频中提取颜色种子
Migration: 移除 LibVlcVideoWallpaperSeedExtractor 类和 IVideoWallpaperSeedExtractor 接口
Requirement: 视频壁纸 UI 控件
Reason: 移除视频壁纸功能后不再需要视频显示控件
Migration: 移除 DesktopVideoWallpaperImage 和 DesktopVideoWallpaperView 控件
Requirement: 视频类型选择器
Reason: 移除视频壁纸功能后不再需要视频类型选项
Migration: 从壁纸类型选择器中移除"视频"选项
MODIFIED Requirements
Requirement: 壁纸媒体类型检测
当前: 支持检测 None、Image、Video 三种类型
修改后: 仅支持检测 None、Image 两种类型
Scenario: 检测媒体类型
- WHEN 用户选择壁纸文件
- THEN 系统仅检测图片格式(.png, .jpg, .jpeg, .bmp, .gif, .webp)
- AND THEN 视频格式文件将被识别为不受支持的类型
Requirement: 壁纸类型选项
当前: 提供图片、视频、纯色三种类型选项
修改后: 仅提供图片、纯色两种类型选项
Scenario: 壁纸类型选择
- WHEN 用户打开壁纸设置页面
- THEN 类型选择器仅显示"图片"和"纯色"选项
- AND THEN "视频"选项不再显示
Requirement: 壁纸设置页面预览
当前: 根据类型显示图片预览、视频预览或纯色预览
修改后: 根据类型显示图片预览或纯色预览
Scenario: 预览显示
- WHEN 用户选择壁纸类型
- THEN 系统仅显示图片预览或纯色预览
- AND THEN 视频预览区域不再显示
Requirement: 主窗口壁纸显示
当前: 支持显示静态图片壁纸和视频壁纸
修改后: 仅支持显示静态图片壁纸
Scenario: 壁纸显示更新
- WHEN 用户应用新壁纸
- THEN 系统仅处理静态图片壁纸显示
- AND THEN 视频壁纸播放逻辑不再执行
ADDED Requirements
Requirement: 清理残留代码
系统 SHALL 完全移除视频壁纸功能相关的所有代码和资源。
Scenario: 主窗口字段清理
- WHEN 执行代码清理
- THEN 移除以下字段:
_videoWallpaperPosterBitmap_videoWallpaperPosterPath_libVlc_videoWallpaperPlayer_videoWallpaperMedia_wallpaperVideoPath
Scenario: 主窗口方法清理
- WHEN 执行代码清理
- THEN 移除以下方法:
StartVideoWallpaperStopVideoWallpaperTryCaptureVideoWallpaperPosterFrameApplyVideoWallpaperPosterVisibilityUpdateWallpaperDisplay中的视频处理分支
Scenario: ViewModel 属性清理
- WHEN 执行代码清理
- THEN 移除以下属性:
IsVideoVideoModeHintTextIsImageOrVideo(改为IsImage)
Scenario: 本地化文本清理
- WHEN 执行代码清理
- THEN 移除以下本地化键:
settings.wallpaper.type.videosettings.wallpaper.video_appliedsettings.wallpaper.video_modesettings.wallpaper.video_restoredsettings.wallpaper.video_not_foundsettings.wallpaper.video_player_unavailablesettings.wallpaper.video_play_failed_format
Requirement: 依赖项清理
系统 SHALL 从项目文件中移除 LibVLC 相关 NuGet 包引用。
Scenario: NuGet 包移除
- WHEN 执行依赖清理
- THEN 移除以下包引用:
LibVLCSharp.AvaloniaVideoLAN.LibVLC.WindowsVideoLAN.LibVLC.Mac
Requirement: 构建验证
系统 SHALL 在移除视频壁纸功能后保持正常构建和运行。
Scenario: 构建成功
- WHEN 执行项目构建
- THEN 构建成功无错误
- AND THEN 所有现有测试通过
Scenario: 应用启动
- WHEN 启动应用程序
- THEN 应用正常启动
- AND THEN 壁纸设置功能正常工作(仅支持图片和纯色)