Skip to content

Commit 4b65de9

Browse files
committed
Init
1 parent 68d16a2 commit 4b65de9

File tree

6 files changed

+87
-71
lines changed

6 files changed

+87
-71
lines changed

src/Files.App/Data/EventArguments/SearchBoxTextChangedEventArgs.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
namespace Files.App.Data.EventArguments
99
{
10+
[Obsolete("Superseded by Omnibar.")]
1011
public sealed class SearchBoxTextChangedEventArgs
1112
{
1213
public SearchBoxTextChangeReason Reason { get; }

src/Files.App/UserControls/NavigationToolbar.xaml.cs

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -259,18 +259,13 @@ private void ClickablePath_GettingFocus(UIElement sender, GettingFocusEventArgs
259259

260260
private async void Omnibar_QuerySubmitted(Omnibar sender, OmnibarQuerySubmittedEventArgs args)
261261
{
262-
var mode = Omnibar.CurrentSelectedMode;
263-
264-
// Path mode
265-
if (mode == OmnibarPathMode)
262+
if (Omnibar.CurrentSelectedMode == OmnibarPathMode)
266263
{
267264
await ViewModel.HandleItemNavigationAsync(args.Text);
268265
(MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic);
269266
return;
270267
}
271-
272-
// Command palette mode
273-
else if (mode == OmnibarCommandPaletteMode)
268+
else if (Omnibar.CurrentSelectedMode == OmnibarCommandPaletteMode)
274269
{
275270
var item = args.Item as NavigationBarSuggestionItem;
276271

@@ -312,26 +307,9 @@ await DialogDisplayHelper.ShowDialogAsync(Strings.InvalidCommand.GetLocalizedRes
312307
(MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic);
313308
return;
314309
}
315-
316-
// Search mode
317-
else if (mode == OmnibarSearchMode)
310+
else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode)
318311
{
319-
var shellPage = ContentPageContext.ShellPage;
320-
321-
if (args.Item is SuggestionModel item && !string.IsNullOrWhiteSpace(item.ItemPath) && shellPage is not null)
322-
await NavigationHelpers.OpenPath(item.ItemPath, shellPage);
323-
else
324-
{
325-
var searchQuery = args.Item is SuggestionModel x && !string.IsNullOrWhiteSpace(x.Name)
326-
? x.Name
327-
: args.Text;
328-
329-
shellPage?.SubmitSearch(searchQuery); // use the resolved shellPage for consistency
330-
ViewModel.SaveSearchQueryToList(searchQuery);
331-
}
332-
333-
(MainPageViewModel.SelectedTabItem?.TabItemContent as Control)?.Focus(FocusState.Programmatic);
334-
return;
312+
ContentPageContext.ShellPage?.SubmitSearch(args.Text);
335313
}
336314
}
337315

@@ -340,20 +318,26 @@ private async void Omnibar_TextChanged(Omnibar sender, OmnibarTextChangedEventAr
340318
if (args.Reason is not OmnibarTextChangeReason.UserInput)
341319
return;
342320

343-
if (Omnibar.CurrentSelectedMode == OmnibarPathMode)
321+
if (args.Mode == OmnibarPathMode)
344322
{
345-
await ViewModel.PopulateOmnibarSuggestionsForPathMode();
323+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
324+
{
325+
await ViewModel.PopulateOmnibarSuggestionsForPathMode();
326+
});
346327
}
347-
else if (Omnibar.CurrentSelectedMode == OmnibarCommandPaletteMode)
328+
else if (args.Mode == OmnibarCommandPaletteMode)
348329
{
349-
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
330+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
350331
{
351-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
332+
await ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
352333
});
353334
}
354-
else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode)
335+
else if (args.Mode == OmnibarSearchMode)
355336
{
356-
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
337+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
338+
{
339+
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
340+
});
357341
}
358342
}
359343

@@ -465,9 +449,9 @@ await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
465449
{
466450
ViewModel.OmnibarCommandPaletteModeText = string.Empty;
467451

468-
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
452+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
469453
{
470-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
454+
await ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
471455
});
472456
}
473457
else if (e.NewMode == OmnibarSearchMode)
@@ -477,7 +461,10 @@ await DispatcherQueue.EnqueueOrInvokeAsync(() =>
477461
else
478462
ViewModel.OmnibarSearchModeText = ViewModel.InstanceViewModel.CurrentSearchQuery;
479463

480-
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
464+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
465+
{
466+
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
467+
});
481468
}
482469
}
483470

@@ -500,14 +487,17 @@ await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
500487
{
501488
ViewModel.OmnibarCommandPaletteModeText = string.Empty;
502489

503-
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
490+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
504491
{
505-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
492+
await ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
506493
});
507494
}
508495
else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode)
509496
{
510-
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
497+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
498+
{
499+
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
500+
});
511501
}
512502
}
513503
}

src/Files.App/UserControls/SearchBox.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88

99
namespace Files.App.UserControls
1010
{
11+
[Obsolete("Superseded by Omnibar.")]
1112
public sealed partial class SearchBox : UserControl
1213
{
1314
public static readonly DependencyProperty SearchBoxViewModelProperty =

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

Lines changed: 53 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using Microsoft.UI.Xaml.Input;
1313
using Microsoft.UI.Xaml.Media.Imaging;
1414
using System.IO;
15+
using System.Threading.Tasks;
1516
using System.Windows.Input;
1617
using Windows.AI.Actions;
1718
using Windows.ApplicationModel.DataTransfer;
@@ -82,6 +83,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
8283

8384
public bool IsSingleItemOverride { get; set; }
8485

86+
[Obsolete("Superseded by Omnibar.")]
8587
public bool SearchHasFocus { get; private set; }
8688

8789
public bool EnableOmnibar => GeneralSettingsService.EnableOmnibar;
@@ -93,6 +95,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
9395

9496
private NavigationToolbar? AddressToolbar => (MainWindow.Instance.Content as Frame)?.FindDescendant<NavigationToolbar>();
9597

98+
[Obsolete("Superseded by Omnibar.")]
9699
public SearchBoxViewModel SearchBoxViewModel => (SearchBoxViewModel)SearchBox;
97100

98101
public bool HasAdditionalAction =>
@@ -186,15 +189,19 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
186189
public bool CanRefresh { get => _CanRefresh; set => SetProperty(ref _CanRefresh, value); }
187190

188191
private string _SearchButtonGlyph = "\uE721";
192+
[Obsolete("Superseded by Omnibar.")]
189193
public string SearchButtonGlyph { get => _SearchButtonGlyph; set => SetProperty(ref _SearchButtonGlyph, value); }
190194

191195
private bool _ManualEntryBoxLoaded;
196+
[Obsolete("Superseded by Omnibar.")]
192197
public bool ManualEntryBoxLoaded { get => _ManualEntryBoxLoaded; set => SetProperty(ref _ManualEntryBoxLoaded, value); }
193198

194199
private bool _ClickablePathLoaded = true;
200+
[Obsolete("Superseded by Omnibar.")]
195201
public bool ClickablePathLoaded { get => _ClickablePathLoaded; set => SetProperty(ref _ClickablePathLoaded, value); }
196202

197203
private string _PathControlDisplayText;
204+
[Obsolete("Superseded by Omnibar.")]
198205
public string PathControlDisplayText { get => _PathControlDisplayText; set => SetProperty(ref _PathControlDisplayText, value); }
199206

200207
private bool _HasItem = false;
@@ -204,9 +211,11 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
204211
public Style LayoutThemedIcon { get => _LayoutThemedIcon; set => SetProperty(ref _LayoutThemedIcon, value); }
205212

206213
private ISearchBoxViewModel _SearchBox = new SearchBoxViewModel();
214+
[Obsolete("Superseded by Omnibar.")]
207215
public ISearchBoxViewModel SearchBox { get => _SearchBox; set => SetProperty(ref _SearchBox, value); }
208216

209217
private bool _IsSearchBoxVisible;
218+
[Obsolete("Superseded by Omnibar.")]
210219
public bool IsSearchBoxVisible
211220
{
212221
get => _IsSearchBoxVisible;
@@ -236,11 +245,7 @@ public string? PathText
236245
public string? OmnibarSearchModeText { get => _OmnibarSearchModeText; set => SetProperty(ref _OmnibarSearchModeText, value); }
237246

238247
private string _OmnibarCurrentSelectedModeName = OmnibarPathModeName;
239-
public string OmnibarCurrentSelectedModeName
240-
{
241-
get => _OmnibarCurrentSelectedModeName;
242-
set => SetProperty(ref _OmnibarCurrentSelectedModeName, value);
243-
}
248+
public string OmnibarCurrentSelectedModeName { get => _OmnibarCurrentSelectedModeName; set => SetProperty(ref _OmnibarCurrentSelectedModeName, value); }
244249

245250
private CurrentInstanceViewModel _InstanceViewModel;
246251
public CurrentInstanceViewModel InstanceViewModel
@@ -540,6 +545,7 @@ x.Item is ZipStorageFile ||
540545
deferral.Complete();
541546
}
542547

548+
[Obsolete("Superseded by Omnibar.")]
543549
public void PathItemSeparator_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
544550
{
545551
var pathSeparatorIcon = sender as FontIcon;
@@ -553,35 +559,41 @@ public void PathItemSeparator_DataContextChanged(FrameworkElement sender, DataCo
553559
});
554560
}
555561

562+
[Obsolete("Superseded by Omnibar.")]
556563
public void PathboxItemFlyout_Opening(object sender, object e)
557564
{
558565
ToolbarFlyoutOpening?.Invoke(this, new ToolbarFlyoutOpeningEventArgs((MenuFlyout)sender));
559566
}
560567

568+
[Obsolete("Superseded by Omnibar.")]
561569
public void PathBoxItemFlyout_Closed(object sender, object e)
562570
{
563571
((MenuFlyout)sender).Items.Clear();
564572
}
565573

574+
[Obsolete("Superseded by Omnibar.")]
566575
public void CurrentPathSetTextBox_TextChanged(object sender, TextChangedEventArgs args)
567576
{
568577
if (sender is TextBox textBox)
569578
PathBoxQuerySubmitted?.Invoke(this, new ToolbarQuerySubmittedEventArgs() { QueryText = textBox.Text });
570579
}
571580

581+
[Obsolete("Superseded by Omnibar.")]
572582
public void VisiblePath_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
573583
{
574584
if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
575585
AddressBarTextEntered?.Invoke(this, new AddressBarTextEnteredEventArgs() { AddressBarTextField = sender });
576586
}
577587

588+
[Obsolete("Superseded by Omnibar.")]
578589
public void VisiblePath_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
579590
{
580591
PathBoxQuerySubmitted?.Invoke(this, new ToolbarQuerySubmittedEventArgs() { QueryText = args.QueryText });
581592

582593
(this as IAddressToolbarViewModel).IsEditModeEnabled = false;
583594
}
584595

596+
[Obsolete("Superseded by Omnibar.")]
585597
public void PathBoxItem_PointerPressed(object sender, PointerRoutedEventArgs e)
586598
{
587599
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Mouse)
@@ -710,6 +722,7 @@ await DialogDisplayHelper.ShowDialogAsync(Strings.InvalidItemDialogTitle.GetLoca
710722
PathControlDisplayText = ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory;
711723
}
712724

725+
[Obsolete("Superseded by Omnibar.")]
713726
public void PathBoxItem_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
714727
{
715728
switch (e.Key)
@@ -794,6 +807,7 @@ public void UpdateAdditionalActions()
794807
OnPropertyChanged(nameof(HasAdditionalAction));
795808
}
796809

810+
[Obsolete("Superseded by Omnibar.")]
797811
private void CloseSearchBox(bool doFocus = false)
798812
{
799813
if (_SearchBox.WasQuerySubmitted)
@@ -818,11 +832,13 @@ private void CloseSearchBox(bool doFocus = false)
818832
}
819833
}
820834

835+
[Obsolete("Superseded by Omnibar.")]
821836
public void SearchRegion_GotFocus(object sender, RoutedEventArgs e)
822837
{
823838
SearchHasFocus = true;
824839
}
825840

841+
[Obsolete("Superseded by Omnibar.")]
826842
public void SearchRegion_LostFocus(object sender, RoutedEventArgs e)
827843
{
828844
var element = Microsoft.UI.Xaml.Input.FocusManager.GetFocusedElement();
@@ -833,6 +849,7 @@ public void SearchRegion_LostFocus(object sender, RoutedEventArgs e)
833849
CloseSearchBox();
834850
}
835851

852+
[Obsolete("Superseded by Omnibar.")]
836853
private void SearchRegion_Escaped(object? sender, ISearchBoxViewModel _SearchBox)
837854
=> CloseSearchBox(true);
838855

@@ -1153,7 +1170,7 @@ void AddNoResultsItem()
11531170
}
11541171
}
11551172

1156-
public void PopulateOmnibarSuggestionsForCommandPaletteMode()
1173+
public async Task PopulateOmnibarSuggestionsForCommandPaletteMode()
11571174
{
11581175
var newSuggestions = new List<NavigationBarSuggestionItem>();
11591176

@@ -1194,22 +1211,27 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode()
11941211
}
11951212
}
11961213

1197-
var suggestionItems = Commands
1198-
.Where(command => command.IsExecutable
1199-
&& command.IsAccessibleGlobally
1200-
&& (command.Description.Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)
1201-
|| command.Code.ToString().Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)))
1202-
.Select(command => new NavigationBarSuggestionItem
1203-
{
1204-
ThemedIconStyle = command.Glyph.ToThemedIconStyle(),
1205-
Glyph = command.Glyph.BaseGlyph,
1206-
Text = command.Description,
1207-
PrimaryDisplay = command.Description,
1208-
HotKeys = command.HotKeys,
1209-
SearchText = OmnibarCommandPaletteModeText,
1210-
})
1211-
.Where(item => item.Text != Commands.OpenCommandPalette.Description.ToString()
1212-
&& item.Text != Commands.EditPath.Description.ToString());
1214+
IEnumerable<NavigationBarSuggestionItem> suggestionItems = null!;
1215+
1216+
await Task.Run(() =>
1217+
{
1218+
suggestionItems = Commands
1219+
.Where(command => command.IsExecutable
1220+
&& command.IsAccessibleGlobally
1221+
&& (command.Description.Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)
1222+
|| command.Code.ToString().Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)))
1223+
.Select(command => new NavigationBarSuggestionItem
1224+
{
1225+
ThemedIconStyle = command.Glyph.ToThemedIconStyle(),
1226+
Glyph = command.Glyph.BaseGlyph,
1227+
Text = command.Description,
1228+
PrimaryDisplay = command.Description,
1229+
HotKeys = command.HotKeys,
1230+
SearchText = OmnibarCommandPaletteModeText,
1231+
})
1232+
.Where(item => item.Text != Commands.OpenCommandPalette.Description.ToString()
1233+
&& item.Text != Commands.EditPath.Description.ToString());
1234+
});
12131235

12141236
newSuggestions.AddRange(suggestionItems);
12151237

@@ -1257,20 +1279,19 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode()
12571279

12581280
public async Task PopulateOmnibarSuggestionsForSearchMode()
12591281
{
1282+
OmnibarSearchModeSuggestionItems.Clear();
1283+
12601284
if (ContentPageContext.ShellPage is null)
12611285
return;
12621286

1263-
List<SuggestionModel> newSuggestions = [];
1287+
ContentPageContext.ShellPage.ShellViewModel.FilesAndFoldersFilter = OmnibarSearchModeText;
12641288

1265-
if (string.IsNullOrWhiteSpace(OmnibarSearchModeText))
1266-
{
1267-
var previousSearchQueries = UserSettingsService.GeneralSettingsService.PreviousSearchQueriesList;
1268-
if (previousSearchQueries is not null)
1269-
newSuggestions.AddRange(previousSearchQueries.Select(query => new SuggestionModel(query, true)));
1270-
}
1271-
else
1289+
// Refresh the browser to apply the search filter
1290+
await ContentPageContext.ShellPage.ShellViewModel.ApplyFilesAndFoldersChangesAsync();
1291+
1292+
if (!string.IsNullOrWhiteSpace(OmnibarSearchModeText))
12721293
{
1273-
var search = new FolderSearch
1294+
var search = new FolderSearch()
12741295
{
12751296
Query = OmnibarSearchModeText,
12761297
Folder = ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory,
@@ -1298,7 +1319,7 @@ public async Task PopulateOmnibarSuggestionsForSearchMode()
12981319
}
12991320

13001321

1301-
[Obsolete("Remove once Omnibar goes out of experimental.")]
1322+
[Obsolete("Superseded by Omnibar.")]
13021323
public async Task SetAddressBarSuggestionsAsync(AutoSuggestBox sender, IShellPage shellpage)
13031324
{
13041325
if (sender.Text is not null && shellpage.ShellViewModel is not null)

0 commit comments

Comments
 (0)