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
39 changes: 38 additions & 1 deletion Files/UserControls/NavigationToolbar.xaml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
<UserControl
<UserControl
x:Class="Files.UserControls.NavigationToolbar"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Expand Down Expand Up @@ -335,6 +335,7 @@
Background="{ThemeResource NavigationToolbarBackgroundBrush}"
ColumnSpacing="0"
CornerRadius="{StaticResource NavToolbarCornerRadius}">

<Grid Padding="8,0,8,8" ColumnSpacing="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
Expand Down Expand Up @@ -557,6 +558,7 @@
</Flyout>
</Button.Flyout>
</Button>
<muxc:InfoBadge x:Name="StatusInfoBadge" HorizontalAlignment="Right" VerticalAlignment="Top" Value="{x:Bind OngoingTasksViewModel.InfoBadgeValue, Mode=OneWay}" />
</Grid>

<Button
Expand Down Expand Up @@ -602,6 +604,41 @@
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
<VisualStateGroup>
<VisualState x:Name="TasksSuccess">
<VisualState.StateTriggers>
<triggers:CompareStateTrigger Value="{x:Bind OngoingTasksViewModel.InfoBadgeState, Mode=OneWay}" Comparison="Equal" To="0" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource SuccessIconInfoBadgeStyle}" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="TasksOnging">
<VisualState.StateTriggers>
<triggers:CompareStateTrigger Value="{x:Bind OngoingTasksViewModel.InfoBadgeState, Mode=OneWay}" Comparison="Equal" To="1" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource AttentionValueInfoBadgeStyle}" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="TasksFailure">
<VisualState.StateTriggers>
<triggers:CompareStateTrigger Value="{x:Bind OngoingTasksViewModel.InfoBadgeState, Mode=OneWay}" Comparison="Equal" To="2" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource CriticalValueInfoBadgeStyle}" />
</VisualState.Setters>
</VisualState>
<VisualState x:Name="TasksCompletionWithFailure">
<VisualState.StateTriggers>
<triggers:CompareStateTrigger Value="{x:Bind OngoingTasksViewModel.InfoBadgeState, Mode=OneWay}" Comparison="Equal" To="3" />
</VisualState.StateTriggers>
<VisualState.Setters>
<Setter Target="StatusInfoBadge.Style" Value="{StaticResource CriticalIconInfoBadgeStyle}" />
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>

</Grid>
</UserControl>
4 changes: 2 additions & 2 deletions Files/UserControls/NavigationToolbar.xaml.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Files.Helpers.XamlHelpers;
using Files.Helpers.XamlHelpers;
using Files.ViewModels;
using System.Windows.Input;
using Windows.System;
Expand Down Expand Up @@ -172,4 +172,4 @@ public bool ShowSettingsButton
public static readonly DependencyProperty ShowSettingsButtonProperty =
DependencyProperty.Register(nameof(ShowSettingsButton), typeof(bool), typeof(NavigationToolbar), new PropertyMetadata(null));
}
}
}
37 changes: 36 additions & 1 deletion Files/ViewModels/StatusCenterViewModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using System.Linq;
using System.Threading;
using System.Windows.Input;
using Windows.ApplicationModel.Core;
using Windows.UI;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
Expand Down Expand Up @@ -64,6 +65,27 @@ public bool AnyBannersPresent
get => StatusBannersSource.Any();
}

public int InfoBadgeState
{
get
{
var anyFailure = StatusBannersSource.Any(i => i.Status != ReturnResult.InProgress && i.Status != ReturnResult.Success);

return (anyFailure, AnyOperationsOngoing) switch
{
(false, false) => 0, // all success
(false, true) => 1, // ongoing
(true, true) => 2, // onging with failure
(true, false) => 3 // completed with failure
};
}
}

public int InfoBadgeValue
{
get => OngoingOperationsCount > 0 ? OngoingOperationsCount : -1;
}

#endregion Public Properties

#region Events
Expand Down Expand Up @@ -120,6 +142,8 @@ public void UpdateBanner(StatusBanner banner)
{
OnPropertyChanged(nameof(OngoingOperationsCount));
OnPropertyChanged(nameof(AnyOperationsOngoing));
OnPropertyChanged(nameof(InfoBadgeState));
OnPropertyChanged(nameof(InfoBadgeValue));
}

public void UpdateMedianProgress()
Expand Down Expand Up @@ -203,6 +227,8 @@ private void ReportProgressToBanner(float value)

private void ReportProgressToBanner(ReturnResult value)
{
Banner.Status = value;
OngoingTasksActions.UpdateBanner(Banner);
}

#endregion Private Helpers
Expand Down Expand Up @@ -260,7 +286,16 @@ public bool IsProgressing

public string Title { get; private set; }

public ReturnResult Status { get; private set; } = ReturnResult.InProgress;
private ReturnResult status = ReturnResult.InProgress;

public ReturnResult Status
{
get => status;
set
{
SetProperty(ref status, value);
}
}

public FileOperationType Operation { get; private set; }

Expand Down