Add search delay speed

This commit is contained in:
Jack251970 2025-03-30 21:39:29 +08:00
parent 750cba2dde
commit 0dba9bcc08
5 changed files with 53 additions and 16 deletions

View file

@ -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<int> 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
}
}

View file

@ -92,10 +92,6 @@
<system:String x:Key="hideOnStartupToolTip">Flow Launcher search window is hidden in the tray after starting up.</system:String>
<system:String x:Key="hideNotifyIcon">Hide tray icon</system:String>
<system:String x:Key="hideNotifyIconToolTip">When the icon is hidden from the tray, the Settings menu can be opened by right-clicking on the search window.</system:String>
<system:String x:Key="searchDelay">Search Delay</system:String>
<system:String x:Key="searchDelayToolTip">Delay for a while to search when typing. This reduces interface jumpiness and result load.</system:String>
<system:String x:Key="searchDelayTime">Search Delay Time</system:String>
<system:String x:Key="searchDelayTimeToolTip">Delay time after which search results appear when typing is stopped. Default is 120ms.</system:String>
<system:String x:Key="querySearchPrecision">Query Search Precision</system:String>
<system:String x:Key="querySearchPrecisionToolTip">Changes minimum match score required for results.</system:String>
<system:String x:Key="SearchPrecisionNone">None</system:String>
@ -106,6 +102,15 @@
<system:String x:Key="AlwaysPreview">Always Preview</system:String>
<system:String x:Key="AlwaysPreviewToolTip">Always open preview panel when Flow activates. Press {0} to toggle preview.</system:String>
<system:String x:Key="shadowEffectNotAllowed">Shadow effect is not allowed while current theme has blur effect enabled</system:String>
<system:String x:Key="searchDelay">Search Delay</system:String>
<system:String x:Key="searchDelayToolTip">Delay for a while to search when typing. This reduces interface jumpiness and result load.</system:String>
<system:String x:Key="searchDelayTime">Search Delay Speed</system:String>
<system:String x:Key="searchDelayTimeToolTip">Delay time speed after which search results appear when typing is stopped. Default is medium.</system:String>
<system:String x:Key="SearchDelaySpeedSlow">Slow</system:String>
<system:String x:Key="SearchDelaySpeedModeratelySlow">Moderately slow</system:String>
<system:String x:Key="SearchDelaySpeedMedium">Medium</system:String>
<system:String x:Key="SearchDelaySpeedModeratelyFast">Moderately fast</system:String>
<system:String x:Key="SearchDelaySpeedFast">Fast</system:String>
<!-- Setting Plugin -->
<system:String x:Key="searchplugin">Search Plugin</system:String>

View file

@ -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);

View file

@ -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<SearchWindowAligns> { }
public class SearchPrecisionData : DropdownDataGeneric<SearchPrecisionScore> { }
public class LastQueryModeData : DropdownDataGeneric<LastQueryMode> { }
public class SearchDelaySpeedData : DropdownDataGeneric<SearchDelaySpeeds> { }
public bool StartFlowLauncherOnSystemStartup
{
@ -139,17 +141,31 @@ public partial class SettingsPaneGeneralViewModel : BaseModel
}
}
public IEnumerable<int> SearchDelayRange => Settings.SearchDelayRange;
public List<LastQueryModeData> LastQueryModes { get; } =
DropdownDataGeneric<LastQueryMode>.GetValues<LastQueryModeData>("LastQuery");
public List<SearchDelaySpeedData> SearchDelaySpeeds { get; } =
DropdownDataGeneric<SearchDelaySpeeds>.GetValues<SearchDelaySpeedData>("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<SearchWindowScreens>.UpdateLabels(SearchWindowScreens);
DropdownDataGeneric<SearchWindowAligns>.UpdateLabels(SearchWindowAligns);
DropdownDataGeneric<SearchPrecisionScore>.UpdateLabels(SearchPrecisionScores);
DropdownDataGeneric<LastQueryMode>.UpdateLabels(LastQueryModes);
DropdownDataGeneric<SearchDelaySpeeds>.UpdateLabels(SearchDelaySpeeds);
}
public string Language

View file

@ -188,9 +188,11 @@
Icon="&#xE916;"
Sub="{DynamicResource searchDelayTimeToolTip}">
<ComboBox
Width="100"
ItemsSource="{Binding SearchDelayRange}"
SelectedItem="{Binding Settings.SearchDelay}" />
MaxWidth="200"
DisplayMemberPath="Display"
ItemsSource="{Binding SearchDelaySpeeds}"
SelectedItem="{Binding SearchDelaySpeed}"
SelectedValuePath="Value" />
</cc:Card>
</cc:CardGroup>