From 0dba9bcc0855934075312dbae2c723a4633b09f0 Mon Sep 17 00:00:00 2001 From: Jack251970 <1160210343@qq.com> Date: Sun, 30 Mar 2025 21:39:29 +0800 Subject: [PATCH] Add search delay speed --- .../UserSettings/Settings.cs | 26 ++++++++++++++----- Flow.Launcher/Languages/en.xaml | 13 +++++++--- Flow.Launcher/MainWindow.xaml.cs | 2 +- .../SettingsPaneGeneralViewModel.cs | 20 ++++++++++++-- .../Views/SettingsPaneGeneral.xaml | 8 +++--- 5 files changed, 53 insertions(+), 16 deletions(-) diff --git a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs index ce34dd576..e3f14480f 100644 --- a/Flow.Launcher.Infrastructure/UserSettings/Settings.cs +++ b/Flow.Launcher.Infrastructure/UserSettings/Settings.cs @@ -331,21 +331,26 @@ namespace Flow.Launcher.Infrastructure.UserSettings } } - int searchDelay { get; set; } = 120; - public int SearchDelay + SearchDelaySpeeds searchDelaySpeed { get; set; } = SearchDelaySpeeds.Medium; + public SearchDelaySpeeds SearchDelaySpeed { - get => searchDelay; + get => searchDelaySpeed; set { - searchDelay = value; + searchDelaySpeed = value; OnPropertyChanged(); } } [JsonIgnore] - public List SearchDelayRange { get; } = new() + public int SearchDelay => SearchDelaySpeed switch { - 30, 60, 90, 120, 150, 180, 210, 240, 270, 300 + SearchDelaySpeeds.Slow => 250, + SearchDelaySpeeds.ModeratelySlow => 200, + SearchDelaySpeeds.Medium => 150, + SearchDelaySpeeds.ModeratelyFast => 100, + SearchDelaySpeeds.Fast => 50, + _ => 150 }; [JsonIgnore] @@ -516,4 +521,13 @@ namespace Flow.Launcher.Infrastructure.UserSettings Mica, MicaAlt } + + public enum SearchDelaySpeeds + { + Slow, + ModeratelySlow, + Medium, + ModeratelyFast, + Fast + } } diff --git a/Flow.Launcher/Languages/en.xaml b/Flow.Launcher/Languages/en.xaml index 00665d9e3..c1c894995 100644 --- a/Flow.Launcher/Languages/en.xaml +++ b/Flow.Launcher/Languages/en.xaml @@ -92,10 +92,6 @@ Flow Launcher search window is hidden in the tray after starting up. Hide tray icon When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window. - Search Delay - Delay for a while to search when typing. This reduces interface jumpiness and result load. - Search Delay Time - Delay time after which search results appear when typing is stopped. Default is 120ms. Query Search Precision Changes minimum match score required for results. None @@ -106,6 +102,15 @@ Always Preview Always open preview panel when Flow activates. Press {0} to toggle preview. Shadow effect is not allowed while current theme has blur effect enabled + Search Delay + Delay for a while to search when typing. This reduces interface jumpiness and result load. + Search Delay Speed + Delay time speed after which search results appear when typing is stopped. Default is medium. + Slow + Moderately slow + Medium + Moderately fast + Fast Search Plugin diff --git a/Flow.Launcher/MainWindow.xaml.cs b/Flow.Launcher/MainWindow.xaml.cs index da1d86519..b1ee1726c 100644 --- a/Flow.Launcher/MainWindow.xaml.cs +++ b/Flow.Launcher/MainWindow.xaml.cs @@ -270,7 +270,7 @@ namespace Flow.Launcher case nameof(Settings.SearchQueryResultsWithDelay): SetupSearchTextBoxReactiveness(_settings.SearchQueryResultsWithDelay, _settings.SearchDelay); break; - case nameof(Settings.SearchDelay): + case nameof(Settings.SearchDelaySpeed): if (_settings.SearchQueryResultsWithDelay) { SetupSearchTextBoxReactiveness(_settings.SearchQueryResultsWithDelay, _settings.SearchDelay); diff --git a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs index d8fe8bb50..fba1809ed 100644 --- a/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs +++ b/Flow.Launcher/SettingPages/ViewModels/SettingsPaneGeneralViewModel.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Windows.Forms; using CommunityToolkit.Mvvm.Input; using Flow.Launcher.Core; @@ -30,6 +31,7 @@ public partial class SettingsPaneGeneralViewModel : BaseModel public class SearchWindowAlignData : DropdownDataGeneric { } public class SearchPrecisionData : DropdownDataGeneric { } public class LastQueryModeData : DropdownDataGeneric { } + public class SearchDelaySpeedData : DropdownDataGeneric { } public bool StartFlowLauncherOnSystemStartup { @@ -139,17 +141,31 @@ public partial class SettingsPaneGeneralViewModel : BaseModel } } - public IEnumerable SearchDelayRange => Settings.SearchDelayRange; - public List LastQueryModes { get; } = DropdownDataGeneric.GetValues("LastQuery"); + public List SearchDelaySpeeds { get; } = + DropdownDataGeneric.GetValues("SearchDelaySpeed"); + + public SearchDelaySpeedData SearchDelaySpeed + { + get => SearchDelaySpeeds.First(x => x.Value == Settings.SearchDelaySpeed); + set + { + if (Settings.SearchDelaySpeed != value.Value) + { + Settings.SearchDelaySpeed = value.Value; + } + } + } + private void UpdateEnumDropdownLocalizations() { DropdownDataGeneric.UpdateLabels(SearchWindowScreens); DropdownDataGeneric.UpdateLabels(SearchWindowAligns); DropdownDataGeneric.UpdateLabels(SearchPrecisionScores); DropdownDataGeneric.UpdateLabels(LastQueryModes); + DropdownDataGeneric.UpdateLabels(SearchDelaySpeeds); } public string Language diff --git a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml index bde74c653..c0a3118ea 100644 --- a/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml +++ b/Flow.Launcher/SettingPages/Views/SettingsPaneGeneral.xaml @@ -188,9 +188,11 @@ Icon="" Sub="{DynamicResource searchDelayTimeToolTip}"> + MaxWidth="200" + DisplayMemberPath="Display" + ItemsSource="{Binding SearchDelaySpeeds}" + SelectedItem="{Binding SearchDelaySpeed}" + SelectedValuePath="Value" />