Forge
csharpdeeb25a2
1using CascadeIDE.Cockpit.Composition.Shell;
2
3using CascadeIDE.Features.UiChrome;
4
5using CascadeIDE.Services.Presentation;
6
7
8
9namespace CascadeIDE.ViewModels;
10
11
12
13/// <summary>Compact tier IDE-scan presentation (ADR 0171 §2.3): Forward center, PFD/Intercom right or bottom, MFD bottom.</summary>
14
15public partial class MainWindowViewModel
16
17{
18
19 private MainWindowShellSurfaceComposition CompactShellSurface => ShellSurfaceComposition;
20
21
22
23 private bool IsCompactIntercomInForward =>
24
25 IsCompactPresentationTier && IsForwardIntercomHostVisible;
26
27
28
29 /// <summary>Колонка MFD (cockpit): <c>MfdShellView</c> справа. В compact — false.</summary>
30
31 public bool IsCockpitMfdColumnVisible =>
32
33 !IsCompactPresentationTier && CompactShellSurface.MfdColumnVisibleInMainGrid;
34
35
36
37 /// <summary>Колонка PFD (cockpit): слева. В compact — false (PFD на правой колонке).</summary>
38
39 public bool IsCockpitPfdColumnVisible =>
40
41 !IsCompactPresentationTier && CompactShellSurface.PfdSurfaceVisible;
42
43
44
45 /// <summary>Правая колонка compact: Intercom aux и/или PFD (Solution Explorer).</summary>
46
47 public bool IsCompactRightChromeColumnVisible =>
48
49 IsCompactPresentationTier
50
51 && !IsCompactIntercomInForward
52
53 && CompactShellSurface.CompactRightChromeColumnVisible;
54
55
56
57 public bool IsCompactIntercomAuxVisible =>
58
59 IsCompactPresentationTier
60
61 && !IsCompactIntercomInForward
62
63 && CompactShellSurface.IntercomAuxColumnVisible;
64
65
66
67 public bool IsCompactIntercomBottomDockVisible =>
68
69 IsCompactPresentationTier
70
71 && !IsCompactIntercomInForward
72
73 && CompactShellSurface.IntercomBottomDockVisible;
74
75
76
77 public bool IsCompactPfdRightVisible =>
78
79 IsCompactPresentationTier
80
81 && !IsCompactIntercomInForward
82
83 && CompactShellSurface.PfdRightColumnVisible;
84
85
86
87 /// <summary>Нижний dock MFD в compact: terminal, build, git, problems.</summary>
88
89 public bool IsCompactMfdBottomDockVisible =>
90
91 IsCompactPresentationTier && IsMfdContourContentVisible;
92
93
94
95 public int CompactRightChromeColumnPixelWidth =>
96
97 IsCompactPresentationTier && !IsCompactIntercomInForward
98
99 ? CompactShellSurface.CompactRightChromeColumnPixelWidth
100
101 : 0;
102
103
104
105 public int CompactIntercomBottomDockHeightPixels =>
106
107 IsCompactIntercomBottomDockVisible
108
109 ? Math.Max(
110
111 UiWorkspaceLayoutRuntimeMetrics.BottomPanelMinRowPixels,
112
113 CompactShellSurface.IntercomBottomDockHeightPx)
114
115 : 0;
116
117
118
119 public int CompactMfdBottomDockHeightPixels =>
120
121 IsCompactMfdBottomDockVisible
122
123 ? Math.Max(
124
125 UiWorkspaceLayoutRuntimeMetrics.BottomPanelMinRowPixels,
126
127 CompactShellSurface.MfdBottomDockHeightPx)
128
129 : 0;
130
131
132
133 /// <summary>Строка <c>MainGrid</c> для нижнего MFD (4 при одном dock, 6 при Intercom+MFD).</summary>
134
135 public int CompactMfdBottomDockGridRow =>
136
137 IsCompactIntercomBottomDockVisible ? 6 : 4;
138
139
140
141 public int CompactMfdBottomDockSplitterGridRow =>
142
143 IsCompactIntercomBottomDockVisible ? 5 : 3;
144
145
146
147 /// <summary>Строки <c>MainGrid</c> для compact (нижние docks) vs cockpit.</summary>
148
149 public string MainGridRowDefinitions =>
150
151 IsCompactPresentationTier
152
153 ? PresentationCompactMainGridLayoutBuilder.BuildRowDefinitions(
154
155 IsCompactIntercomBottomDockVisible,
156
157 IsCompactMfdBottomDockVisible)
158
159 : PresentationCompactMainGridLayoutBuilder.CockpitRowDefinitions;
160
161
162
163 public void NotifyCompactIdeLayoutChanged()
164
165 {
166
167 OnPropertyChanged(nameof(IsCockpitMfdColumnVisible));
168
169 OnPropertyChanged(nameof(IsCockpitPfdColumnVisible));
170
171 OnPropertyChanged(nameof(IsCompactRightChromeColumnVisible));
172
173 OnPropertyChanged(nameof(IsCompactIntercomAuxVisible));
174
175 OnPropertyChanged(nameof(IsCompactIntercomBottomDockVisible));
176
177 OnPropertyChanged(nameof(IsCompactPfdRightVisible));
178
179 OnPropertyChanged(nameof(IsCompactMfdBottomDockVisible));
180
181 OnPropertyChanged(nameof(CompactRightChromeColumnPixelWidth));
182
183 OnPropertyChanged(nameof(CompactIntercomBottomDockHeightPixels));
184
185 OnPropertyChanged(nameof(CompactMfdBottomDockHeightPixels));
186
187 OnPropertyChanged(nameof(CompactMfdBottomDockGridRow));
188
189 OnPropertyChanged(nameof(CompactMfdBottomDockSplitterGridRow));
190
191 OnPropertyChanged(nameof(MainGridRowDefinitions));
192
193 OnPropertyChanged(nameof(IsMfdColumnVisible));
194
195 OnPropertyChanged(nameof(IsPfdColumnVisible));
196
197 OnPropertyChanged(nameof(ChatPanelColumnPixelWidth));
198
199 OnPropertyChanged(nameof(IsChatPanelColumnVisible));
200
201 }
202
203}
204
205
206
View only · write via MCP/CIDE