From be524cb6eac24d9437701815d4eff7fc49a2d76f Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Tue, 19 May 2020 00:11:37 +1000 Subject: [PATCH] Update Searcher class to handle result creation --- .../Search/WindowsIndex/Searcher.cs | 74 +++++++++++++++---- 1 file changed, 59 insertions(+), 15 deletions(-) diff --git a/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs index 3af30085d..d36948079 100644 --- a/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs +++ b/Plugins/Flow.Launcher.Plugin.Explorer/Search/WindowsIndex/Searcher.cs @@ -1,6 +1,9 @@ -using System; +using Flow.Launcher.Infrastructure.Logger; +using System; using System.Collections.Generic; +using System.ComponentModel; using System.Data.OleDb; +using System.Diagnostics; namespace Flow.Launcher.Plugin.Explorer.Search.WindowsIndex { @@ -11,44 +14,85 @@ namespace Flow.Launcher.Plugin.Explorer.Search.WindowsIndex public OleDbCommand command; public OleDbDataReader dataReaderResults; + + private PluginInitContext _context; private readonly object _lock = new object(); + public Searcher(PluginInitContext context) + { + _context = context; + } + internal List ExecuteWindowsIndexSearch(string query, string connectionString) { var results = new List(); - using (conn = new OleDbConnection(connectionString)) + try { - conn.Open(); - - using (command = new OleDbCommand(query, conn)) + using (conn = new OleDbConnection(connectionString)) { - // Results return as an OleDbDataReader. - using (dataReaderResults = command.ExecuteReader()) + conn.Open(); + + using (command = new OleDbCommand(query, conn)) { - if (dataReaderResults.HasRows) + // Results return as an OleDbDataReader. + using (dataReaderResults = command.ExecuteReader()) { - while (dataReaderResults.Read()) + if (dataReaderResults.HasRows) { - if (dataReaderResults.GetValue(0) != DBNull.Value && dataReaderResults.GetValue(1) != DBNull.Value) + while (dataReaderResults.Read()) { - var result = new Result + if (dataReaderResults.GetValue(0) != DBNull.Value && dataReaderResults.GetValue(1) != DBNull.Value) { - Title = dataReaderResults.GetString(0), - SubTitle = dataReaderResults.GetString(1) - }; - results.Add(result); + results.Add(CreateResult(dataReaderResults)); + } } } } } } } + catch (InvalidOperationException) + { + // Internal error from ExecuteReader(): Connection closed. + } + catch (Exception ex) + { + Log.Info(ex.ToString());//UPDATE THIS LOGGING + } return results; } + private Result CreateResult(OleDbDataReader dataReaderResults) + { + return new Result + { + Title = dataReaderResults.GetString(0), + SubTitle = dataReaderResults.GetString(1), + IcoPath = "Images\\Explorer.png",//<------CHANGE + Action = c => + { + try + { + Process.Start(new ProcessStartInfo + { + FileName = dataReaderResults.GetString(1), + UseShellExecute = true, + //WorkingDirectory = workingDir <----?? + }); + } + catch (Win32Exception) + { + _context.API.ShowMsg("Explorer plugin: ", "Unable to open the selected file", string.Empty); //<========= + } + + return true; + } + }; + } + internal List WindowsIndexSearch(string query, string connectionString, Func constructQuery) { lock (_lock)