示例#1
0
        public void ColdStartFix()
        {
            // Fix Cold start for List view xaml island
            List <Result> list = new List <Result>();
            Result        r    = new Result
            {
                Title = "hello"
            };

            list.Add(r);
            Results.AddResults(list, "0");
            Results.Clear();
            MainWindowVisibility = System.Windows.Visibility.Collapsed;

            // Fix Cold start for plugins
            string s       = "m";
            var    query   = QueryBuilder.Build(s.Trim(), PluginManager.NonGlobalPlugins);
            var    plugins = PluginManager.ValidPluginsForQuery(query);

            foreach (PluginPair plugin in plugins)
            {
                if (!plugin.Metadata.Disabled && plugin.Metadata.Name != "Window Walker")
                {
                    var _ = PluginManager.QueryForPlugin(plugin, query);
                }
            }
            ;
        }
示例#2
0
        /// <summary>
        /// To avoid deadlock, this method should not called from main thread
        /// </summary>
        public void UpdateResultView(List <Result> list, PluginMetadata metadata, Query originQuery)
        {
            _queryHasReturn       = true;
            ProgressBarVisibility = Visibility.Hidden;

            foreach (var result in list)
            {
                if (_topMostRecord.IsTopMost(result))
                {
                    result.Score = int.MaxValue;
                }
                else
                {
                    result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
                }
            }

            if (originQuery.RawQuery == _lastQuery.RawQuery)
            {
                Results.AddResults(list, metadata.ID);
            }

            if (Results.Visbility != Visibility.Visible && list.Count > 0)
            {
                Results.Visbility = Visibility.Visible;
            }
        }
示例#3
0
        /// <summary>
        /// To avoid deadlock, this method should not called from main thread
        /// </summary>
        public void UpdateResultView(List <ResultsForUpdate> updates)
        {
            foreach (ResultsForUpdate update in updates)
            {
                Logger.WoxTrace($"{update.Metadata.Name}:{update.Query.RawQuery}");
                foreach (var result in update.Results)
                {
                    if (update.Token.IsCancellationRequested)
                    {
                        return;
                    }
                    if (_topMostRecord.IsTopMost(result))
                    {
                        result.Score = int.MaxValue;
                    }
                    else if (!update.Metadata.KeepResultRawScore)
                    {
                        result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
                    }
                    else
                    {
                        result.Score = result.Score;
                    }
                }
            }

            Results.AddResults(updates);

            if (Results.Visbility != Visibility.Visible && Results.Count > 0)
            {
                Results.Visbility = Visibility.Visible;
            }
        }
示例#4
0
        /// <summary>
        /// To avoid deadlock, this method should not called from main thread
        /// </summary>
        public void UpdateResultView(List <Result> list, PluginMetadata metadata, Query originQuery)
        {
            if (list == null)
            {
                throw new ArgumentNullException(nameof(list));
            }

            if (metadata == null)
            {
                throw new ArgumentNullException(nameof(metadata));
            }

            if (originQuery == null)
            {
                throw new ArgumentNullException(nameof(originQuery));
            }

            foreach (var result in list)
            {
                if (_topMostRecord.IsTopMost(result))
                {
                    result.Score = int.MaxValue;
                }
                else
                {
                    result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
                }
            }

            if (originQuery.RawQuery == _lastQuery.RawQuery)
            {
                Results.AddResults(list, metadata.ID);
            }
        }
示例#5
0
        public void ColdStartFix()
        {
            // Fix Cold start for List view xaml island
            List <Result> list = new List <Result>();
            Result        r    = new Result
            {
                Title = "hello",
            };

            list.Add(r);
            Results.AddResults(list, _updateToken);
            Results.Clear();
            MainWindowVisibility = System.Windows.Visibility.Collapsed;

            // Fix Cold start for plugins
            string s = "m";
            var    pluginQueryPairs = QueryBuilder.Build(ref s, PluginManager.NonGlobalPlugins);

            // To execute a query corresponding to each plugin
            foreach (KeyValuePair <PluginPair, Query> pluginQueryItem in pluginQueryPairs)
            {
                var plugin = pluginQueryItem.Key;
                var query  = pluginQueryItem.Value;

                if (!plugin.Metadata.Disabled && plugin.Metadata.Name != "Window Walker")
                {
                    _ = PluginManager.QueryForPlugin(plugin, query);
                }
            }
        }
示例#6
0
        /// <summary>
        /// To avoid deadlock, this method should not called from main thread
        /// </summary>
        public void UpdateResultView(List <Result> list, Query originQuery, CancellationToken ct)
        {
            if (list == null)
            {
                throw new ArgumentNullException(nameof(list));
            }

            if (originQuery == null)
            {
                throw new ArgumentNullException(nameof(originQuery));
            }

            foreach (var result in list)
            {
                if (_topMostRecord.IsTopMost(result))
                {
                    result.Score = int.MaxValue;
                }
                else
                {
                    result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
                }
            }

            if (originQuery.RawQuery == _currentQuery.RawQuery)
            {
                ct.ThrowIfCancellationRequested();
                Results.AddResults(list, ct);
            }
        }
示例#7
0
        /// <summary>
        /// To avoid deadlock, this method should not called from main thread
        /// </summary>
        public void UpdateResultView(List <Result> list, string originQuery, CancellationToken ct)
        {
            if (list == null)
            {
                throw new ArgumentNullException(nameof(list));
            }

            if (originQuery == null)
            {
                throw new ArgumentNullException(nameof(originQuery));
            }

            foreach (var result in list)
            {
                if (_topMostRecord.IsTopMost(result))
                {
                    result.Score = int.MaxValue;
                }
                else
                {
                    result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
                }
            }

            // Using CurrentCultureIgnoreCase since this is user facing
            if (originQuery.Equals(_currentQuery, StringComparison.CurrentCultureIgnoreCase))
            {
                ct.ThrowIfCancellationRequested();
                Results.AddResults(list, ct);
            }
        }
示例#8
0
        private void DisplayQueryHistory(HistoryItem history)
        {
            if (history != null)
            {
                var historyMetadata = QueryHistory.MetaData;

                QueryText = history.Query;
                OnTextBoxSelected();

                var executeQueryHistoryTitle = InternationalizationManager.Instance.GetTranslation("executeQuery");
                var lastExecuteTime          = InternationalizationManager.Instance.GetTranslation("lastExecuteTime");
                Results.RemoveResultsExcept(historyMetadata);
                var result = new Result
                {
                    Title           = string.Format(executeQueryHistoryTitle, history.Query),
                    SubTitle        = string.Format(lastExecuteTime, history.ExecutedDateTime),
                    IcoPath         = "Images\\history.png",
                    PluginDirectory = Infrastructure.Constant.ProgramDirectory,
                    Action          = _ =>
                    {
                        QueryText = history.Query;
                        OnTextBoxSelected();
                        return(false);
                    }
                };
                Task.Run(() =>
                {
                    Results.AddResults(new List <Result> {
                        result
                    }, historyMetadata.ID);
                }, _updateToken);
            }
        }
示例#9
0
        /// <summary>
        /// To avoid deadlock, this method should not called from main thread
        /// </summary>
        public void UpdateResultView(List <Result> list, PluginMetadata metadata, Query originQuery, CancellationToken token)
        {
            foreach (var result in list)
            {
                if (token.IsCancellationRequested)
                {
                    return;
                }
                if (_topMostRecord.IsTopMost(result))
                {
                    result.Score = int.MaxValue;
                }
                else if (!metadata.KeepResultRawScore)
                {
                    result.Score += _userSelectedRecord.GetSelectedCount(result) * 5;
                }
            }

            if (token.IsCancellationRequested)
            {
                return;
            }
            if (originQuery.RawQuery == _lastQuery.RawQuery)
            {
                Results.AddResults(list, metadata.ID, token);
            }

            if (Results.Visbility != Visibility.Visible && list.Count > 0)
            {
                Results.Visbility = Visibility.Visible;
            }
        }
示例#10
0
 private void UpdateResultViewInternal(List <Result> list, PluginMetadata metadata)
 {
     Results.AddResults(list, metadata.ID);
 }
示例#11
0
 private void UpdateResultViewInternal(List <Result> list, PluginMetadata metadata)
 {
     Stopwatch.Normal($"UI update cost for {metadata.Name}",
                      () => { Results.AddResults(list, metadata.ID); });
 }