Skip to content

Commit f2b7e80

Browse files
committed
Concept
1 parent 53806c1 commit f2b7e80

File tree

3 files changed

+45
-12
lines changed

3 files changed

+45
-12
lines changed

src/Files.App/Strings/en-US/Resources.resw

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4232,4 +4232,8 @@
42324232
<data name="ShowStatusCenterButton" xml:space="preserve">
42334233
<value>Show status center button</value>
42344234
</data>
4235+
<data name="StatusCenterProgressRing" xml:space="preserve">
4236+
<value>Status center progress ping</value>
4237+
<comment>Screen reader name for the status center progress ring</comment>
4238+
</data>
42354239
</root>

src/Files.App/UserControls/NavigationToolbar.xaml

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
<converters:NullToTrueConverter x:Key="NullToFalseConverter" Inverse="True" />
3030
<converters:NullToVisibilityCollapsedConverter x:Key="NullToVisibilityCollapsedConverter" />
3131
<converters1:BoolNegationConverter x:Key="BoolNegationConverter" />
32+
<converters:VisibilityInvertConverter x:Key="VisibilityInvertConverter" />
3233

3334
<ResourceDictionary.MergedDictionaries>
3435
<ResourceDictionary Source="ms-appx:///UserControls/KeyboardShortcut/KeyboardShortcut.xaml" />
@@ -474,36 +475,35 @@
474475
Visibility="{x:Bind ViewModel.ShowStatusCenterButton, Mode=OneWay}">
475476

476477
<Grid Margin="-16">
477-
478478
<controls:ThemedIcon
479479
x:Name="StatusCenterIcon"
480480
Width="16"
481481
Height="16"
482-
x:Load="{x:Bind OngoingTasksViewModel.HasAnyItem, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}"
483-
Style="{StaticResource App.ThemedIcons.StatusCenter}" />
482+
Style="{StaticResource App.ThemedIcons.StatusCenter}"
483+
Visibility="{x:Bind OngoingTasksViewModel.ShowProgressRing, Converter={StaticResource VisibilityInvertConverter}, Mode=OneWay}" />
484484

485485
<ProgressRing
486486
x:Name="MedianOperationProgressRing"
487487
HorizontalAlignment="Center"
488488
VerticalAlignment="Center"
489-
x:Load="{x:Bind OngoingTasksViewModel.HasAnyItemInProgress, Mode=OneWay}"
490-
Background="{ThemeResource SubtleFillColorSecondaryBrush}"
489+
AutomationProperties.Name="{helpers:ResourceString Name=StatusCenterProgressRing}"
491490
IsIndeterminate="False"
491+
Visibility="{x:Bind OngoingTasksViewModel.ShowProgressRing, Mode=OneWay}"
492492
Value="{x:Bind OngoingTasksViewModel.AverageOperationProgressValue, Mode=OneWay}" />
493493

494494
<InfoBadge
495495
x:Name="StatusInfoBadge"
496496
HorizontalAlignment="Center"
497497
VerticalAlignment="Center"
498-
Visibility="{x:Bind OngoingTasksViewModel.HasAnyItem, Mode=OneWay}"
498+
Visibility="{x:Bind OngoingTasksViewModel.ShowProgressRing, Mode=OneWay}"
499499
Value="{x:Bind OngoingTasksViewModel.InfoBadgeValue, Mode=OneWay}" />
500-
501500
</Grid>
502501

503502
<Button.Flyout>
504503
<Flyout
505504
contract8Present:ShouldConstrainToRootBounds="False"
506505
AutomationProperties.Name="{helpers:ResourceString Name=StatusCenter}"
506+
Opened="{x:Bind OngoingTasksViewModel.OnStatusCenterFlyoutOpened, Mode=OneWay}"
507507
Placement="BottomEdgeAlignedRight">
508508
<Flyout.FlyoutPresenterStyle>
509509
<Style TargetType="FlyoutPresenter">
@@ -515,7 +515,7 @@
515515
<ucs:StatusCenter
516516
x:Name="OngoingTasksControl"
517517
Width="400"
518-
MinHeight="300"
518+
MinHeight="120"
519519
MaxHeight="500"
520520
x:FieldModifier="public"
521521
IsTabStop="True" />
@@ -627,6 +627,7 @@
627627
To="0" />
628628
</VisualState.StateTriggers>
629629
<VisualState.Setters>
630+
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SystemFillColorSuccessBrush}" />
630631
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource SuccessIconInfoBadgeStyle}" />
631632
</VisualState.Setters>
632633
</VisualState>
@@ -638,7 +639,9 @@
638639
To="1" />
639640
</VisualState.StateTriggers>
640641
<VisualState.Setters>
641-
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource AttentionValueInfoBadgeStyle}" />
642+
<Setter Target="MedianOperationProgressRing.Foreground" Value="{ThemeResource SystemFillColorAttentionBrush}" />
643+
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SubtleFillColorSecondaryBrush}" />
644+
<Setter Target="StatusCenterIcon.Visibility" Value="Collapsed" />
642645
</VisualState.Setters>
643646
</VisualState>
644647
<VisualState x:Name="TasksFailure">
@@ -649,7 +652,9 @@
649652
To="2" />
650653
</VisualState.StateTriggers>
651654
<VisualState.Setters>
652-
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource CriticalValueInfoBadgeStyle}" />
655+
<Setter Target="MedianOperationProgressRing.Foreground" Value="{ThemeResource SystemFillColorAttentionBrush}" />
656+
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SubtleFillColorSecondaryBrush}" />
657+
<Setter Target="StatusCenterIcon.Visibility" Value="Collapsed" />
653658
</VisualState.Setters>
654659
</VisualState>
655660
<VisualState x:Name="TasksCompletionWithFailure">
@@ -660,11 +665,13 @@
660665
To="3" />
661666
</VisualState.StateTriggers>
662667
<VisualState.Setters>
668+
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SystemFillColorCriticalBrush}" />
669+
<Setter Target="StatusCenterIcon.Visibility" Value="Collapsed" />
663670
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource CriticalIconInfoBadgeStyle}" />
664671
</VisualState.Setters>
665672
</VisualState>
666673
</VisualStateGroup>
667674
</VisualStateManager.VisualStateGroups>
668675
</Grid>
669676

670-
</UserControl>
677+
</UserControl>

src/Files.App/ViewModels/UserControls/StatusCenterViewModel.cs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,11 +31,28 @@ public int InProgressItemCount
3131
}
3232

3333
public bool HasAnyItemInProgress
34-
=> InProgressItemCount > 0;
34+
{
35+
get
36+
{
37+
if (InProgressItemCount > 0)
38+
ShowProgressRing = true;
39+
40+
return InProgressItemCount > 0;
41+
}
42+
}
3543

3644
public bool HasAnyItem
3745
=> StatusCenterItems.Any();
3846

47+
48+
private bool _ShowProgressRing = false;
49+
public bool ShowProgressRing
50+
{
51+
get => _ShowProgressRing;
52+
private set => SetProperty(ref _ShowProgressRing, value);
53+
54+
}
55+
3956
public int InfoBadgeState
4057
{
4158
get
@@ -64,6 +81,11 @@ public StatusCenterViewModel()
6481
StatusCenterItems.CollectionChanged += (s, e) => OnPropertyChanged(nameof(HasAnyItem));
6582
}
6683

84+
public void OnStatusCenterFlyoutOpened()
85+
{
86+
ShowProgressRing = HasAnyItemInProgress || InfoBadgeState == 3;
87+
}
88+
6789
public StatusCenterItem AddItem(
6890
string headerResource,
6991
string subHeaderResource,

0 commit comments

Comments
 (0)