|
111 | 111 | <TabItem Header="IEC 61850 Explorer"> |
112 | 112 | <Grid> |
113 | 113 | <Grid.ColumnDefinitions> |
114 | | - <ColumnDefinition Width="292"/> |
115 | | - <ColumnDefinition Width="14"/> |
| 114 | + <ColumnDefinition Width="250"/> |
| 115 | + <ColumnDefinition Width="12"/> |
116 | 116 | <ColumnDefinition Width="*"/> |
117 | 117 | </Grid.ColumnDefinitions> |
118 | 118 |
|
119 | | - <Border Grid.Column="0" Style="{StaticResource Card}" Padding="12"> |
| 119 | + <Border Grid.Column="0" Style="{StaticResource Card}" Padding="10"> |
120 | 120 | <DockPanel> |
121 | 121 | <Grid DockPanel.Dock="Top" Margin="0,0,0,10"> |
122 | 122 | <StackPanel> |
|
192 | 192 | </ListBox.ItemContainerStyle> |
193 | 193 | <ListBox.ItemTemplate> |
194 | 194 | <DataTemplate> |
195 | | - <Grid MinHeight="82"> |
| 195 | + <Grid MinHeight="86"> |
196 | 196 | <Grid x:Name="CardContent"> |
197 | 197 | <Grid.RowDefinitions> |
198 | 198 | <RowDefinition Height="Auto"/> |
199 | 199 | <RowDefinition Height="Auto"/> |
200 | 200 | </Grid.RowDefinitions> |
201 | 201 | <Grid.ColumnDefinitions> |
202 | | - <ColumnDefinition Width="44"/> |
| 202 | + <ColumnDefinition Width="64"/> |
203 | 203 | <ColumnDefinition Width="*"/> |
204 | 204 | </Grid.ColumnDefinitions> |
| 205 | + <!-- Large borderless relay / BCU icon; icon color is the connection state. --> |
| 206 | + <Grid Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" Width="58" Height="58" Margin="0,-2,6,0" VerticalAlignment="Top" Panel.ZIndex="2"> |
| 207 | + <Viewbox Width="55" Height="55" HorizontalAlignment="Center" VerticalAlignment="Center"> |
| 208 | + <Path x:Name="RelayDeviceIcon" Data="M 2 0 L 2 20 L 18 20 L 18 0 L 2 0 z M 3 1 L 17 1 L 17 19 L 3 19 L 3 1 z M 5 3 L 5 7 L 15 7 L 15 3 L 5 3 z M 6 4 L 14 4 L 14 6 L 6 6 L 6 4 z M 5 10 L 5 11 L 7 11 L 7 10 L 5 10 z M 9 10 L 9 11 L 11 11 L 11 10 L 9 10 z M 13 10 L 13 11 L 15 11 L 15 10 L 13 10 z M 5 13 L 5 14 L 7 14 L 7 13 L 5 13 z M 9 13 L 9 14 L 11 14 L 11 13 L 9 13 z M 13 13 L 13 14 L 15 14 L 15 13 L 13 13 z M 5 16 L 5 17 L 7 17 L 7 16 L 5 16 z M 9 16 L 9 17 L 11 17 L 11 16 L 9 16 z M 13 16 L 13 17 L 15 17 L 15 16 L 13 16 z" Fill="#EF4444" Stretch="Uniform"> |
| 209 | + <Path.Effect><DropShadowEffect BlurRadius="14" ShadowDepth="0" Opacity="0.58" Color="#EF4444"/></Path.Effect> |
| 210 | + </Path> |
| 211 | + </Viewbox> |
| 212 | + </Grid> |
205 | 213 |
|
206 | | - <!-- Protection relay / BCU silhouette supplied by the user. --> |
207 | | - <Grid Grid.Row="0" Grid.RowSpan="2" Grid.Column="0" |
208 | | - Width="38" Height="38" Margin="0,1,8,0" |
209 | | - VerticalAlignment="Top" Panel.ZIndex="2"> |
210 | | - <Border Width="34" Height="34" CornerRadius="7" |
211 | | - Background="#EEF4FF" BorderBrush="#CFE0FF" BorderThickness="1" |
212 | | - HorizontalAlignment="Center" VerticalAlignment="Center"> |
213 | | - <Viewbox Width="22" Height="22" Margin="5"> |
214 | | - <Path Data="M 2 0 L 2 20 L 18 20 L 18 0 L 2 0 z M 3 1 L 17 1 L 17 19 L 3 19 L 3 1 z M 5 3 L 5 7 L 15 7 L 15 3 L 5 3 z M 6 4 L 14 4 L 14 6 L 6 6 L 6 4 z M 5 10 L 5 11 L 7 11 L 7 10 L 5 10 z M 9 10 L 9 11 L 11 11 L 11 10 L 9 10 z M 13 10 L 13 11 L 15 11 L 15 10 L 13 10 z M 5 13 L 5 14 L 7 14 L 7 13 L 5 13 z M 9 13 L 9 14 L 11 14 L 11 13 L 9 13 z M 13 13 L 13 14 L 15 14 L 15 13 L 13 13 z M 5 16 L 5 17 L 7 17 L 7 16 L 5 16 z M 9 16 L 9 17 L 11 17 L 11 16 L 9 16 z M 13 16 L 13 17 L 15 17 L 15 16 L 13 16 z" |
215 | | - Fill="#2563EB" Stretch="Uniform"/> |
216 | | - </Viewbox> |
217 | | - </Border> |
218 | | - <Ellipse x:Name="ConnectionDot" Width="9" Height="9" Fill="#EF4444" |
219 | | - HorizontalAlignment="Left" VerticalAlignment="Top" Margin="0,0,0,0"> |
220 | | - <Ellipse.Effect><DropShadowEffect BlurRadius="6" ShadowDepth="0" Opacity="0.28" Color="#EF4444"/></Ellipse.Effect> |
221 | | - </Ellipse> |
222 | | - <Ellipse x:Name="TxDot" Width="7" Height="7" Fill="#86EFAC" Visibility="Collapsed" |
223 | | - HorizontalAlignment="Right" VerticalAlignment="Bottom" RenderTransformOrigin="0.5,0.5" Opacity="0.72"> |
224 | | - <Ellipse.RenderTransform><ScaleTransform x:Name="TxPulseScale" ScaleX="1" ScaleY="1"/></Ellipse.RenderTransform> |
225 | | - <Ellipse.Effect><DropShadowEffect BlurRadius="8" ShadowDepth="0" Opacity="0.8" Color="#4ADE80"/></Ellipse.Effect> |
226 | | - </Ellipse> |
227 | | - </Grid> |
228 | | - |
229 | | - <StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Top"> |
| 214 | +<StackPanel Grid.Row="0" Grid.Column="1" VerticalAlignment="Top"> |
230 | 215 | <TextBlock Text="{Binding Name}" FontSize="13" FontWeight="SemiBold" |
231 | 216 | Foreground="{StaticResource Ink}" TextTrimming="CharacterEllipsis"/> |
232 | 217 | <TextBlock Text="{Binding EndpointText}" FontSize="11.6" |
|
263 | 248 |
|
264 | 249 | <Border x:Name="BusyOverlay" Visibility="Collapsed" Background="#F2F7FDFA" CornerRadius="12" |
265 | 250 | BorderBrush="#B8CEF3" BorderThickness="1" Padding="12" Panel.ZIndex="20"> |
266 | | - <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Width="238"> |
| 251 | + <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Width="190"> |
267 | 252 | <!-- Eight identical rounded dashes recreate the original loading circle |
268 | 253 | without the asymmetric final dash produced by Ellipse.StrokeDashArray. --> |
269 | 254 | <Grid Width="32" Height="32" HorizontalAlignment="Center" RenderTransformOrigin="0.5,0.5"> |
|
291 | 276 | <TextBlock Text="{Binding BusyTitle}" FontSize="12.2" FontWeight="SemiBold" Foreground="{StaticResource Ink}" |
292 | 277 | HorizontalAlignment="Center" Margin="0,7,0,0"/> |
293 | 278 | <TextBlock Text="{Binding BusyStage}" FontSize="10.8" Foreground="{StaticResource Muted}" TextAlignment="Center" |
294 | | - TextWrapping="Wrap" Margin="0,3,0,0" MinHeight="28" MaxWidth="224"/> |
| 279 | + TextWrapping="Wrap" Margin="0,3,0,0" MinHeight="28" MaxWidth="184"/> |
295 | 280 | <ProgressBar Value="{Binding DiscoveryProgressPercent, Mode=OneWay}" Minimum="0" Maximum="100" |
296 | | - Style="{StaticResource DiscoveryProgressBar}" Width="218" Height="8" Margin="0,8,0,0"/> |
297 | | - <Grid Width="218" Margin="0,5,0,0"> |
| 281 | + Style="{StaticResource DiscoveryProgressBar}" Width="178" Height="8" Margin="0,8,0,0"/> |
| 282 | + <Grid Width="178" Margin="0,5,0,0"> |
298 | 283 | <TextBlock Text="{Binding DiscoveryProgressStepText}" FontSize="10.2" Foreground="#5D6B82"/> |
299 | 284 | <TextBlock Text="{Binding DiscoveryProgressPercentText}" FontSize="10.4" FontWeight="SemiBold" |
300 | 285 | Foreground="{StaticResource Accent}" HorizontalAlignment="Right"/> |
|
304 | 289 | </Grid> |
305 | 290 | <DataTemplate.Triggers> |
306 | 291 | <DataTrigger Binding="{Binding IsConnected}" Value="True"> |
307 | | - <Setter TargetName="ConnectionDot" Property="Fill" Value="#22C55E"/> |
308 | | - </DataTrigger> |
309 | | - <DataTrigger Binding="{Binding HasReportStream}" Value="True"> |
310 | | - <Setter TargetName="TxDot" Property="Visibility" Value="Visible"/> |
311 | | - </DataTrigger> |
312 | | - <DataTrigger Binding="{Binding ReportPulseActive}" Value="True"> |
313 | | - <Setter TargetName="TxDot" Property="Fill" Value="#BBF7D0"/> |
314 | | - <Setter TargetName="TxDot" Property="Opacity" Value="1"/> |
315 | | - <DataTrigger.EnterActions> |
316 | | - <BeginStoryboard> |
317 | | - <Storyboard> |
318 | | - <DoubleAnimation Storyboard.TargetName="TxPulseScale" Storyboard.TargetProperty="ScaleX" From="1" To="1.6" AutoReverse="True" Duration="0:0:0.22"/> |
319 | | - <DoubleAnimation Storyboard.TargetName="TxPulseScale" Storyboard.TargetProperty="ScaleY" From="1" To="1.6" AutoReverse="True" Duration="0:0:0.22"/> |
320 | | - </Storyboard> |
321 | | - </BeginStoryboard> |
322 | | - </DataTrigger.EnterActions> |
323 | | - </DataTrigger> |
324 | | - <DataTrigger Binding="{Binding IsBusy}" Value="True"> |
| 292 | + <Setter TargetName="RelayDeviceIcon" Property="Fill" Value="#16A34A"/> |
| 293 | + <Setter TargetName="RelayDeviceIcon" Property="Effect"><Setter.Value><DropShadowEffect BlurRadius="15" ShadowDepth="0" Opacity="0.64" Color="#16A34A"/></Setter.Value></Setter> |
| 294 | + </DataTrigger> |
| 295 | +<DataTrigger Binding="{Binding IsBusy}" Value="True"> |
325 | 296 | <Setter TargetName="CardContent" Property="Opacity" Value="0.22"/> |
326 | 297 | <Setter TargetName="CardContent" Property="IsHitTestVisible" Value="False"/> |
327 | 298 | <Setter TargetName="BusyOverlay" Property="Visibility" Value="Visible"/> |
|
0 commit comments