using Flow.Launcher.Plugin.Explorer.Search; using Flow.Launcher.Plugin.Explorer.Search.QuickAccessLinks; using Microsoft.AspNetCore.DataProtection.AuthenticatedEncryption; using System; using System.Collections.Generic; using System.IO; namespace Flow.Launcher.Plugin.Explorer { public class Settings { public int MaxResult { get; set; } = 100; public List QuickAccessLinks { get; set; } = new List(); // as at v1.7.0 this is to maintain backwards compatibility, need to be removed afterwards. public List QuickFolderAccessLinks { get; set; } = new List(); public bool UseWindowsIndexForDirectorySearch { get; set; } = true; public List IndexSearchExcludedSubdirectoryPaths { get; set; } = new List(); public string SearchActionKeyword { get; set; } = Query.GlobalPluginWildcardSign; public bool EnableSearchActionKeyword { get; set; } = true; public string FileContentSearchActionKeyword { get; set; } = Constants.DefaultContentSearchActionKeyword; public string PathSearchActionKeyword { get; set; } = Query.GlobalPluginWildcardSign; public bool EnabledPathSearchKeyword { get; set; } public string IndexSearchActionKeyword { get; set; } = Query.GlobalPluginWildcardSign; public bool EnabledIndexOnlySearchKeyword { get; set; } internal enum ActionKeyword { SearchActionKeyword, PathSearchActionKeyword, FileContentSearchActionKeyword, IndexSearchActionKeyword } internal string GetActionKeyword(ActionKeyword actionKeyword) => actionKeyword switch { ActionKeyword.SearchActionKeyword => SearchActionKeyword, ActionKeyword.PathSearchActionKeyword => PathSearchActionKeyword, ActionKeyword.FileContentSearchActionKeyword => FileContentSearchActionKeyword, ActionKeyword.IndexSearchActionKeyword => IndexSearchActionKeyword }; internal void SetActionKeyword(ActionKeyword actionKeyword, string keyword) => _ = actionKeyword switch { ActionKeyword.SearchActionKeyword => SearchActionKeyword = keyword, ActionKeyword.PathSearchActionKeyword => PathSearchActionKeyword = keyword, ActionKeyword.FileContentSearchActionKeyword => FileContentSearchActionKeyword = keyword, ActionKeyword.IndexSearchActionKeyword => IndexSearchActionKeyword = keyword, _ => throw new ArgumentOutOfRangeException(nameof(actionKeyword), actionKeyword, "Unexpected property") }; internal bool? GetActionKeywordEnable(ActionKeyword actionKeyword) => actionKeyword switch { ActionKeyword.SearchActionKeyword => EnableSearchActionKeyword, ActionKeyword.PathSearchActionKeyword => EnabledPathSearchKeyword, ActionKeyword.IndexSearchActionKeyword => EnabledIndexOnlySearchKeyword, _ => null }; internal void SetActionKeywordEnable(ActionKeyword actionKeyword, bool enable) => _ = actionKeyword switch { ActionKeyword.SearchActionKeyword => EnableSearchActionKeyword = enable, ActionKeyword.PathSearchActionKeyword => EnabledPathSearchKeyword = enable, ActionKeyword.IndexSearchActionKeyword => EnabledIndexOnlySearchKeyword = enable, _ => throw new ArgumentOutOfRangeException(nameof(actionKeyword), actionKeyword, "Unexpected property") }; } }