mirror of
https://github.com/wwiinnddyy/LanMountainDesktop.git
synced 2026-06-23 01:44:26 +08:00
207 lines
6.7 KiB
Markdown
207 lines
6.7 KiB
Markdown
# 移除视频壁纸功能规格说明书
|
||
|
||
## Why
|
||
|
||
当前 LanMountainDesktop 项目包含视频壁纸功能,该功能引入了以下复杂性和依赖:
|
||
1. 引入了 LibVLCSharp.Avalonia、VideoLAN.LibVLC.Windows、VideoLAN.LibVLC.Mac 等重型依赖
|
||
2. 在主窗口中残留大量视频壁纸相关代码和字段
|
||
3. 在设置页面中保留了视频类型选择器和相关 UI 元素
|
||
4. 在本地化文件中保留了视频壁纸相关文本
|
||
5. 增加了应用复杂度和维护成本
|
||
|
||
用户决定移除该功能以简化代码库。
|
||
|
||
## 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` - 壁纸设置页面 UI
|
||
- `ViewModels/WallpaperSettingsPageViewModel.cs` - 壁纸设置 ViewModel
|
||
- `Services/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** 移除以下方法:
|
||
- `StartVideoWallpaper`
|
||
- `StopVideoWallpaper`
|
||
- `TryCaptureVideoWallpaperPosterFrame`
|
||
- `ApplyVideoWallpaperPosterVisibility`
|
||
- `UpdateWallpaperDisplay` 中的视频处理分支
|
||
|
||
#### Scenario: ViewModel 属性清理
|
||
- **WHEN** 执行代码清理
|
||
- **THEN** 移除以下属性:
|
||
- `IsVideo`
|
||
- `VideoModeHintText`
|
||
- `IsImageOrVideo`(改为 `IsImage`)
|
||
|
||
#### Scenario: 本地化文本清理
|
||
- **WHEN** 执行代码清理
|
||
- **THEN** 移除以下本地化键:
|
||
- `settings.wallpaper.type.video`
|
||
- `settings.wallpaper.video_applied`
|
||
- `settings.wallpaper.video_mode`
|
||
- `settings.wallpaper.video_restored`
|
||
- `settings.wallpaper.video_not_found`
|
||
- `settings.wallpaper.video_player_unavailable`
|
||
- `settings.wallpaper.video_play_failed_format`
|
||
|
||
### Requirement: 依赖项清理
|
||
|
||
系统 SHALL 从项目文件中移除 LibVLC 相关 NuGet 包引用。
|
||
|
||
#### Scenario: NuGet 包移除
|
||
- **WHEN** 执行依赖清理
|
||
- **THEN** 移除以下包引用:
|
||
- `LibVLCSharp.Avalonia`
|
||
- `VideoLAN.LibVLC.Windows`
|
||
- `VideoLAN.LibVLC.Mac`
|
||
|
||
### Requirement: 构建验证
|
||
|
||
系统 SHALL 在移除视频壁纸功能后保持正常构建和运行。
|
||
|
||
#### Scenario: 构建成功
|
||
- **WHEN** 执行项目构建
|
||
- **THEN** 构建成功无错误
|
||
- **AND THEN** 所有现有测试通过
|
||
|
||
#### Scenario: 应用启动
|
||
- **WHEN** 启动应用程序
|
||
- **THEN** 应用正常启动
|
||
- **AND THEN** 壁纸设置功能正常工作(仅支持图片和纯色)
|