diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs index 92b7c95a0bd..60208759ed0 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs @@ -46,7 +46,7 @@ public Task InitAsync(PluginInitContext context) contextMenu = new ContextMenu(Context, Settings, viewModel); searchManager = new SearchManager(Settings, Context); - ResultManager.Init(Context); + ResultManager.Init(Context, Settings); return Task.CompletedTask; } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs index f756f8a0a7e..d0f78e14db8 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/ResultManager.cs @@ -10,10 +10,12 @@ namespace Flow.Launcher.Plugin.Explorer.Search public static class ResultManager { private static PluginInitContext Context; + private static Settings Settings { get; set; } - public static void Init(PluginInitContext context) + public static void Init(PluginInitContext context, Settings settings) { Context = context; + Settings = settings; } internal static Result CreateFolderResult(string title, string subtitle, string path, Query query, int score = 0, bool showIndexState = false, bool windowsIndexed = false) @@ -26,7 +28,7 @@ internal static Result CreateFolderResult(string title, string subtitle, string TitleHighlightData = StringMatcher.FuzzySearch(query.Search, title).MatchData, Action = c => { - if (c.SpecialKeyState.CtrlPressed) + if (c.SpecialKeyState.CtrlPressed || (!Settings.PathSearchKeywordEnabled && !Settings.SearchActionKeywordEnabled)) { try { @@ -39,17 +41,25 @@ internal static Result CreateFolderResult(string title, string subtitle, string return false; } } + // one of it is enabled + var keyword = Settings.SearchActionKeywordEnabled ? Settings.SearchActionKeyword : Settings.PathSearchActionKeyword; + + keyword = keyword == Query.GlobalPluginWildcardSign ? string.Empty : keyword + " "; string changeTo = path.EndsWith(Constants.DirectorySeperator) ? path : path + Constants.DirectorySeperator; - Context.API.ChangeQuery(string.IsNullOrEmpty(query.ActionKeyword) ? - changeTo : - query.ActionKeyword + " " + changeTo); + Context.API.ChangeQuery($"{keyword}{changeTo}"); return false; }, Score = score, TitleToolTip = Constants.ToolTipOpenDirectory, SubTitleToolTip = Constants.ToolTipOpenDirectory, - ContextData = new SearchResult { Type = ResultType.Folder, FullPath = path, ShowIndexState = showIndexState, WindowsIndexed = windowsIndexed } + ContextData = new SearchResult + { + Type = ResultType.Folder, + FullPath = path, + ShowIndexState = showIndexState, + WindowsIndexed = windowsIndexed + } }; } @@ -57,7 +67,10 @@ internal static Result CreateOpenCurrentFolderResult(string path, bool windowsIn { var retrievedDirectoryPath = FilesFolders.ReturnPreviousDirectoryIfIncompleteString(path); - var folderName = retrievedDirectoryPath.TrimEnd(Constants.DirectorySeperator).Split(new[] { Path.DirectorySeparatorChar }, StringSplitOptions.None).Last(); + var folderName = retrievedDirectoryPath.TrimEnd(Constants.DirectorySeperator).Split(new[] + { + Path.DirectorySeparatorChar + }, StringSplitOptions.None).Last(); if (retrievedDirectoryPath.EndsWith(":\\")) { @@ -81,7 +94,7 @@ internal static Result CreateOpenCurrentFolderResult(string path, bool windowsIn { Title = title, SubTitle = $"Use > to search within {subtitleFolderName}, " + - $"* to search for file extensions or >* to combine both searches.", + $"* to search for file extensions or >* to combine both searches.", IcoPath = retrievedDirectoryPath, Score = 500, Action = c => @@ -91,7 +104,13 @@ internal static Result CreateOpenCurrentFolderResult(string path, bool windowsIn }, TitleToolTip = retrievedDirectoryPath, SubTitleToolTip = retrievedDirectoryPath, - ContextData = new SearchResult { Type = ResultType.Folder, FullPath = retrievedDirectoryPath, ShowIndexState = true, WindowsIndexed = windowsIndexed } + ContextData = new SearchResult + { + Type = ResultType.Folder, + FullPath = retrievedDirectoryPath, + ShowIndexState = true, + WindowsIndexed = windowsIndexed + } }; } @@ -126,7 +145,13 @@ internal static Result CreateFileResult(string filePath, Query query, int score }, TitleToolTip = Constants.ToolTipOpenContainingFolder, SubTitleToolTip = Constants.ToolTipOpenContainingFolder, - ContextData = new SearchResult { Type = ResultType.File, FullPath = filePath, ShowIndexState = showIndexState, WindowsIndexed = windowsIndexed } + ContextData = new SearchResult + { + Type = ResultType.File, + FullPath = filePath, + ShowIndexState = showIndexState, + WindowsIndexed = windowsIndexed + } }; return result; } @@ -148,4 +173,4 @@ public enum ResultType Folder, File } -} +} \ No newline at end of file diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs index 6f3996b0dac..2aa389f8950 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/SearchManager.cs @@ -71,13 +71,13 @@ private bool ActionKeywordMatch(Query query, Settings.ActionKeyword allowedActio return allowedActionKeyword switch { - Settings.ActionKeyword.SearchActionKeyword => settings.EnableSearchActionKeyword && + Settings.ActionKeyword.SearchActionKeyword => settings.SearchActionKeywordEnabled && keyword == settings.SearchActionKeyword, - Settings.ActionKeyword.PathSearchActionKeyword => settings.EnabledPathSearchKeyword && + Settings.ActionKeyword.PathSearchActionKeyword => settings.PathSearchKeywordEnabled && keyword == settings.PathSearchActionKeyword, Settings.ActionKeyword.FileContentSearchActionKeyword => keyword == settings.FileContentSearchActionKeyword, - Settings.ActionKeyword.IndexSearchActionKeyword => settings.EnabledIndexOnlySearchKeyword && + Settings.ActionKeyword.IndexSearchActionKeyword => settings.IndexOnlySearchKeywordEnabled && keyword == settings.IndexSearchActionKeyword }; } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs index bd6fe7e20de..13f938dea1c 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Settings.cs @@ -21,17 +21,17 @@ public class Settings public List IndexSearchExcludedSubdirectoryPaths { get; set; } = new List(); public string SearchActionKeyword { get; set; } = Query.GlobalPluginWildcardSign; - public bool EnableSearchActionKeyword { get; set; } = true; + public bool SearchActionKeywordEnabled { get; set; } = true; public string FileContentSearchActionKeyword { get; set; } = Constants.DefaultContentSearchActionKeyword; public string PathSearchActionKeyword { get; set; } = Query.GlobalPluginWildcardSign; - public bool EnabledPathSearchKeyword { get; set; } + public bool PathSearchKeywordEnabled { get; set; } public string IndexSearchActionKeyword { get; set; } = Query.GlobalPluginWildcardSign; - public bool EnabledIndexOnlySearchKeyword { get; set; } + public bool IndexOnlySearchKeywordEnabled { get; set; } internal enum ActionKeyword { @@ -58,19 +58,19 @@ internal enum ActionKeyword _ => throw new ArgumentOutOfRangeException(nameof(actionKeyword), actionKeyword, "Unexpected property") }; - internal bool? GetActionKeywordEnable(ActionKeyword actionKeyword) => actionKeyword switch + internal bool? GetActionKeywordEnabled(ActionKeyword actionKeyword) => actionKeyword switch { - ActionKeyword.SearchActionKeyword => EnableSearchActionKeyword, - ActionKeyword.PathSearchActionKeyword => EnabledPathSearchKeyword, - ActionKeyword.IndexSearchActionKeyword => EnabledIndexOnlySearchKeyword, + ActionKeyword.SearchActionKeyword => SearchActionKeywordEnabled, + ActionKeyword.PathSearchActionKeyword => PathSearchKeywordEnabled, + ActionKeyword.IndexSearchActionKeyword => IndexOnlySearchKeywordEnabled, _ => null }; - internal void SetActionKeywordEnable(ActionKeyword actionKeyword, bool enable) => _ = actionKeyword switch + internal void SetActionKeywordEnabled(ActionKeyword actionKeyword, bool enable) => _ = actionKeyword switch { - ActionKeyword.SearchActionKeyword => EnableSearchActionKeyword = enable, - ActionKeyword.PathSearchActionKeyword => EnabledPathSearchKeyword = enable, - ActionKeyword.IndexSearchActionKeyword => EnabledIndexOnlySearchKeyword = enable, + ActionKeyword.SearchActionKeyword => SearchActionKeywordEnabled = enable, + ActionKeyword.PathSearchActionKeyword => PathSearchKeywordEnabled = enable, + ActionKeyword.IndexSearchActionKeyword => IndexOnlySearchKeywordEnabled = enable, _ => throw new ArgumentOutOfRangeException(nameof(actionKeyword), actionKeyword, "Unexpected property") }; } diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs index ffd5b618ad6..0c3799cee03 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Views/ExplorerSettings.xaml.cs @@ -337,8 +337,8 @@ public string Keyword public bool? Enabled { - get => _settings.GetActionKeywordEnable(KeywordProperty); - set => _settings.SetActionKeywordEnable(KeywordProperty, + get => _settings.GetActionKeywordEnabled(KeywordProperty); + set => _settings.SetActionKeywordEnabled(KeywordProperty, value ?? throw new ArgumentException("Unexpected null value")); } }