Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions src/Files.App/Strings/en-US/Resources.resw
Original file line number Diff line number Diff line change
Expand Up @@ -4232,4 +4232,8 @@
<data name="ShowStatusCenterButton" xml:space="preserve">
<value>Show status center button</value>
</data>
<data name="StatusCenterProgressRing" xml:space="preserve">
<value>Status center progress ping</value>
<comment>Screen reader name for the status center progress ring</comment>
</data>
</root>
29 changes: 18 additions & 11 deletions src/Files.App/UserControls/NavigationToolbar.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
<converters:NullToTrueConverter x:Key="NullToFalseConverter" Inverse="True" />
<converters:NullToVisibilityCollapsedConverter x:Key="NullToVisibilityCollapsedConverter" />
<converters1:BoolNegationConverter x:Key="BoolNegationConverter" />
<converters:VisibilityInvertConverter x:Key="VisibilityInvertConverter" />

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

<Grid Margin="-16">

<controls:ThemedIcon
x:Name="StatusCenterIcon"
Width="16"
Height="16"
x:Load="{x:Bind OngoingTasksViewModel.HasAnyItem, Converter={StaticResource BoolNegationConverter}, Mode=OneWay}"
Style="{StaticResource App.ThemedIcons.StatusCenter}" />
Style="{StaticResource App.ThemedIcons.StatusCenter}"
Visibility="{x:Bind OngoingTasksViewModel.ShowProgressRing, Converter={StaticResource VisibilityInvertConverter}, Mode=OneWay}" />

<ProgressRing
x:Name="MedianOperationProgressRing"
HorizontalAlignment="Center"
VerticalAlignment="Center"
x:Load="{x:Bind OngoingTasksViewModel.HasAnyItemInProgress, Mode=OneWay}"
Background="{ThemeResource SubtleFillColorSecondaryBrush}"
AutomationProperties.Name="{helpers:ResourceString Name=StatusCenterProgressRing}"
IsIndeterminate="False"
Visibility="{x:Bind OngoingTasksViewModel.ShowProgressRing, Mode=OneWay}"
Value="{x:Bind OngoingTasksViewModel.AverageOperationProgressValue, Mode=OneWay}" />

<InfoBadge
x:Name="StatusInfoBadge"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{x:Bind OngoingTasksViewModel.HasAnyItem, Mode=OneWay}"
Visibility="{x:Bind OngoingTasksViewModel.ShowProgressRing, Mode=OneWay}"
Value="{x:Bind OngoingTasksViewModel.InfoBadgeValue, Mode=OneWay}" />

</Grid>

<Button.Flyout>
<Flyout
contract8Present:ShouldConstrainToRootBounds="False"
AutomationProperties.Name="{helpers:ResourceString Name=StatusCenter}"
Opened="{x:Bind OngoingTasksViewModel.OnStatusCenterFlyoutOpened, Mode=OneWay}"
Placement="BottomEdgeAlignedRight">
<Flyout.FlyoutPresenterStyle>
<Style TargetType="FlyoutPresenter">
Expand All @@ -515,7 +515,7 @@
<ucs:StatusCenter
x:Name="OngoingTasksControl"
Width="400"
MinHeight="300"
MinHeight="120"
MaxHeight="500"
x:FieldModifier="public"
IsTabStop="True" />
Expand Down Expand Up @@ -627,6 +627,7 @@
To="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SystemFillColorSuccessBrush}" />
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource SuccessIconInfoBadgeStyle}" />
</VisualState.Setters>
</VisualState>
Expand All @@ -638,7 +639,9 @@
To="1" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource AttentionValueInfoBadgeStyle}" />
<Setter Target="MedianOperationProgressRing.Foreground" Value="{ThemeResource SystemFillColorAttentionBrush}" />
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SubtleFillColorSecondaryBrush}" />
<Setter Target="StatusCenterIcon.Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="TasksFailure">
Expand All @@ -649,7 +652,9 @@
To="2" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource CriticalValueInfoBadgeStyle}" />
<Setter Target="MedianOperationProgressRing.Foreground" Value="{ThemeResource SystemFillColorAttentionBrush}" />
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SubtleFillColorSecondaryBrush}" />
<Setter Target="StatusCenterIcon.Visibility" Value="Collapsed" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="TasksCompletionWithFailure">
Expand All @@ -660,11 +665,13 @@
To="3" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="MedianOperationProgressRing.Background" Value="{ThemeResource SystemFillColorCriticalBrush}" />
<Setter Target="StatusCenterIcon.Visibility" Value="Collapsed" />
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource CriticalIconInfoBadgeStyle}" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
</Grid>

</UserControl>
</UserControl>
24 changes: 23 additions & 1 deletion src/Files.App/ViewModels/UserControls/StatusCenterViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,28 @@ public int InProgressItemCount
}

public bool HasAnyItemInProgress
=> InProgressItemCount > 0;
{
get
{
if (InProgressItemCount > 0)
ShowProgressRing = true;

return InProgressItemCount > 0;
}
}

public bool HasAnyItem
=> StatusCenterItems.Any();


private bool _ShowProgressRing = false;
public bool ShowProgressRing
{
get => _ShowProgressRing;
private set => SetProperty(ref _ShowProgressRing, value);

}

public int InfoBadgeState
{
get
Expand Down Expand Up @@ -64,6 +81,11 @@ public StatusCenterViewModel()
StatusCenterItems.CollectionChanged += (s, e) => OnPropertyChanged(nameof(HasAnyItem));
}

public void OnStatusCenterFlyoutOpened()
{
ShowProgressRing = HasAnyItemInProgress || InfoBadgeState == 3;
}

public StatusCenterItem AddItem(
string headerResource,
string subHeaderResource,
Expand Down
Loading