Skip to content

Commit fffe50e

Browse files
0x5bfayaira2
authored andcommitted
Init
1 parent fe52157 commit fffe50e

File tree

7 files changed

+109
-43
lines changed

7 files changed

+109
-43
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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,6 @@
462462
IconOnActive="{controls:ThemedIconMarkup Style={StaticResource App.ThemedIcons.Omnibar.Search}, IsFilled=True}"
463463
IconOnInactive="{controls:ThemedIconMarkup Style={StaticResource App.ThemedIcons.Omnibar.Search}, IconType=Outline}"
464464
IsAutoFocusEnabled="True"
465-
IsEnabled="False"
466465
ItemsSource="{x:Bind ViewModel.OmnibarSearchModeSuggestionItems, Mode=OneWay}"
467466
ModeName="{x:Bind Commands.Search.LabelWithHotKey, Mode=OneWay}"
468467
PlaceholderText="{helpers:ResourceString Name=OmnibarSearchModeTextPlaceholder}"

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

Lines changed: 31 additions & 21 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,10 +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
{
312+
ContentPageContext.ShellPage?.SubmitSearch(args.Text);
319313
}
320314
}
321315

@@ -324,16 +318,26 @@ private async void Omnibar_TextChanged(Omnibar sender, OmnibarTextChangedEventAr
324318
if (args.Reason is not OmnibarTextChangeReason.UserInput)
325319
return;
326320

327-
if (Omnibar.CurrentSelectedMode == OmnibarPathMode)
321+
if (args.Mode == OmnibarPathMode)
328322
{
329-
await ViewModel.PopulateOmnibarSuggestionsForPathMode();
323+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
324+
{
325+
await ViewModel.PopulateOmnibarSuggestionsForPathMode();
326+
});
330327
}
331-
else if (Omnibar.CurrentSelectedMode == OmnibarCommandPaletteMode)
328+
else if (args.Mode == OmnibarCommandPaletteMode)
332329
{
333-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
330+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
331+
{
332+
await ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
333+
});
334334
}
335-
else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode)
335+
else if (args.Mode == OmnibarSearchMode)
336336
{
337+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
338+
{
339+
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
340+
});
337341
}
338342
}
339343

@@ -445,14 +449,17 @@ await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
445449
{
446450
ViewModel.OmnibarCommandPaletteModeText = string.Empty;
447451

448-
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
452+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
449453
{
450-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
454+
await ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
451455
});
452456
}
453457
else if (e.NewMode == OmnibarSearchMode)
454458
{
455-
459+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
460+
{
461+
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
462+
});
456463
}
457464
}
458465

@@ -477,15 +484,18 @@ await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
477484

478485
if (ViewModel.OmnibarCommandPaletteModeSuggestionItems.Count is 0)
479486
{
480-
await DispatcherQueue.EnqueueOrInvokeAsync(() =>
487+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
481488
{
482-
ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
489+
await ViewModel.PopulateOmnibarSuggestionsForCommandPaletteMode();
483490
});
484491
}
485492
}
486493
else if (Omnibar.CurrentSelectedMode == OmnibarSearchMode)
487494
{
488-
495+
await DispatcherQueue.EnqueueOrInvokeAsync(async () =>
496+
{
497+
await ViewModel.PopulateOmnibarSuggestionsForSearchMode();
498+
});
489499
}
490500
}
491501
}

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: 73 additions & 21 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 ShowHomeButton => AppearanceSettingsService.ShowHomeButton;
@@ -94,6 +96,7 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
9496

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

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

99102
public bool HasAdditionalAction =>
@@ -187,15 +190,19 @@ public sealed partial class NavigationToolbarViewModel : ObservableObject, IAddr
187190
public bool CanRefresh { get => _CanRefresh; set => SetProperty(ref _CanRefresh, value); }
188191

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

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

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

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

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

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

210218
private bool _IsSearchBoxVisible;
219+
[Obsolete("Superseded by Omnibar.")]
211220
public bool IsSearchBoxVisible
212221
{
213222
get => _IsSearchBoxVisible;
@@ -237,11 +246,7 @@ public string? PathText
237246
public string? OmnibarSearchModeText { get => _OmnibarSearchModeText; set => SetProperty(ref _OmnibarSearchModeText, value); }
238247

239248
private string _OmnibarCurrentSelectedModeName = OmnibarPathModeName;
240-
public string OmnibarCurrentSelectedModeName
241-
{
242-
get => _OmnibarCurrentSelectedModeName;
243-
set => SetProperty(ref _OmnibarCurrentSelectedModeName, value);
244-
}
249+
public string OmnibarCurrentSelectedModeName { get => _OmnibarCurrentSelectedModeName; set => SetProperty(ref _OmnibarCurrentSelectedModeName, value); }
245250

246251
private CurrentInstanceViewModel _InstanceViewModel;
247252
public CurrentInstanceViewModel InstanceViewModel
@@ -544,6 +549,7 @@ x.Item is ZipStorageFile ||
544549
deferral.Complete();
545550
}
546551

552+
[Obsolete("Superseded by Omnibar.")]
547553
public void PathItemSeparator_DataContextChanged(FrameworkElement sender, DataContextChangedEventArgs args)
548554
{
549555
var pathSeparatorIcon = sender as FontIcon;
@@ -557,35 +563,41 @@ public void PathItemSeparator_DataContextChanged(FrameworkElement sender, DataCo
557563
});
558564
}
559565

566+
[Obsolete("Superseded by Omnibar.")]
560567
public void PathboxItemFlyout_Opening(object sender, object e)
561568
{
562569
ToolbarFlyoutOpening?.Invoke(this, new ToolbarFlyoutOpeningEventArgs((MenuFlyout)sender));
563570
}
564571

572+
[Obsolete("Superseded by Omnibar.")]
565573
public void PathBoxItemFlyout_Closed(object sender, object e)
566574
{
567575
((MenuFlyout)sender).Items.Clear();
568576
}
569577

578+
[Obsolete("Superseded by Omnibar.")]
570579
public void CurrentPathSetTextBox_TextChanged(object sender, TextChangedEventArgs args)
571580
{
572581
if (sender is TextBox textBox)
573582
PathBoxQuerySubmitted?.Invoke(this, new ToolbarQuerySubmittedEventArgs() { QueryText = textBox.Text });
574583
}
575584

585+
[Obsolete("Superseded by Omnibar.")]
576586
public void VisiblePath_TextChanged(AutoSuggestBox sender, AutoSuggestBoxTextChangedEventArgs args)
577587
{
578588
if (args.Reason == AutoSuggestionBoxTextChangeReason.UserInput)
579589
AddressBarTextEntered?.Invoke(this, new AddressBarTextEnteredEventArgs() { AddressBarTextField = sender });
580590
}
581591

592+
[Obsolete("Superseded by Omnibar.")]
582593
public void VisiblePath_QuerySubmitted(AutoSuggestBox sender, AutoSuggestBoxQuerySubmittedEventArgs args)
583594
{
584595
PathBoxQuerySubmitted?.Invoke(this, new ToolbarQuerySubmittedEventArgs() { QueryText = args.QueryText });
585596

586597
(this as IAddressToolbarViewModel).IsEditModeEnabled = false;
587598
}
588599

600+
[Obsolete("Superseded by Omnibar.")]
589601
public void PathBoxItem_PointerPressed(object sender, PointerRoutedEventArgs e)
590602
{
591603
if (e.Pointer.PointerDeviceType != Microsoft.UI.Input.PointerDeviceType.Mouse)
@@ -714,6 +726,7 @@ await DialogDisplayHelper.ShowDialogAsync(Strings.InvalidItemDialogTitle.GetLoca
714726
PathControlDisplayText = ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory;
715727
}
716728

729+
[Obsolete("Superseded by Omnibar.")]
717730
public void PathBoxItem_PreviewKeyDown(object sender, KeyRoutedEventArgs e)
718731
{
719732
switch (e.Key)
@@ -799,6 +812,7 @@ public void UpdateAdditionalActions()
799812
OnPropertyChanged(nameof(HasAdditionalAction));
800813
}
801814

815+
[Obsolete("Superseded by Omnibar.")]
802816
private void CloseSearchBox(bool doFocus = false)
803817
{
804818
if (_SearchBox.WasQuerySubmitted)
@@ -823,11 +837,13 @@ private void CloseSearchBox(bool doFocus = false)
823837
}
824838
}
825839

840+
[Obsolete("Superseded by Omnibar.")]
826841
public void SearchRegion_GotFocus(object sender, RoutedEventArgs e)
827842
{
828843
SearchHasFocus = true;
829844
}
830845

846+
[Obsolete("Superseded by Omnibar.")]
831847
public void SearchRegion_LostFocus(object sender, RoutedEventArgs e)
832848
{
833849
var element = Microsoft.UI.Xaml.Input.FocusManager.GetFocusedElement();
@@ -838,6 +854,7 @@ public void SearchRegion_LostFocus(object sender, RoutedEventArgs e)
838854
CloseSearchBox();
839855
}
840856

857+
[Obsolete("Superseded by Omnibar.")]
841858
private void SearchRegion_Escaped(object? sender, ISearchBoxViewModel _SearchBox)
842859
=> CloseSearchBox(true);
843860

@@ -1146,7 +1163,7 @@ void AddNoResultsItem()
11461163
}
11471164
}
11481165

1149-
public void PopulateOmnibarSuggestionsForCommandPaletteMode()
1166+
public async Task PopulateOmnibarSuggestionsForCommandPaletteMode()
11501167
{
11511168
if (ContentPageContext.SelectedItems.Count == 1 && ContentPageContext.SelectedItem is not null && !ContentPageContext.SelectedItem.IsFolder)
11521169
{
@@ -1185,20 +1202,25 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode()
11851202
}
11861203
}
11871204

1188-
var suggestionItems = Commands
1189-
.Where(command => command.IsExecutable
1190-
&& command.IsAccessibleGlobally
1191-
&& (command.Description.Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)
1192-
|| command.Code.ToString().Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)))
1193-
.Select(command => new NavigationBarSuggestionItem
1194-
{
1195-
ThemedIconStyle = command.Glyph.ToThemedIconStyle(),
1196-
Glyph = command.Glyph.BaseGlyph,
1197-
Text = command.Description,
1198-
PrimaryDisplay = command.Description,
1199-
HotKeys = command.HotKeys,
1200-
SearchText = OmnibarCommandPaletteModeText,
1201-
});
1205+
IEnumerable<NavigationBarSuggestionItem> suggestionItems = null!;
1206+
1207+
await Task.Run(() =>
1208+
{
1209+
suggestionItems = Commands
1210+
.Where(command => command.IsExecutable
1211+
&& command.IsAccessibleGlobally
1212+
&& (command.Description.Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)
1213+
|| command.Code.ToString().Contains(OmnibarCommandPaletteModeText, StringComparison.OrdinalIgnoreCase)))
1214+
.Select(command => new NavigationBarSuggestionItem
1215+
{
1216+
ThemedIconStyle = command.Glyph.ToThemedIconStyle(),
1217+
Glyph = command.Glyph.BaseGlyph,
1218+
Text = command.Description,
1219+
PrimaryDisplay = command.Description,
1220+
HotKeys = command.HotKeys,
1221+
SearchText = OmnibarCommandPaletteModeText,
1222+
});
1223+
});
12021224

12031225
foreach (var item in suggestionItems)
12041226
{
@@ -1216,7 +1238,37 @@ public void PopulateOmnibarSuggestionsForCommandPaletteMode()
12161238
}
12171239
}
12181240

1219-
[Obsolete("Remove once Omnibar goes out of experimental.")]
1241+
public async Task PopulateOmnibarSuggestionsForSearchMode()
1242+
{
1243+
OmnibarSearchModeSuggestionItems.Clear();
1244+
1245+
if (ContentPageContext.ShellPage is null)
1246+
return;
1247+
1248+
ContentPageContext.ShellPage.ShellViewModel.FilesAndFoldersFilter = OmnibarSearchModeText;
1249+
1250+
// Refresh the browser to apply the search filter
1251+
await ContentPageContext.ShellPage.ShellViewModel.ApplyFilesAndFoldersChangesAsync();
1252+
1253+
if (!string.IsNullOrWhiteSpace(OmnibarSearchModeText))
1254+
{
1255+
var search = new FolderSearch()
1256+
{
1257+
Query = OmnibarSearchModeText,
1258+
Folder = ContentPageContext.ShellPage.ShellViewModel.WorkingDirectory,
1259+
MaxItemCount = 10,
1260+
};
1261+
1262+
foreach (var item in await search.SearchAsync())
1263+
OmnibarSearchModeSuggestionItems.Add(new SuggestionModel(item));
1264+
}
1265+
else
1266+
{
1267+
// NOTE: Add to the recent queries
1268+
}
1269+
}
1270+
1271+
[Obsolete("Superseded by Omnibar.")]
12201272
public async Task SetAddressBarSuggestionsAsync(AutoSuggestBox sender, IShellPage shellpage)
12211273
{
12221274
if (sender.Text is not null && shellpage.ShellViewModel is not null)

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

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

1010
namespace Files.App.ViewModels.UserControls
1111
{
12+
[Obsolete("Superseded by Omnibar.")]
1213
public sealed partial class SearchBoxViewModel : ObservableObject, ISearchBoxViewModel
1314
{
1415
private string query;

0 commit comments

Comments
 (0)