protected override List <Result> QueryInternal(Query query) { List <Result> results = new List <Result>(); if (string.IsNullOrEmpty(query.ActionName)) { return(results); } WebSearch webSearch = UserSettingStorage.Instance.WebSearches.FirstOrDefault(o => o.ActionWord == query.ActionName && o.Enabled); if (webSearch != null) { string keyword = query.ActionParameters.Count > 0 ? query.GetAllRemainingParameter() : ""; string title = keyword; string subtitle = "Search " + webSearch.Title; if (string.IsNullOrEmpty(keyword)) { title = subtitle; subtitle = null; } context.PushResults(query, new List <Result>() { new Result() { Title = title, SubTitle = subtitle, Score = 6, IcoPath = webSearch.IconPath, Action = (c) => { Process.Start(webSearch.Url.Replace("{q}", keyword)); return(true); } } }); if (!string.IsNullOrEmpty(keyword)) { ISuggestionSource sugg = new Google(); var result = sugg.GetSuggestions(keyword); if (result != null) { context.PushResults(query, result.Select(o => new Result() { Title = o, SubTitle = subtitle, Score = 5, IcoPath = webSearch.IconPath, Action = (c) => { Process.Start(webSearch.Url.Replace("{q}", o)); return(true); } }).ToList()); } } } return(results); }
protected override List <Result> QueryInternal(Query query) { List <Result> results = new List <Result>(); List <Result> pushedResults = new List <Result>(); if (query.RawQuery == ">") { IEnumerable <Result> history = CMDStorage.Instance.CMDHistory.OrderByDescending(o => o.Value) .Select(m => new Result { Title = m.Key, SubTitle = "this command has been executed " + m.Value + " times", IcoPath = "Images/cmd.png", Action = (c) => { ExecuteCmd(m.Key); return(true); } }).Take(5); results.AddRange(history); } if (query.RawQuery.StartsWith(">") && query.RawQuery.Length > 1) { string cmd = query.RawQuery.Substring(1); Result result = new Result { Title = cmd, Score = 5000, SubTitle = "execute command through command shell", IcoPath = "Images/cmd.png", Action = (c) => { ExecuteCmd(cmd); return(true); } }; try { if (File.Exists(cmd) || Directory.Exists(cmd)) { result.IcoPath = cmd; } } catch (Exception) { } context.PushResults(query, new List <Result>() { result }); pushedResults.Add(result); IEnumerable <Result> history = CMDStorage.Instance.CMDHistory.Where(o => o.Key.Contains(cmd)) .OrderByDescending(o => o.Value) .Select(m => { if (m.Key == cmd) { result.SubTitle = "this command has been executed " + m.Value + " times"; return(null); } var ret = new Result { Title = m.Key, SubTitle = "this command has been executed " + m.Value + " times", IcoPath = "Images/cmd.png", Action = (c) => { ExecuteCmd(m.Key); return(true); } }; try { if (File.Exists(m.Key) || Directory.Exists(m.Key)) { ret.IcoPath = m.Key; } } catch (Exception) { } return(ret); }).Where(o => o != null).Take(4); context.PushResults(query, history.ToList()); pushedResults.AddRange(history); try { string basedir = null; string dir = null; string excmd = Environment.ExpandEnvironmentVariables(cmd); if (Directory.Exists(excmd) && (cmd.EndsWith("/") || cmd.EndsWith(@"\"))) { basedir = excmd; dir = cmd; } else if (Directory.Exists(Path.GetDirectoryName(excmd))) { basedir = Path.GetDirectoryName(excmd); var dirn = Path.GetDirectoryName(cmd); dir = (dirn.EndsWith("/") || dirn.EndsWith(@"\")) ? dirn : cmd.Substring(0, dirn.Length + 1); } if (basedir != null) { List <string> autocomplete = Directory.GetFileSystemEntries(basedir).Select(o => dir + Path.GetFileName(o)).Where(o => o.StartsWith(cmd, StringComparison.OrdinalIgnoreCase) && !results.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase)) && !pushedResults.Any(p => o.Equals(p.Title, StringComparison.OrdinalIgnoreCase))).ToList(); autocomplete.Sort(); results.AddRange(autocomplete.ConvertAll(m => new Result() { Title = m, SubTitle = "", IcoPath = m, Action = (c) => { ExecuteCmd(m); return(true); } })); } } catch (Exception) { } } return(results); }