diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs index 206911b6c..f4f63a3a6 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Main.cs @@ -1,14 +1,16 @@ using Flow.Launcher.Infrastructure.Storage; +using Flow.Launcher.Plugin.Explorer.Search.WindowsIndex; using Flow.Launcher.Plugin.Explorer.ViewModels; using Flow.Launcher.Plugin.Explorer.Views; using System; using System.Collections.Generic; using System.Text; +using System.Text.RegularExpressions; using System.Windows.Controls; namespace Flow.Launcher.Plugin.Explorer { - class Main : ISettingProvider, IPlugin, ISavable, IPluginI18n, IContextMenu + class Main : ISettingProvider, IPlugin, ISavable, IContextMenu //, IPluginI18n <=== do later { private PluginInitContext Context { get; set; } @@ -16,21 +18,14 @@ namespace Flow.Launcher.Plugin.Explorer private SettingsViewModel _viewModel; + // Reserved keywords in oleDB + private string ReservedStringPattern = @"^[\/\\\$\%]+$"; + public Control CreateSettingPanel() { return new ExplorerSettings(); } - public string GetTranslatedPluginDescription() - { - throw new NotImplementedException(); - } - - public string GetTranslatedPluginTitle() - { - throw new NotImplementedException(); - } - public void Init(PluginInitContext context) { Context = context; @@ -41,12 +36,28 @@ namespace Flow.Launcher.Plugin.Explorer public List LoadContextMenus(Result selectedResult) { - throw new NotImplementedException(); + return new List(); } public List Query(Query query) { - return new List(); + var results = new List(); + + if (string.IsNullOrEmpty(query.Search)) + return results; + + var regexMatch = Regex.Match(query.Search, ReservedStringPattern); + + if (regexMatch.Success) + return results; + + var queryConstructor = new QueryConstructor(_settings); + + var searcher = new Searcher(Context); + + return searcher.WindowsIndexSearch(query.Search, + queryConstructor.CreateQueryHelper().ConnectionString, + queryConstructor.QueryForAllFilesAndFolders); } public void Save()