From 33466e84ad36e1f95762e74cd255c91a36c04d9d Mon Sep 17 00:00:00 2001
From: Yair <39923744+yaira2@users.noreply.github.com>
Date: Wed, 21 May 2025 17:50:32 -0400
Subject: [PATCH 1/2] Feature: Added support for always displaying the status
center
---
.../Contracts/IAppearanceSettingsService.cs | 6 +++++
.../Data/Enums/StatusCenterVisibility.cs | 23 +++++++++++++++++++
.../Settings/AppearanceSettingsService.cs | 7 ++++++
src/Files.App/Strings/en-US/Resources.resw | 9 ++++++++
.../UserControls/NavigationToolbar.xaml | 18 +++++++--------
.../Settings/AppearanceViewModel.cs | 21 +++++++++++++++++
.../NavigationToolbarViewModel.cs | 18 +++++++++++++++
.../Views/Settings/AppearancePage.xaml | 8 +++++++
8 files changed, 101 insertions(+), 9 deletions(-)
create mode 100644 src/Files.App/Data/Enums/StatusCenterVisibility.cs
diff --git a/src/Files.App/Data/Contracts/IAppearanceSettingsService.cs b/src/Files.App/Data/Contracts/IAppearanceSettingsService.cs
index 415d53c3ec26..dc684c0e7226 100644
--- a/src/Files.App/Data/Contracts/IAppearanceSettingsService.cs
+++ b/src/Files.App/Data/Contracts/IAppearanceSettingsService.cs
@@ -116,5 +116,11 @@ public interface IAppearanceSettingsService : IBaseSettingsService, INotifyPrope
/// Gets or sets a value whether the shelf pane toggle button should be displayed.
///
bool ShowShelfPaneToggleButton{ get; set; }
+
+
+ ///
+ /// Gets or sets a value indicating when to display the Status Center button.
+ ///
+ StatusCenterVisibility StatusCenterVisibility { get; set; }
}
}
diff --git a/src/Files.App/Data/Enums/StatusCenterVisibility.cs b/src/Files.App/Data/Enums/StatusCenterVisibility.cs
new file mode 100644
index 000000000000..bafe15dbb22f
--- /dev/null
+++ b/src/Files.App/Data/Enums/StatusCenterVisibility.cs
@@ -0,0 +1,23 @@
+// Copyright (c) Files Community
+// Licensed under the MIT License.
+
+namespace Files.App.Data.Enums
+{
+ public enum StatusCenterVisibility
+ {
+ ///
+ /// During active file operations until dismissed.
+ ///
+ DuringFileOperationsUntilDismissed,
+
+ ///
+ /// During active file operations.
+ ///
+ DuringOngoingFileOperations,
+
+ ///
+ /// Always displayed.
+ ///
+ Always,
+ }
+}
diff --git a/src/Files.App/Services/Settings/AppearanceSettingsService.cs b/src/Files.App/Services/Settings/AppearanceSettingsService.cs
index e2b16aad26c8..5d53b29eccd7 100644
--- a/src/Files.App/Services/Settings/AppearanceSettingsService.cs
+++ b/src/Files.App/Services/Settings/AppearanceSettingsService.cs
@@ -159,6 +159,13 @@ public bool ShowShelfPaneToggleButton
set => Set(value);
}
+ ///
+ public StatusCenterVisibility StatusCenterVisibility
+ {
+ get => Get(StatusCenterVisibility.Always);
+ set => Set(value);
+ }
+
protected override void RaiseOnSettingChangedEvent(object sender, SettingChangedEventArgs e)
{
base.RaiseOnSettingChangedEvent(sender, e);
diff --git a/src/Files.App/Strings/en-US/Resources.resw b/src/Files.App/Strings/en-US/Resources.resw
index 4c2cfec9f4cf..543a6b523719 100644
--- a/src/Files.App/Strings/en-US/Resources.resw
+++ b/src/Files.App/Strings/en-US/Resources.resw
@@ -4226,4 +4226,13 @@
Search for files and folders...
+
+ During active operations and displayed until dismissed
+
+
+ Only during active operations
+
+
+ Show status center button
+
diff --git a/src/Files.App/UserControls/NavigationToolbar.xaml b/src/Files.App/UserControls/NavigationToolbar.xaml
index 44e615ad6bb2..93bacf529eea 100644
--- a/src/Files.App/UserControls/NavigationToolbar.xaml
+++ b/src/Files.App/UserControls/NavigationToolbar.xaml
@@ -471,17 +471,16 @@
AutomationProperties.Name="{helpers:ResourceString Name=StatusCenter}"
Style="{StaticResource AddressToolbarButtonStyle}"
ToolTipService.ToolTip="{helpers:ResourceString Name=StatusCenter}"
- Visibility="{x:Bind OngoingTasksViewModel.HasAnyItem, Mode=OneWay}">
+ Visibility="{x:Bind ViewModel.ShowStatusCenterButton, Mode=OneWay}">
-
+
@@ -594,7 +594,7 @@
-
+
diff --git a/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs b/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs
index 06f79b19f866..5c66313851c0 100644
--- a/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs
+++ b/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs
@@ -24,6 +24,8 @@ public sealed partial class AppearanceViewModel : ObservableObject
public Dictionary ImageHorizontalAlignmentTypes { get; private set; } = [];
+ public Dictionary StatusCenterVisibilityOptions { get; private set; } = [];
+
public ObservableCollection AppThemeResources { get; }
public ICommand SelectImageCommand { get; }
@@ -76,6 +78,12 @@ public AppearanceViewModel(IUserSettingsService userSettingsService, IResourcesS
UpdateSelectedResource();
+ // StatusCenterVisibility
+ StatusCenterVisibilityOptions.Add(StatusCenterVisibility.DuringFileOperationsUntilDismissed, Strings.DuringFileOperationsUntilDismissed.GetLocalizedResource());
+ StatusCenterVisibilityOptions.Add(StatusCenterVisibility.DuringOngoingFileOperations, Strings.DuringOngoingFileOperations.GetLocalizedResource());
+ StatusCenterVisibilityOptions.Add(StatusCenterVisibility.Always, Strings.Always.GetLocalizedResource());
+ SelectedStatusCenterVisibilityOption = StatusCenterVisibilityOptions[UserSettingsService.AppearanceSettingsService.StatusCenterVisibility];
+
SelectImageCommand = new RelayCommand(SelectBackgroundImage);
RemoveImageCommand = new RelayCommand(RemoveBackgroundImage);
}
@@ -330,6 +338,19 @@ public bool ShowShelfPaneToggleButton
}
}
+ private string selectedStatusCenterVisibilityOption;
+ public string SelectedStatusCenterVisibilityOption
+ {
+ get => selectedStatusCenterVisibilityOption;
+ set
+ {
+ if (SetProperty(ref selectedStatusCenterVisibilityOption, value))
+ {
+ UserSettingsService.AppearanceSettingsService.StatusCenterVisibility = StatusCenterVisibilityOptions.First(e => e.Value == value).Key;
+ }
+ }
+ }
+
public bool IsAppEnvironmentDev
{
get => AppLifecycleHelper.AppEnvironment is AppEnvironment.Dev;
diff --git a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs
index 8eae4938644f..b45f67d74205 100644
--- a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs
+++ b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs
@@ -36,6 +36,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
private readonly IUpdateService UpdateService = Ioc.Default.GetRequiredService();
private readonly ICommandManager Commands = Ioc.Default.GetRequiredService();
private readonly IContentPageContext ContentPageContext = Ioc.Default.GetRequiredService();
+ private readonly StatusCenterViewModel OngoingTasksViewModel = Ioc.Default.GetRequiredService();
// Fields
@@ -79,6 +80,10 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
public bool ShowHomeButton => AppearanceSettingsService.ShowHomeButton;
public bool EnableOmnibar => GeneralSettingsService.EnableOmnibar;
+ public bool ShowStatusCenterButton =>
+ AppearanceSettingsService.StatusCenterVisibility == StatusCenterVisibility.Always ||
+ (AppearanceSettingsService.StatusCenterVisibility == StatusCenterVisibility.DuringOngoingFileOperations && OngoingTasksViewModel.HasAnyItemInProgress) ||
+ (AppearanceSettingsService.StatusCenterVisibility == StatusCenterVisibility.DuringFileOperationsUntilDismissed && OngoingTasksViewModel.HasAnyItem);
public bool ShowShelfPaneToggleButton => AppearanceSettingsService.ShowShelfPaneToggleButton && AppLifecycleHelper.AppEnvironment is AppEnvironment.Dev;
@@ -369,6 +374,9 @@ public NavigationToolbarViewModel()
case nameof(AppearanceSettingsService.ShowHomeButton):
OnPropertyChanged(nameof(ShowHomeButton));
break;
+ case nameof(AppearanceSettingsService.StatusCenterVisibility):
+ OnPropertyChanged(nameof(ShowStatusCenterButton));
+ break;
case nameof(AppearanceSettingsService.ShowShelfPaneToggleButton):
OnPropertyChanged(nameof(ShowShelfPaneToggleButton));
break;
@@ -383,6 +391,16 @@ public NavigationToolbarViewModel()
break;
}
};
+ OngoingTasksViewModel.PropertyChanged += (s, e) =>
+ {
+ switch (e.PropertyName)
+ {
+ case nameof(OngoingTasksViewModel.HasAnyItem):
+ case nameof(OngoingTasksViewModel.HasAnyItemInProgress):
+ OnPropertyChanged(nameof(ShowStatusCenterButton));
+ break;
+ }
+ };
}
// Methods
diff --git a/src/Files.App/Views/Settings/AppearancePage.xaml b/src/Files.App/Views/Settings/AppearancePage.xaml
index 74e2f0b3c874..64af3aa0e41a 100644
--- a/src/Files.App/Views/Settings/AppearancePage.xaml
+++ b/src/Files.App/Views/Settings/AppearancePage.xaml
@@ -270,6 +270,14 @@
+
+
+
+
+
From 71f293b223be9560c7be74937ad3648167c1fa30 Mon Sep 17 00:00:00 2001
From: Yair <39923744+yaira2@users.noreply.github.com>
Date: Thu, 22 May 2025 11:04:28 -0400
Subject: [PATCH 2/2] Requested changes
---
src/Files.App/Data/Enums/StatusCenterVisibility.cs | 9 ++-------
src/Files.App/Strings/en-US/Resources.resw | 5 +----
src/Files.App/ViewModels/Settings/AppearanceViewModel.cs | 3 +--
.../UserControls/NavigationToolbarViewModel.cs | 4 +---
4 files changed, 5 insertions(+), 16 deletions(-)
diff --git a/src/Files.App/Data/Enums/StatusCenterVisibility.cs b/src/Files.App/Data/Enums/StatusCenterVisibility.cs
index bafe15dbb22f..5266d5c9342b 100644
--- a/src/Files.App/Data/Enums/StatusCenterVisibility.cs
+++ b/src/Files.App/Data/Enums/StatusCenterVisibility.cs
@@ -6,18 +6,13 @@ namespace Files.App.Data.Enums
public enum StatusCenterVisibility
{
///
- /// During active file operations until dismissed.
+ /// Always displayed.
///
- DuringFileOperationsUntilDismissed,
+ Always,
///
/// During active file operations.
///
DuringOngoingFileOperations,
-
- ///
- /// Always displayed.
- ///
- Always,
}
}
diff --git a/src/Files.App/Strings/en-US/Resources.resw b/src/Files.App/Strings/en-US/Resources.resw
index 543a6b523719..f220f4df8347 100644
--- a/src/Files.App/Strings/en-US/Resources.resw
+++ b/src/Files.App/Strings/en-US/Resources.resw
@@ -4226,11 +4226,8 @@
Search for files and folders...
-
- During active operations and displayed until dismissed
-
- Only during active operations
+ During file operations
Show status center button
diff --git a/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs b/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs
index 5c66313851c0..ef273de6af22 100644
--- a/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs
+++ b/src/Files.App/ViewModels/Settings/AppearanceViewModel.cs
@@ -79,9 +79,8 @@ public AppearanceViewModel(IUserSettingsService userSettingsService, IResourcesS
UpdateSelectedResource();
// StatusCenterVisibility
- StatusCenterVisibilityOptions.Add(StatusCenterVisibility.DuringFileOperationsUntilDismissed, Strings.DuringFileOperationsUntilDismissed.GetLocalizedResource());
- StatusCenterVisibilityOptions.Add(StatusCenterVisibility.DuringOngoingFileOperations, Strings.DuringOngoingFileOperations.GetLocalizedResource());
StatusCenterVisibilityOptions.Add(StatusCenterVisibility.Always, Strings.Always.GetLocalizedResource());
+ StatusCenterVisibilityOptions.Add(StatusCenterVisibility.DuringOngoingFileOperations, Strings.DuringOngoingFileOperations.GetLocalizedResource());
SelectedStatusCenterVisibilityOption = StatusCenterVisibilityOptions[UserSettingsService.AppearanceSettingsService.StatusCenterVisibility];
SelectImageCommand = new RelayCommand(SelectBackgroundImage);
diff --git a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs
index b45f67d74205..798c63b0cd23 100644
--- a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs
+++ b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs
@@ -82,8 +82,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
public bool EnableOmnibar => GeneralSettingsService.EnableOmnibar;
public bool ShowStatusCenterButton =>
AppearanceSettingsService.StatusCenterVisibility == StatusCenterVisibility.Always ||
- (AppearanceSettingsService.StatusCenterVisibility == StatusCenterVisibility.DuringOngoingFileOperations && OngoingTasksViewModel.HasAnyItemInProgress) ||
- (AppearanceSettingsService.StatusCenterVisibility == StatusCenterVisibility.DuringFileOperationsUntilDismissed && OngoingTasksViewModel.HasAnyItem);
+ (AppearanceSettingsService.StatusCenterVisibility == StatusCenterVisibility.DuringOngoingFileOperations && OngoingTasksViewModel.HasAnyItem);
public bool ShowShelfPaneToggleButton => AppearanceSettingsService.ShowShelfPaneToggleButton && AppLifecycleHelper.AppEnvironment is AppEnvironment.Dev;
@@ -396,7 +395,6 @@ public NavigationToolbarViewModel()
switch (e.PropertyName)
{
case nameof(OngoingTasksViewModel.HasAnyItem):
- case nameof(OngoingTasksViewModel.HasAnyItemInProgress):
OnPropertyChanged(nameof(ShowStatusCenterButton));
break;
}