diff --git a/src/Files.App/UserControls/NavigationToolbar.xaml.cs b/src/Files.App/UserControls/NavigationToolbar.xaml.cs index 291e4ee96223..7b90f7959a3b 100644 --- a/src/Files.App/UserControls/NavigationToolbar.xaml.cs +++ b/src/Files.App/UserControls/NavigationToolbar.xaml.cs @@ -59,6 +59,7 @@ private void NavToolbar_Loading(FrameworkElement _, object e) OngoingTasksViewModel.NewItemAdded += OngoingTasksActions_ProgressBannerPosted; } + [Obsolete("Superseded by Omnibar.")] private void VisiblePath_Loaded(object _, RoutedEventArgs e) { // AutoSuggestBox won't receive focus unless it's fully loaded @@ -73,6 +74,7 @@ private void VisiblePath_Loaded(object _, RoutedEventArgs e) } } + [Obsolete("Superseded by Omnibar.")] private void ManualPathEntryItem_Click(object _, PointerRoutedEventArgs e) { if (e.Pointer.PointerDeviceType is PointerDeviceType.Mouse) @@ -84,6 +86,7 @@ private void ManualPathEntryItem_Click(object _, PointerRoutedEventArgs e) ViewModel.IsEditModeEnabled = true; } + [Obsolete("Superseded by Omnibar.")] private async void VisiblePath_KeyDown(object _, KeyRoutedEventArgs e) { if (e.Key is VirtualKey.Escape) @@ -97,6 +100,7 @@ private async void VisiblePath_KeyDown(object _, KeyRoutedEventArgs e) ClickablePath.Focus(FocusState.Keyboard); } } + [Obsolete("Superseded by Omnibar.")] private void VisiblePath_LostFocus(object _, RoutedEventArgs e) { if (App.AppModel.IsMainWindowClosed) @@ -119,8 +123,11 @@ private void VisiblePath_LostFocus(object _, RoutedEventArgs e) VisiblePath.Focus(FocusState.Programmatic); } + [Obsolete("Superseded by Omnibar.")] private void SearchRegion_OnGotFocus(object sender, RoutedEventArgs e) => ViewModel.SearchRegion_GotFocus(sender, e); + [Obsolete("Superseded by Omnibar.")] private void SearchRegion_LostFocus(object sender, RoutedEventArgs e) => ViewModel.SearchRegion_LostFocus(sender, e); + [Obsolete("Superseded by Omnibar.")] private void SearchRegion_AccessKeyInvoked(UIElement sender, AccessKeyInvokedEventArgs args) { // Suppress access key invocation if any dialog is open @@ -129,7 +136,7 @@ private void SearchRegion_AccessKeyInvoked(UIElement sender, AccessKeyInvokedEve else sender.Focus(FocusState.Keyboard); } - + [Obsolete("Superseded by Omnibar.")] private void VisiblePath_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args) => ViewModel.VisiblePath_QuerySubmitted(sender, args); @@ -247,6 +254,7 @@ void HistoryItemClicked(ToolbarHistoryItemModel? itemModel) } } + [Obsolete("Superseded by Omnibar.")] private void ClickablePath_GettingFocus(UIElement sender, GettingFocusEventArgs args) { if (args.InputDevice != FocusInputDeviceKind.Keyboard) @@ -342,18 +350,15 @@ private async void Omnibar_TextChanged(Omnibar sender, OmnibarTextChangedEventAr if (Omnibar.CurrentSelectedMode == OmnibarPathMode) { - await ViewModel.PopulateOmnibarSuggestionsForPathMode(); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForPathMode); } else if (Omnibar.CurrentSelectedMode == OmnibarCommandPaletteMode) { - await DispatcherQueue.EnqueueOrInvokeAsync(() => - { - ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode(); - }); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode); } else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode) { - await ViewModel.PopulateOmnibarSuggestionsForSearchMode(); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForSearchMode); } } @@ -456,19 +461,13 @@ private async void Omnibar_ModeChanged(object sender, OmnibarModeChangedEventArg ? Constants.UserEnvironmentPaths.HomePath : ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory; - await DispatcherQueue.EnqueueOrInvokeAsync(async () => - { - await ViewModel.PopulateOmnibarSuggestionsForPathMode(); - }); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForPathMode); } else if (e.NewMode == OmnibarCommandPaletteMode) { ViewModel.OmnibarCommandPaletteModeText = string.Empty; - await DispatcherQueue.EnqueueOrInvokeAsync(() => - { - ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode(); - }); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode); } else if (e.NewMode == OmnibarSearchMode) { @@ -477,7 +476,7 @@ await DispatcherQueue.EnqueueOrInvokeAsync(() => else ViewModel.OmnibarSearchModeText = ViewModel.InstanceViewModel.CurrentSearchQuery; - await ViewModel.PopulateOmnibarSuggestionsForSearchMode(); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForSearchMode); } } @@ -491,23 +490,17 @@ private async void Omnibar_IsFocusedChanged(Omnibar sender, OmnibarIsFocusedChan ? Constants.UserEnvironmentPaths.HomePath : ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory; - await DispatcherQueue.EnqueueOrInvokeAsync(async () => - { - await ViewModel.PopulateOmnibarSuggestionsForPathMode(); - }); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForPathMode); } else if (Omnibar.CurrentSelectedMode == OmnibarCommandPaletteMode) { ViewModel.OmnibarCommandPaletteModeText = string.Empty; - await DispatcherQueue.EnqueueOrInvokeAsync(() => - { - ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode(); - }); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode); } else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode) { - await ViewModel.PopulateOmnibarSuggestionsForSearchMode(); + await DispatcherQueue.EnqueueOrInvokeAsync(ViewModel.PopulateOmnibarSuggestionsForSearchMode); } } } diff --git a/src/Files.App/UserControls/SearchBox.xaml.cs b/src/Files.App/UserControls/SearchBox.xaml.cs index ff31b9899cd1..43fb5c13656d 100644 --- a/src/Files.App/UserControls/SearchBox.xaml.cs +++ b/src/Files.App/UserControls/SearchBox.xaml.cs @@ -8,6 +8,7 @@ namespace Files.App.UserControls { + [Obsolete("Superseded by Omnibar.")] public sealed partial class SearchBox : UserControl { public static readonly DependencyProperty SearchBoxViewModelProperty = diff --git a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs index 5a156a255218..645b2a861d13 100644 --- a/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs +++ b/src/Files.App/ViewModels/UserControls/NavigationToolbarViewModel.cs @@ -82,6 +82,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr public bool IsSingleItemOverride { get; set; } + [Obsolete("Superseded by Omnibar.")] public bool SearchHasFocus { get; private set; } public bool EnableOmnibar => GeneralSettingsService.EnableOmnibar; @@ -93,6 +94,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr private NavigationToolbar? AddressToolbar => (MainWindow.Instance.Content as Frame)?.FindDescendant(); + [Obsolete("Superseded by Omnibar.")] public SearchBoxViewModel SearchBoxViewModel => (SearchBoxViewModel)SearchBox; public bool HasAdditionalAction => @@ -186,15 +188,19 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr public bool CanRefresh { get => _CanRefresh; set => SetProperty(ref _CanRefresh, value); } private string _SearchButtonGlyph = "\uE721"; + [Obsolete("Superseded by Omnibar.")] public string SearchButtonGlyph { get => _SearchButtonGlyph; set => SetProperty(ref _SearchButtonGlyph, value); } private bool _ManualEntryBoxLoaded; + [Obsolete("Superseded by Omnibar.")] public bool ManualEntryBoxLoaded { get => _ManualEntryBoxLoaded; set => SetProperty(ref _ManualEntryBoxLoaded, value); } private bool _ClickablePathLoaded = true; + [Obsolete("Superseded by Omnibar.")] public bool ClickablePathLoaded { get => _ClickablePathLoaded; set => SetProperty(ref _ClickablePathLoaded, value); } private string _PathControlDisplayText; + [Obsolete("Superseded by Omnibar.")] public string PathControlDisplayText { get => _PathControlDisplayText; set => SetProperty(ref _PathControlDisplayText, value); } private bool _HasItem = false; @@ -207,6 +213,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr public ISearchBoxViewModel SearchBox { get => _SearchBox; set => SetProperty(ref _SearchBox, value); } private bool _IsSearchBoxVisible; + [Obsolete("Superseded by Omnibar.")] public bool IsSearchBoxVisible { get => _IsSearchBoxVisible; @@ -236,11 +243,7 @@ public string? PathText public string? OmnibarSearchModeText { get => _OmnibarSearchModeText; set => SetProperty(ref _OmnibarSearchModeText, value); } private string _OmnibarCurrentSelectedModeName = OmnibarPathModeName; - public string OmnibarCurrentSelectedModeName - { - get => _OmnibarCurrentSelectedModeName; - set => SetProperty(ref _OmnibarCurrentSelectedModeName, value); - } + public string OmnibarCurrentSelectedModeName { get => _OmnibarCurrentSelectedModeName; set => SetProperty(ref _OmnibarCurrentSelectedModeName, value); } private CurrentInstanceViewModel _InstanceViewModel; public CurrentInstanceViewModel InstanceViewModel @@ -259,7 +262,7 @@ public CurrentInstanceViewModel InstanceViewModel } } - [Obsolete("Remove once Omnibar goes out of experimental.")] + [Obsolete("Superseded by Omnibar.")] public bool IsEditModeEnabled { get => ManualEntryBoxLoaded; @@ -411,6 +414,7 @@ private void UserSettingsService_OnSettingChangedEvent(object? sender, SettingCh } } + [Obsolete("Superseded by Omnibar.")] public void PathBoxItem_DragLeave(object sender, DragEventArgs e) { if (((FrameworkElement)sender).DataContext is not PathBoxItem pathBoxItem || @@ -426,6 +430,7 @@ public void PathBoxItem_DragLeave(object sender, DragEventArgs e) _dragOverPath = null; } + [Obsolete("Superseded by Omnibar.")] public async Task PathBoxItem_Drop(object sender, DragEventArgs e) { if (_lockFlag) @@ -464,6 +469,7 @@ public async Task PathBoxItem_Drop(object sender, DragEventArgs e) _lockFlag = false; } + [Obsolete("Superseded by Omnibar.")] public async Task PathBoxItem_DragOver(object sender, DragEventArgs e) { if (IsSingleItemOverride || @@ -540,6 +546,7 @@ x.Item is ZipStorageFile || deferral.Complete(); } + [Obsolete("Superseded by Omnibar.")] public void PathItemSeparator_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args) { var pathSeparatorIcon = sender as FontIcon; @@ -553,28 +560,33 @@ public void PathItemSeparator_DataContextChanged(FrameworkElement sender, DataCo }); } + [Obsolete("Superseded by Omnibar.")] public void PathboxItemFlyout_Opening(object sender, object e) { ToolbarFlyoutOpening?.Invoke(this, new ToolbarFlyoutOpeningEventArgs((MenuFlyout)sender)); } + [Obsolete("Superseded by Omnibar.")] public void PathBoxItemFlyout_Closed(object sender, object e) { ((MenuFlyout)sender).Items.Clear(); } + [Obsolete("Superseded by Omnibar.")] public void CurrentPathSetTextBox_TextChanged(object sender, TextChangedEventArgs args) { if (sender is TextBox textBox) PathBoxQuerySubmitted?.Invoke(this, new ToolbarQuerySubmittedEventArgs() { QueryText = textBox.Text }); } + [Obsolete("Superseded by Omnibar.")] public void VisiblePath_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args) { if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput) AddressBarTextEntered?.Invoke(this, new AddressBarTextEnteredEventArgs() { AddressBarTextField = sender }); } + [Obsolete("Superseded by Omnibar.")] public void VisiblePath_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args) { PathBoxQuerySubmitted?.Invoke(this, new ToolbarQuerySubmittedEventArgs() { QueryText = args.QueryText }); @@ -582,6 +594,7 @@ public void VisiblePath_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuer (this as IAddressToolbarViewModel).IsEditModeEnabled = false; } + [Obsolete("Superseded by Omnibar.")] public void PathBoxItem_PointerPressed(object sender, PointerRoutedEventArgs e) { if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Mouse) @@ -710,6 +723,7 @@ await DialogDisplayHelper.ShowDialogAsync(Strings.InvalidItemDialogTitle.GetLoca PathControlDisplayText = ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory; } + [Obsolete("Superseded by Omnibar.")] public void PathBoxItem_PreviewKeyDown(object sender, KeyRoutedEventArgs e) { switch (e.Key) @@ -794,6 +808,7 @@ public void UpdateAdditionalActions() OnPropertyChanged(nameof(HasAdditionalAction)); } + [Obsolete("Superseded by Omnibar.")] private void CloseSearchBox(bool doFocus = false) { if (_SearchBox.WasQuerySubmitted) @@ -818,11 +833,13 @@ private void CloseSearchBox(bool doFocus = false) } } + [Obsolete("Superseded by Omnibar.")] public void SearchRegion_GotFocus(object sender, RoutedEventArgs e) { SearchHasFocus = true; } + [Obsolete("Superseded by Omnibar.")] public void SearchRegion_LostFocus(object sender, RoutedEventArgs e) { var element = Microsoft.UI.Xaml.Input.FocusManager.GetFocusedElement(); @@ -833,6 +850,7 @@ public void SearchRegion_LostFocus(object sender, RoutedEventArgs e) CloseSearchBox(); } + [Obsolete("Superseded by Omnibar.")] private void SearchRegion_Escaped(object? sender, ISearchBoxViewModel _SearchBox) => CloseSearchBox(true); @@ -912,7 +930,7 @@ private static string NormalizePathInput(string currentInput, bool isFtp) return currentInput; } - [Obsolete("Remove once Omnibar goes out of experimental.")] + [Obsolete("Superseded by Omnibar.")] public async Task CheckPathInputAsync(string currentInput, string currentSelectedPath, IShellPage shellPage) { if (currentInput.StartsWith('>')) @@ -1153,7 +1171,7 @@ void AddNoResultsItem() } } - public void PopulateOmnibarSuggestionsForCommandPaletteMode() + public async Task PopulateOmnibarSuggestionsForCommandPaletteMode() { var newSuggestions = new List(); @@ -1194,22 +1212,27 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode() } } - var suggestionItems = Commands - .Where(command => command.IsExecutable - && command.IsAccessibleGlobally - && (command.Description.Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase) - || command.Code.ToString().Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase))) - .Select(command => new NavigationBarSuggestionItem - { - ThemedIconStyle = command.Glyph.ToThemedIconStyle(), - Glyph = command.Glyph.BaseGlyph, - Text = command.Description, - PrimaryDisplay = command.Description, - HotKeys = command.HotKeys, - SearchText = OmnibarCommandPaletteModeText, - }) - .Where(item => item.Text != Commands.OpenCommandPalette.Description.ToString() - && item.Text != Commands.EditPath.Description.ToString()); + IEnumerable suggestionItems = null!; + + await Task.Run(() => + { + suggestionItems = Commands + .Where(command => command.IsExecutable + && command.IsAccessibleGlobally + && (command.Description.Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase) + || command.Code.ToString().Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase))) + .Select(command => new NavigationBarSuggestionItem + { + ThemedIconStyle = command.Glyph.ToThemedIconStyle(), + Glyph = command.Glyph.BaseGlyph, + Text = command.Description, + PrimaryDisplay = command.Description, + HotKeys = command.HotKeys, + SearchText = OmnibarCommandPaletteModeText, + }) + .Where(item => item.Text != Commands.OpenCommandPalette.Description.ToString() + && item.Text != Commands.EditPath.Description.ToString()); + }); newSuggestions.AddRange(suggestionItems); @@ -1297,8 +1320,7 @@ public async Task PopulateOmnibarSuggestionsForSearchMode() OmnibarSearchModeSuggestionItems.Add(item); } - - [Obsolete("Remove once Omnibar goes out of experimental.")] + [Obsolete("Superseded by Omnibar.")] public async Task SetAddressBarSuggestionsAsync(AutoSuggestBox sender, IShellPage shellpage) { if (sender.Text is not null && shellpage.ShellViewModel is not null) diff --git a/src/Files.App/ViewModels/UserControls/SearchBoxViewModel.cs b/src/Files.App/ViewModels/UserControls/SearchBoxViewModel.cs index a2cadcb3dd72..00d679b291c2 100644 --- a/src/Files.App/ViewModels/UserControls/SearchBoxViewModel.cs +++ b/src/Files.App/ViewModels/UserControls/SearchBoxViewModel.cs @@ -9,6 +9,7 @@ namespace Files.App.ViewModels.UserControls { + [Obsolete("Superseded by Omnibar.")] public sealed partial class SearchBoxViewModel : ObservableObject, ISearchBoxViewModel { private string query;