Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }