197 lines
19 KiB
Markdown
197 lines
19 KiB
Markdown
# analysis/windows.md — Part 10(设置中心)与 Part 11(其它窗口)的工作底稿
|
||||
|
|
|
|||
|
|
负责人:windows(Part 10 / Part 11)
|
|||
|
|
工作方式:只读静态分析。未构建、未运行、未截图。所有结论来自源码文本与行号。
|
|||
|
|
|
|||
|
|
## 1. 已读文件清单(含读取范围)
|
|||
|
|
|
|||
|
|
### 1.1 设置中心(Part 10 证据)
|
|||
|
|
|
|||
|
|
| 文件 | 行数 | 读取范围 | 用途 |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| `repos/ClassIsland/ClassIsland/Views/SettingsWindowNew.axaml` | 266 | 全量 | 窗口尺寸、标题栏、导航、抽屉、遮罩、菜单 |
|
|||
|
|
| `repos/ClassIsland/ClassIsland/Views/SettingsWindowNew.axaml.cs` | 883 | 全量 | 导航构建、过滤、缓存、关闭/重启、URI、菜单动作 |
|
|||
|
|
| `repos/ClassIsland/ClassIsland/Models/Settings.cs` | 2655 | 1–900 精读 + 全部字段声明 grep(32–222、1836–1875) | 所有设置默认值 |
|
|||
|
|
| `Views/SettingPages/GeneralSettingsPage.axaml(.cs)` | 315 / 100 | 全量 | 基本页 |
|
|||
|
|
| `Views/SettingPages/AppearanceSettingsPage.axaml(.cs)` | 595 / 57 | 全量 | 外观页 |
|
|||
|
|
| `Views/SettingPages/WindowSettingsPage.axaml` | 276 | 全量 | 窗口页 |
|
|||
|
|
| `Views/SettingPages/ClockSettingsPage.axaml` | 95 | 全量 | 时钟页 |
|
|||
|
|
| `Views/SettingPages/StorageSettingsPage.axaml` | 111 | 全量 | 存储页 |
|
|||
|
|
| `Views/SettingPages/PrivacySettingsPage.axaml` | 42 | 全量 | 隐私页 |
|
|||
|
|
| `Views/SettingPages/AdvancedSettingsPage.axaml` | 77 | 全量 | 高级页 |
|
|||
|
|
| `Views/SettingPages/ErrorSettingsPage.axaml` | 35 | 全量 | 错误页 |
|
|||
|
|
| `Views/SettingPages/TestSettingsPage.axaml` | 17 | 全量 | 调试测试页 |
|
|||
|
|
| `Views/SettingPages/RefreshingSettingsPage.axaml` | 159 | 全量 | 翻新与迎新页 |
|
|||
|
|
| `Views/SettingPages/ManagementSettingsPage.axaml` | 117 | 全量 | 集控页 |
|
|||
|
|
| `Views/SettingPages/ManagementPolicySettingsPage.axaml` | 113 | 全量 | 集控策略页 |
|
|||
|
|
| `Views/SettingPages/ManagementCredentialsSettingsPage.axaml` | 101 | 全量 | 集控凭据页 |
|
|||
|
|
| `Views/SettingPages/AboutSettingsPage.axaml` | 319 | 全量 | 关于页 |
|
|||
|
|
| `Views/SettingPages/WeatherSettingsPage.axaml` | 332 | 全量 | 天气页 |
|
|||
|
|
| `Views/SettingPages/UpdateSettingsPage.axaml` | 403 | 全量 | 更新页 |
|
|||
|
|
| `Views/SettingPages/ThemesSettingsPage.axaml` | 368 | 全量 | 主题页 |
|
|||
|
|
| `Views/SettingPages/NotificationSettingsPage.axaml` | 497 | 全量 | 提醒页 |
|
|||
|
|
| `Views/SettingPages/ComponentsSettingsPage.axaml` | 644 | 全量 | 组件页 |
|
|||
|
|
| `Views/SettingPages/AutomationSettingsPage.axaml` | 402 | 全量 | 自动化页 |
|
|||
|
|
| `Views/SettingPages/PluginsSettingsPage.axaml(.cs)` | 884 / 680 | axaml 全量;cs 1–80 | 插件页 |
|
|||
|
|
| `Views/SettingPages/DebugPage.axaml` | 133 | 全量 | 调试页 |
|
|||
|
|
| `ClassIsland.Core/Abstractions/Controls/SettingsPageBase.cs` | 79 | 全量 | 页面基类、抽屉/重启命令 |
|
|||
|
|
| `ClassIsland.Core/Extensions/Registry/SettingsWindowRegistryExtensions.cs` | 81 | 全量 | 页面/分组注册机制 |
|
|||
|
|
| `ClassIsland.Core/Services/Registry/SettingsWindowRegistryService.cs` | 21 | 全量 | 注册表 |
|
|||
|
|
| `ClassIsland.Core/Attributes/SettingsPageInfo.cs` | 47 | 全量 | 页面元数据定义 |
|
|||
|
|
| `ClassIsland.Core/Enums/SettingsWindow/SettingsPageCategory.cs` | 24 | 全量 | 分类枚举与排序 |
|
|||
|
|
| `ClassIsland.Core/Attributes/GroupAttribute.cs` | 13 | 全量 | 分组 id |
|
|||
|
|
| `ClassIsland.Core/StylesBase.axaml` | 341 | 1–340 | settings-container、cardContainer、Slider tooltip、动画级别相关样式 |
|
|||
|
|
| `ClassIsland.Core/ThemeBase.axaml` | 57 | 全量 | `SettingsContainerWidth=960`、导航图标尺寸 20、开关默认「开/关」 |
|
|||
|
|
| `ClassIsland.Core/Controls/ListDetailView.axaml(.cs)` | 72 / 91 | 全量 | 设置页两栏布局、压缩阈值 800 |
|
|||
|
|
| `ClassIsland.Core/Controls/DrawerHost.axaml(.cs)` | 87 / 133 | 全量 | 设置抽屉宽度/动画/交互 |
|
|||
|
|
| `ClassIsland.Core/Controls/MyWindow.cs` | 244 | 全量 | 窗口基类、Mica、F3/F6/F7、Toast adorner |
|
|||
|
|
| `ClassIsland/App.Services.xaml.cs` | 326 | 130–209 | 页面注册顺序、分组、Excel/窗口 DI |
|
|||
|
|
| `ClassIsland/ViewModels/SettingsNewViewModel.cs` | 207 | 全量 | 窗口 VM 字段 |
|
|||
|
|
| `ClassIsland/Services/SettingsService.cs` | 294 | 100–294 | 即时保存、设置叠层、迁移 |
|
|||
|
|
| `ClassIsland/Views/SettingPages/PluginsSettingsPage.axaml.cs` | 680 | 1–80 | 插件市场首次刷新策略(7 天) |
|
|||
|
|
|
|||
|
|
### 1.2 其它窗口(Part 11 证据)
|
|||
|
|
|
|||
|
|
| 文件 | 行数 | 读取范围 |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `Views/WelcomeWindow.axaml(.cs)` | 30 / 244 | 全量 |
|
|||
|
|
| `Views/WelcomePages/WelcomePage.axaml(.cs)` | 102 / 70 | 全量 |
|
|||
|
|
| `Views/WelcomePages/LicensePage.axaml` | 44 | 全量 |
|
|||
|
|
| `Views/WelcomePages/RefreshingPage.axaml` | 91 | 全量 |
|
|||
|
|
| `Views/WelcomePages/GeneralPage.axaml` | 50 | 全量 |
|
|||
|
|
| `Views/WelcomePages/ColorThemePage.axaml` | 81 | 全量 |
|
|||
|
|
| `Views/WelcomePages/AppearancePage.axaml` | 80 | 全量 |
|
|||
|
|
| `Views/WelcomePages/SystemPage.axaml` | 101 | 全量 |
|
|||
|
|
| `Views/WelcomePages/FinishPage.axaml` | 99 | 全量 |
|
|||
|
|
| `Controls/OobeIntroAnimationControl.axaml(.cs)` | 144 / 165 | 全量 |
|
|||
|
|
| `Views/SplashWindow.axaml(.cs)` | 100 / 131 | 全量 |
|
|||
|
|
| `Services/SplashService.cs` | 93 | 全量 |
|
|||
|
|
| `Views/CrashWindow.axaml(.cs)` | 99 / 86 | 全量 |
|
|||
|
|
| `Views/RecoveryWindow.axaml` | 22 | 全量 |
|
|||
|
|
| `Views/RecoveryPages/HomePage.axaml` | 85 | 全量 |
|
|||
|
|
| `Views/RecoveryPages/RecoverBackupPage.axaml` | 45 | 全量 |
|
|||
|
|
| `Views/UpdateProgressWindow.xaml` | 39 | 全量 |
|
|||
|
|
| `Views/TimeAdjustmentWindow.axaml` | 101 | 全量(cs 未读) |
|
|||
|
|
| `Views/ClassChangingWindow.axaml(.cs)` | 273 / 193 | 全量 |
|
|||
|
|
| `Views/ClassPlanDetailsWindow.axaml` | 199 | 全量(cs 未读) |
|
|||
|
|
| `Views/ExcelImportWindow.xaml` | 992 | 全量 |
|
|||
|
|
| `Views/ExcelImportWindow.xaml.cs` | 824 | 1–45、320–429、735–824 + grep(整文件被 `#if false` 包裹) |
|
|||
|
|
| `Views/ExcelExportWindow.xaml` | 301 | 全量 |
|
|||
|
|
| `Views/ExcelExportWindow.xaml.cs` | 539 | 1–30(`#if false`,未读其余) |
|
|||
|
|
| `Views/DataTransferWindow.axaml(.cs)` | 20 / 57 | 全量 |
|
|||
|
|
| `Views/DataTransferPage.axaml` | 273 | 全量 |
|
|||
|
|
| `Views/DataTransferPage.axaml.cs` | 803 | 1–120 + grep(ImportDescription) |
|
|||
|
|
| `Views/TutorialCenterWindow.axaml(.cs)` | 249 / 85 | 全量 |
|
|||
|
|
| `Views/TutorialControllerWindow.axaml` | 46 | 全量(cs 未读) |
|
|||
|
|
| `Views/TutorialEditorWindow.axaml` | 378 | 全量(cs 未读) |
|
|||
|
|
| `Views/TutorialScriptEditWindow.axaml` | 29 | 全量(cs 未读) |
|
|||
|
|
| `Views/AuthorizeWindow.axaml` | 153 | 全量(cs 未读) |
|
|||
|
|
| `Controls/AuthorizeProvider/PasswordAuthorizeProvider.axaml` | 67 | 全量 |
|
|||
|
|
| `Controls/JoinManagementDialog.axaml` | 64 | 全量 |
|
|||
|
|
| `Views/AppLogsWindow.axaml` | 178 | 全量(cs 未读) |
|
|||
|
|
| `Views/ConfigErrorsWindow.xaml` | 106 | 全量 |
|
|||
|
|
| `Views/InstanceExistedWindow.xaml` | 54 | 全量 |
|
|||
|
|
| `Views/WindowsPicker.xaml` | 150 | 全量 |
|
|||
|
|
| `Views/WallpaperPreviewWindow.xaml` | 74 | 全量 |
|
|||
|
|
| `Views/TopmostEffectWindow.axaml` | 35 | 全量 |
|
|||
|
|
| `Views/ClearNotificationButtonWindow.xaml` | 15 | 全量 |
|
|||
|
|
| `Views/RefreshingScopesConfigDialog.axaml` | 60 | 全量 |
|
|||
|
|
| `Views/WindowRuleDebugWindow.axaml` | 30 | 全量 |
|
|||
|
|
| `Views/ScreenshotHelperWindow.axaml` | 37 | 全量 |
|
|||
|
|
| `Views/FeatureDebugWindow.xaml` | 246 | 1–120(其余为内部测试页签) |
|
|||
|
|
| `Views/DevPortalWindow.axaml` | 269 | 全量 |
|
|||
|
|
| `Views/ProfileSettingsWindow.axaml` | 2004 | 1–80(仅窗口外壳;内容归 part 06) |
|
|||
|
|
|
|||
|
|
## 2. 设置页面清单(导航顺序 = 注册顺序,证据 `App.Services.xaml.cs:156-184`、`SettingsWindowNew.axaml.cs:145-227`)
|
|||
|
|
|
|||
|
|
| # | id | 名称 | category | 分组 | 图标(未选/选中) | 关键策略过滤 |
|
|||
|
|
|---|---|---|---|---|---|---|
|
|||
|
|
| 1 | general | 基本 | Internal | classisland.general(通用) | EF27/EF26(默认) | DisableSettingsEditing |
|
|||
|
|
| 2 | clock | 时钟 | Internal | 通用 | E4C4/E4C3 | 同上 |
|
|||
|
|
| 3 | storage | 存储 | Internal | 通用 | E6B7/E6B6 | 同上 |
|
|||
|
|
| 4 | privacy | 隐私 | Internal | 通用 | EF65/EF64 | 同上 |
|
|||
|
|
| 5 | refreshing | 翻新与迎新 | Internal | 通用 | E0B8/E0B9 | 同上 |
|
|||
|
|
| 6 | advanced | 高级 | Internal | 通用 | F49F/F49E | 同上 |
|
|||
|
|
| 7 | components | 组件 | Internal | classisland.mainwindow(主界面) | E06F/E06F | 同上 |
|
|||
|
|
| 8 | appearance | 外观 | Internal | 主界面 | E51E/E51D | 同上 |
|
|||
|
|
| 9 | window | 窗口 | Internal | 主界面 | F485/F484 | 同上 |
|
|||
|
|
| 10 | notification | 提醒 | Internal | — | E02B/E02A | 同上 |
|
|||
|
|
| 11 | weather | 天气 | Internal | — | F44F/F44E | 同上 |
|
|||
|
|
| 12 | automation | 自动化 | Internal | — | EEF1/EEF0 | 同上 |
|
|||
|
|
| 13 | update | 更新 | Internal | — | E161/E160 | 注册条件:AllowedPackageTypes |
|
|||
|
|
| 14 | classisland.plugins | 插件 | External | — | E071/E071 | FullWidthPage;DisableSettingsEditing |
|
|||
|
|
| 15 | classisland.themes | 主题 | External | — | E6AF/E6AE | 同上 |
|
|||
|
|
| 16 | test-settings-page | 测试页面 | Debug | — | 默认 | DisableDebugMenu / IsDebugOptionsEnabled |
|
|||
|
|
| 17 | debug | 调试 | Debug | — | E2C8/E2C7 | 同上 |
|
|||
|
|
| 18 | about | 关于 ClassIsland | About | — | E9E4/E9E3 | 无(始终可见) |
|
|||
|
|
| 19 | management | 集控 | About | — | 默认 | hideDefault |
|
|||
|
|
| 20 | management.credentials | 集控凭据设置 | About | — | 默认 | hideDefault |
|
|||
|
|
| 21 | management.policy | 集控策略 | About | — | 默认 | hideDefault |
|
|||
|
|
| 22 | _error | 出错啦! | About | — | 默认 | hideDefault(错误页) |
|
|||
|
|
|
|||
|
|
设置窗口:`1240×550`,`MinWidth=560`,导航窗格 `OpenPaneLength=283`,内容限宽 `960`,压缩阈值 `800`,标题栏高 `48`(`SettingsWindowNew.axaml:16-22`、`:52-60`、`:92-104`、`.cs:135`、`:437-446`)。
|
|||
|
|
|
|||
|
|
## 3. 窗口清单表
|
|||
|
|
|
|||
|
|
| 窗口/页面 | 尺寸 (W×H) | 最小/最大 | 模态/单例 | 关键样式 | 证据 |
|
|||
|
|
|---|---|---|---|---|---|
|
|||
|
|
| 设置窗口 SettingsWindowNew | 1240×550 | MinW 560 | 非模态单例 | Mica、自定义标题栏 48、导航 283 | `SettingsWindowNew.axaml:16-22` |
|
|||
|
|
| 欢迎向导 WelcomeWindow | 800×600 | 不可缩放 | 模态(ShowAsDialog) | Mica、CenterScreen | `WelcomeWindow.axaml:14-20` |
|
|||
|
|
| 闪屏 SplashWindow | 400×100 | — | 非模态、置顶 | 无边框、背景透明、Acrylic、暗色 | `SplashWindow.axaml:12-23` |
|
|||
|
|
| 崩溃 CrashWindow | 800×450 | — | 独立 | Mica | `CrashWindow.axaml:13-16` |
|
|||
|
|
| 恢复 RecoveryWindow | 450×600 | — | 主窗口(-m -r) | 无 Mica 声明 | `RecoveryWindow.axaml:14` |
|
|||
|
|
| 更新进度 UpdateProgressWindow | 300×100 | 不可缩放 | 置顶/手动定位 | 纯色 | `UpdateProgressWindow.xaml:9-24` |
|
|||
|
|
| 对齐铃声 TimeAdjustmentWindow | 600×330 | 不可缩放 | CenterOwner | Mica | `TimeAdjustmentWindow.axaml:11-16` |
|
|||
|
|
| 换课 ClassChangingWindow | 600×250(SizeToContent) | Min 730×175 | CenterScreen | Mica | `ClassChangingWindow.axaml:17-26` |
|
|||
|
|
| 课表详细信息 ClassPlanDetailsWindow | 800×500 | — | 独立 | Mica、三列 1*/5px/2* | `ClassPlanDetailsWindow.axaml:14-23` |
|
|||
|
|
| Excel 导入 | 最大化(设计 800×450) | — | 模态 | 源码停用,本实现 P1 重建(xlsx) | `ExcelImportWindow.xaml:27-34` |
|
|||
|
|
| Excel 导出 | 1400×700、最大化 | — | 独立 | 源码停用,本实现 P1 重建(xlsx) | `ExcelExportWindow.xaml:14-25` |
|
|||
|
|
| 数据迁移 DataTransferWindow | 800×600 | 不可缩放 | 模态(ShowAsDialog) | Mica | `DataTransferWindow.axaml:9-18` |
|
|||
|
|
| 授权 AuthorizeWindow | 500×SizeToContent | MinH 300 / MaxH 700 | 模态、置顶 | — | `AuthorizeWindow.axaml:14-24` |
|
|||
|
|
| 加入管理 JoinManagementDialog | 400×Auto | 不可缩放 | 对话框 | — | `JoinManagementDialog.axaml:12-15` |
|
|||
|
|
| 教学中心 TutorialCenterWindow | 1240×550 | — | 非模态单例 | Mica、SplitView 328 | `TutorialCenterWindow.axaml:14`、`:58-63` |
|
|||
|
|
| 教程控制条 TutorialControllerWindow | SizeToContent | 不可缩放 | 置顶无边框 | Acrylic、透明 | `TutorialControllerWindow.axaml:10-17` |
|
|||
|
|
| 教程编辑器 TutorialEditorWindow | 最大化 | — | 独立 | 五列 220/Auto/*/Auto/328 | `TutorialEditorWindow.axaml:15`、`:239` |
|
|||
|
|
| 教程脚本编辑 TutorialScriptEditWindow | 800×520 | 480×320 | 独立 | 深色代码编辑器 | `TutorialScriptEditWindow.axaml:9-11` |
|
|||
|
|
| 日志 AppLogsWindow | 1200×600 | — | 非模态单例 | Mica | `AppLogsWindow.axaml:15` |
|
|||
|
|
| 配置错误 ConfigErrorsWindow | 1200×600 | — | 独立 | 纯色 | `ConfigErrorsWindow.xaml:18` |
|
|||
|
|
| 实例已存在 InstanceExistedWindow | 800×450 | 不可缩放 | 独立 | 纯色 | `InstanceExistedWindow.xaml:20-22` |
|
|||
|
|
| 窗口选择 WindowsPicker | 1300×600 | — | 对话框 | MaterialDesign 混合 | `WindowsPicker.xaml:13` |
|
|||
|
|
| 壁纸预览 WallpaperPreviewWindow | 800×450 | — | CenterOwner | 纯色 | `WallpaperPreviewWindow.xaml:11` |
|
|||
|
|
| 顶层特效 TopmostEffectWindow | 1×1(运行时全屏) | 不可缩放 | 置顶无边框 | 透明 | `TopmostEffectWindow.axaml:8-15` |
|
|||
|
|
| 清除通知按钮 ClearNotificationButtonWindow | SizeToContent | — | 不实现(源码 `#if false`) | 空按钮遗留 | `ClearNotificationButtonWindow.xaml:8-11` |
|
|||
|
|
| 翻新范围 RefreshingScopesConfigDialog | 400×600 | 不可缩放 | 模态 | — | `RefreshingScopesConfigDialog.axaml:9-14` |
|
|||
|
|
| 窗口规则调试 WindowRuleDebugWindow | 400×Auto | — | 置顶 | Mica | `WindowRuleDebugWindow.axaml:9-14` |
|
|||
|
|
| 截图辅助 ScreenshotHelperWindow | 未设(Auto) | — | 独立 | — | `ScreenshotHelperWindow.axaml:1-10` |
|
|||
|
|
| 功能调试 FeatureDebugWindow | 800×450 | — | 独立(开发) | 纯色 | `FeatureDebugWindow.xaml:28` |
|
|||
|
|
| DevPortal | 1200×700 | — | 独立(开发) | Mica | `DevPortalWindow.axaml:17-21` |
|
|||
|
|
| OOBE 各页 | 800×600 内 | — | 导航页 | settings-container 限宽 600 | 各 `WelcomePages/*.axaml` |
|
|||
|
|
| 数据迁移页 | 800×600 内 | — | Carousel 5 页 | 限宽 600 | `DataTransferPage.axaml:17-23` |
|
|||
|
|
| 恢复子页 | 450×600 内 | — | Frame | — | `RecoveryPages/*.axaml` |
|
|||
|
|
|
|||
|
|
## 4. 关键判定与发现
|
|||
|
|
|
|||
|
|
1. **设置持久化是「逐属性即时写盘」**:`SettingsService.SettingsChanged` 在每个属性变化后调用 `SaveSettings(propertyName)`(`Services/SettingsService.cs:261-280`、`:171-179`);`[JsonIgnore]` 字段(`IsSentryEnabled`、`ShowSellingAnnouncement`)不写 `Settings.json`(`Models/Settings.cs:518-535`、`:2615-2628`)。
|
|||
|
|
2. **设置叠层**:`SettingsOverlays` JSON 键名为 `SettingsOverlay`;叠层用 `"@"` 保存原始值,`guid` 为各写入者(`Models/Settings.cs:263-273`、`SettingsService.cs:191-259`)。用户在 UI 改任意属性会清掉该属性全部叠层。
|
|||
|
|
3. **页面缓存**:`SettingsPagesCachePolicy` 仅在两处使用(`SettingsWindowNew.axaml.cs:425-428`、`:513-516`);`0` 不缓存、`1` 窗口内缓存、`>=2` 跨窗口缓存为推断。
|
|||
|
|
4. **OOBE 实际为 8 页**(`WelcomeWindow.axaml.cs:64-73`),不是任务描述中的「9 页」;页序为 欢迎/许可/翻新/基本/颜色主题/外观/系统/完成,且按 isRefreshing/isOnboarding 条件裁剪。
|
|||
|
|
5. **Excel 导入/导出源码为停用遗留**:两个 code-behind 文件整体被 `#if false` 包裹(`ExcelImportWindow.xaml.cs:1`、`ExcelExportWindow.xaml.cs:1`),DI 注册被注释(`App.Services.xaml.cs:204-205`),且原实现依赖 WPF/`ReoGrid`/`System.Windows.Forms`。**Lead 最终裁决:本实现按 P1 必须实现(用 `xlsx` 重建,ReoGrid/WPF 仅作参考),与 part 06 口径一致**;Part 11 已按此改写并给出 `xlsx`/Vue 网格技术约束。
|
|||
|
|
6. **无通知中心窗口**:全仓库 `Views/` 下不存在通知中心类窗口;提醒呈现依赖主界面行 + 强提醒特效(part 07 范围)。Lead 已确认该结论并在 part 01 修正提法;Part 11 明确「不得创建通知中心窗口」。
|
|||
|
|
6b. **ClearNotificationButtonWindow 为 `#if false` 遗留**(内容仅空按钮):Lead 裁决**不实现**,清除提醒改由主界面右键菜单「清除全部提醒」承担(归 part 04/07)。Part 11 已改写为「不实现」,不再列为实现窗口。
|
|||
|
|
7. **设置抽屉**:统一为右侧抽屉,动画 `250ms cubic-bezier(0,0,0,1)`,`Esc`/点遮罩关闭,只有 `IThemeService.AnimationLevel>=1` 才启用动画(`DrawerHost.axaml:42-59`、`.cs:70-72`、`:78-118`)。不同页面抽屉宽度:实验性 332、城市搜索 320、主题排序 300、主题错误 450、插件源 500、插件更新 320、更新下载 450、更新日志 500、提醒源 500、规则集 600。
|
|||
|
|
8. **响应式**:设置窗口 `<800px` 进入压缩模式;ListDetailView 自身也有 `<800px`(`MinCompressWidth=800`)压缩阈值,因此提醒/插件/自动化页在 800px 附近会二次压缩。
|
|||
|
|
9. **标题栏右侧「金刚键空位」140px** 与 macOS 左侧 60px 是 FluentAvalonia AppWindow 的窗口控制区预留(`SettingsWindowNew.axaml:120-126`、`:252`)。
|
|||
|
|
10. **调试快捷键**:F3/F6/F7 是窗口基类统一行为,不限于设置窗口(`MyWindow.cs:115-166`)。
|
|||
|
|
|
|||
|
|
## 5. 未决问题 / 缺口(交给 Lead 决策)
|
|||
|
|
|
|||
|
|
1. **FluentAvalonia 控件自带几何值缺失**:`SettingsExpander`/`SettingsExpanderItem` 的行高、内边距、圆角、图标槽宽度来自 FluentAvalonia 主题包,仓库中只有覆盖样式(如 `MinHeight` 调整、`CornerRadius` 覆盖),没有完整数值。Part 10 中相关数值已标注【推断】(建议实现时取 `min-height: 64px`、`padding: 16px`、圆角 4–7px)。
|
|||
|
|
2. **`SettingsPagesCachePolicy = 2` 的语义**为推断(源码只区分 `>=1` 与 `<=1`)。若 Lead 有 1.x 文档可确认。
|
|||
|
|
3. **部分设置页的 .cs 行为未读**(`WindowSettingsPage.axaml.cs`、`NotificationSettingsPage.axaml.cs`、`UpdateSettingsPage.axaml.cs` 等):其「立即生效 vs 重启」结论主要来自 XAML 绑定 + `RequestRestart` 调用点。已确认需重启:`AnimationLevel`、`IsWaitForTransientDisabled`;其余(渲染模式、系统标题栏、Qt 缩放)标注为推断。
|
|||
|
|
4. **ProfileSettingsWindow(档案编辑,2004 行)与 EditModeView(编辑模式)** 只记录了窗口外壳参数(`MinWidth=750`、`1100×600`、Mica、标题「档案编辑」),内容归 part 06 / part 04。若 Lead 希望 Part 11 覆盖其内部三栏布局,需要追加分配。
|
|||
|
|
5. **TimeAdjustmentWindow 的校准数学、TopmostEffectWindow 的全屏放置逻辑、TutorialControllerWindow 的定位逻辑**均在未读的 .cs 中(分别为 .cs 6173/4461/2568 字节),本文只给出 UI 规格与推断行为;如需精确算法需再读这三个文件。
|
|||
|
|
6. **Excel 功能已裁决**:Lead 定为 **P1 必须实现(xlsx 重建;ReoGrid/WPF 仅参考)**,与 part 06 同步;Part 11 已删除「可选/遗留、默认不实现」措辞并补齐技术约束与验收项。
|
|||
|
|
7. **通知中心**(简报 §6 中 part 11 的关键词)在源码中不存在;建议 Lead 在 part 07 中说明提醒的呈现位置,并在总纲中更正该关键词。
|
|||
|
|
8. **OOBE 页数与简报不一致**(8 vs 9);建议以源码为准。
|
|||
|
|
9. **「搜索设置」功能不存在**:任务描述提到「设置中心:导航/搜索」,但 `SettingsWindowNew` 无搜索框。Part 10 已注明不得编造。
|
|||
|
|
10. **多语言/本地化**:设置页与窗口文案在源码中为硬编码中文(未走 `Localization` 资源)。Lead 裁决:保留中文字面量作为规格,但**要求集中到常量文件**(Part 10 §10.5 第 8 条、Part 11 §11.1 第 6 条已写入)。
|