csharpdeeb25a2 | 1 | using CascadeIDE.Contracts; |
| 2 | using CascadeIDE.Features.UiChrome; |
| 3 | using CascadeIDE.Models; |
| 4 | |
| 5 | namespace CascadeIDE.Features.UiChrome.Application; |
| 6 | |
| 7 | /// <summary>План применения раскладки режима UI (без присваивания observable VM).</summary> |
| 8 | [PresentationProjection("ui mode layout apply plan")] |
| 9 | public static class UiModeLayoutApplyProjection |
| 10 | { |
| 11 | public sealed record Plan(UiModeLayoutSpec Spec, string NormalizedMode, bool Persist); |
| 12 | |
| 13 | public static Plan Create(string? mode, bool persist) |
| 14 | { |
| 15 | var normalized = UiChromeViewModel.NormalizeUiMode(mode); |
| 16 | return new Plan(UiModeCatalog.GetSpec(normalized), normalized, persist); |
| 17 | } |
| 18 | |
| 19 | public static MfdShellPage ResolveMfdPageAfterApply(Plan plan, MfdShellPage currentPage) => |
| 20 | plan.Spec.SelectTerminalTabWhenTerminalShown && plan.Spec.TerminalVisible |
| 21 | ? MfdShellPage.Terminal |
| 22 | : currentPage; |
| 23 | |
| 24 | public static void PersistWorkspaceMode( |
| 25 | Plan plan, |
| 26 | bool pfdRegionExpanded, |
| 27 | bool terminalVisible, |
| 28 | CascadeIdeSettings settings, |
| 29 | Action saveSettingsIfChanged) |
| 30 | { |
| 31 | if (!plan.Persist) |
| 32 | return; |
| 33 | |
| 34 | settings.Workspace.Mode = plan.NormalizedMode; |
| 35 | settings.Workspace.PfdExpanded = pfdRegionExpanded; |
| 36 | settings.Workspace.ShowTerminal = terminalVisible; |
| 37 | saveSettingsIfChanged(); |
| 38 | } |
| 39 | } |
| 40 | |
View only · write via MCP/CIDE