From 29d3f47d47efa3d5d0026f9a09be959146b2a995 Mon Sep 17 00:00:00 2001 From: Davide Giacometti Date: Thu, 12 Aug 2021 14:53:12 +0200 Subject: [PATCH] plugin manager search (#12560) --- .../ViewModels/PowerLauncherViewModel.cs | 40 +++++++++++++++++++ .../Strings/en-us/Resources.resw | 3 ++ .../Views/PowerLauncherPage.xaml | 21 ++++++++-- 3 files changed, 60 insertions(+), 4 deletions(-) diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/PowerLauncherViewModel.cs b/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/PowerLauncherViewModel.cs index aec904a672..4497cf0316 100644 --- a/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/PowerLauncherViewModel.cs +++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI.Library/ViewModels/PowerLauncherViewModel.cs @@ -9,9 +9,11 @@ using System.Globalization; using System.Linq; using System.Runtime.CompilerServices; using System.Text.Json; +using System.Windows.Input; using ManagedCommon; using Microsoft.PowerToys.Settings.UI.Library.Helpers; using Microsoft.PowerToys.Settings.UI.Library.Interfaces; +using Microsoft.PowerToys.Settings.UI.Library.ViewModels.Commands; namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels { @@ -25,6 +27,8 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels private bool _isPrimaryMonitorPositionRadioButtonChecked; private bool _isFocusPositionRadioButtonChecked; + private string _searchText; + private GeneralSettings GeneralSettingsConfig { get; set; } private PowerLauncherSettings settings; @@ -99,6 +103,8 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels { plugin.PropertyChanged += OnPluginInfoChange; } + + SearchPluginsCommand = new RelayCommand(SearchPlugins); } private void OnPluginInfoChange(object sender, PropertyChangedEventArgs e) @@ -304,6 +310,25 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels } } + public string SearchText + { + get + { + return _searchText; + } + + set + { + if (_searchText != value) + { + _searchText = value; + OnPropertyChanged(nameof(SearchText)); + } + } + } + + public ICommand SearchPluginsCommand { get; } + public HotkeySettings OpenPowerLauncher { get @@ -452,5 +477,20 @@ namespace Microsoft.PowerToys.Settings.UI.Library.ViewModels { return this.settings.Equals(settings); } + + public void SearchPlugins() + { + if (!string.IsNullOrWhiteSpace(SearchText)) + { + var plugins = settings.Plugins.Where(p => p.Name.StartsWith(SearchText, StringComparison.OrdinalIgnoreCase) || p.Name.IndexOf($" {SearchText}", StringComparison.OrdinalIgnoreCase) > 0); + _plugins = new ObservableCollection(plugins.Select(x => new PowerLauncherPluginViewModel(x, isDark))); + } + else + { + _plugins = null; + } + + OnPropertyChanged(nameof(Plugins)); + } } } diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw index d34379b9d6..beaba96b91 100644 --- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw +++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Strings/en-us/Resources.resw @@ -1394,4 +1394,7 @@ From there, simply click on a Markdown file or SVG icon in the File Explorer and Show format in editor + + Search this list + \ No newline at end of file diff --git a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Views/PowerLauncherPage.xaml b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Views/PowerLauncherPage.xaml index 8740554b5d..090832fb6d 100644 --- a/src/settings-ui/Microsoft.PowerToys.Settings.UI/Views/PowerLauncherPage.xaml +++ b/src/settings-ui/Microsoft.PowerToys.Settings.UI/Views/PowerLauncherPage.xaml @@ -5,6 +5,8 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:muxc="using:Microsoft.UI.Xaml.Controls" + xmlns:ic="using:Microsoft.Xaml.Interactions.Core" + xmlns:i="using:Microsoft.Xaml.Interactivity" x:Class="Microsoft.PowerToys.Settings.UI.Views.PowerLauncherPage" xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls" xmlns:converters="using:Microsoft.Toolkit.Uwp.UI.Converters" @@ -24,7 +26,7 @@ + IsOn="{x:Bind Mode=TwoWay, Path=ViewModel.EnablePowerLauncher}" /> - + + + + + + + + + - -