public void OnResultCompleted(QueryResult result)
            {
                Console.WriteLine("Complete Result!");
                Console.WriteLine( result.Items.Count );
                foreach ( IQueryResultItem item in result.Items)
                {
                    switch(item.ResultType)
                    {
                        case QueryResultItemType.SearchEngineResult:
                            var searchEngineItem = item as SearchEngineResult;
                            if ( searchEngineItem != null && searchEngineItem.Results != null ) // TODO: Bug ASSERT(searchEngineItem != null)
                            {
                                Console.WriteLine( searchEngineItem.ToString() );
                            }
                            break;
                        case QueryResultItemType.DictionaryResult:
                            var dictItem = item as DictResult;
                            if ( dictItem != null && dictItem.SearchUrl != null ) // TODO: Bug ASSERT(searchEngineItem != null)
                            {
                                Console.WriteLine( dictItem.ToString() );
                            }
                            break;
                        case QueryResultItemType.SuggestionResult:
                            var suggestionItem = item as SuggestionResult;
                            if ( suggestionItem != null && suggestionItem.Results != null ) // TODO: Bug ASSERT(searchEngineItem != null)
                            {
                                Console.WriteLine( suggestionItem.ToString() );
                            }
                            break;
                        default:
                            break;

                    }
                }
            }
示例#2
0
            private bool FindDictcnResult( QueryResult queryResult, DictionaryType targetType, out DictResult dictResult )
            {
                bool hasFound = false;
                dictResult = null;
                if ( queryResult != null )
                {
                    if ( queryResult.DictResultItems != null )
                    {

                        foreach ( DictResult resultItem in queryResult.DictResultItems )
                        {
                            if ( resultItem != null && resultItem.DictionaryType == targetType )
                            {
                                dictResult = resultItem;
                                hasFound = true;
                                break;
                            }
                        }
                    }
                }
                return hasFound;
            }
        public static void Test()
        {
            QueryResultRecordManager manager = new QueryResultRecordManager("data", new TimeSpan(0, 1, 0));

            Pipeline.Pipeline pipeline = new Pipeline.Pipeline();
            pipeline.QueryResultSubscriberManager.AddSubscriber(manager);

            QueryResult result = new QueryResult(new InputQuery("Bill Gates"));
            SearchEngineResult resultItem = new SearchEngineResult();
            resultItem.SearchEngineType = SearchEngineType.Google;
            resultItem.SearchUrl = "http://www.google.com/query.jsp";
            SearchEngineResult.ResultItem item = new SearchEngineResult.ResultItem();
            item.Title = "ddd";
            item.Url = "http://www.gfw.com/";
            item.SimilarUrl = "http://www.g.com/ddd";
            item.CacheUrl = "http://www.g.com/cache";
            item.Description = "Who cares?";
            resultItem.Results.Add(item);

            SuggestionResult resultItem1 = new SuggestionResult();
            resultItem1.SuggestionType = SuggestionType.Google;
            resultItem1.SearchUrl = "json";
            SuggestionResult.ResultItem item1 = new SuggestionResult.ResultItem();
            item1.Index = "1";
            item1.Number = "2";
            item1.Suggestion = "haha";
            resultItem1.Results.Add( item1 );

            result.SearchEngineResultItems.Add(resultItem);
            result.SuggestionResultItems.Add(resultItem1);

            pipeline.OnQueryResultReady(result);

            Thread.Sleep(1000);

            List<QueryResult> resultList = manager.GetResultList(DateTime.Today, DateTime.Today);
            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }
            Console.WriteLine("----------------------------------------------");

            manager.RemoveAllResultList();

            resultList = manager.GetResultList(DateTime.Today, DateTime.Today);
            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }

            Console.WriteLine("----------------------------------------------");

            result = new QueryResult(new InputQuery("Bill Gates"));
            resultItem = new SearchEngineResult();
            resultItem.SearchEngineType = SearchEngineType.Google;
            resultItem.SearchUrl = "http://www.google.com/query.jsp";
            item = new SearchEngineResult.ResultItem();
            item.Title = "ddd";
            item.Url = "http://www.gfw.com/";
            item.SimilarUrl = "http://www.g.com/ddd";
            item.CacheUrl = "http://www.g.com/cache";
            item.Description = "Who cares?";
            resultItem.Results.Add(item);

            result.Items.Add(resultItem);

            pipeline.OnQueryResultReady(result);

            Thread.Sleep(1000);

            manager.RemoveResultListFromDate(DateTime.Today);
            resultList = manager.GetResultList(DateTime.Today - new TimeSpan(1, 0, 0, 0), DateTime.Today);
            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }

            Console.WriteLine("----------------------------------------------");

            manager.RemoveResultListFromDate(DateTime.Today + new TimeSpan(1, 0, 0, 0));
            resultList = manager.GetResultList(DateTime.Today - new TimeSpan(1, 0, 0, 0), DateTime.Today);
            foreach (QueryResult queryResult in resultList)
            {
                Console.WriteLine(queryResult);
            }

            Console.WriteLine("----------------------------------------------");
        }
 public void OnResultUpdate(QueryResult result)
 {
     Console.WriteLine(result.ToString() + "\nUpdate Result!");
 }
 public void OnResultNew(QueryResult result)
 {
     Console.WriteLine("New Result!");
 }
 /// <summary>
 /// 移除一条历史记录
 /// </summary>
 /// <param name="result">历史记录</param>
 /// <param name="date">日期</param>
 public void RemoveResult(QueryResult result, DateTime date)
 {
     List<QueryResult> resultList = GetResultList(date);
     resultList.Remove(result);
     SetResultList(date, resultList);
 }
示例#7
0
            public void OnResultUpdate(QueryResult result)
            {
                if (_currentQueryResult != result)
                {
                    _currentQueryResult = result;
                }

                _parent.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
                    delegate()
                    {
                        if (result != null && result.Items != null)
                        {
                            try
                            {
                                _parent.ClearAllListBoxes();
                                foreach (IQueryResultItem queryResultItem in result.Items)
                                {
                                    #region dealwithqueryitem
                                    switch (queryResultItem.ResultType)
                                    {
                                        case QueryResultItemType.SearchEngineResult:
                                            var searchEngineItem = queryResultItem as SearchEngineResult;
                                            if (searchEngineItem != null && searchEngineItem.Results != null) // TODO: Bug ASSERT(searchEngineItem != null)
                                            {
                                                ListBox listBox = null;
                                                TabItem tabItem = null;
                                                string engineName = null;
                                                bool hasFound = FindUIElements(searchEngineItem, out listBox, out tabItem, out engineName);

                                                if (hasFound)
                                                {
                                                    listBox.Items.Clear();
                                                    foreach (SearchEngineResult.ResultItem resultItem in searchEngineItem.Results)
                                                    {
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = resultItem.Title
                                                        });
                                                    }
                                                    tabItem.Header = string.Format("{0}({1})", engineName, searchEngineItem.Results.Count);

                                                    listBox.InvalidateArrange();
                                                    tabItem.InvalidateArrange();
                                                }
                                            }

                                            break;

                                        case QueryResultItemType.SuggestionResult:
                                            //SuggestionResult suggestionItem= queryResultItem as SuggestionResult;
                                            //_parent._suggestionWindow.Show( suggestionItem );

                                            break;

                                        case QueryResultItemType.DictionaryResult:
                                            var dictItem = queryResultItem as DictResult;
                                            if (dictItem != null && dictItem.Word != null) // TODO: Bug ASSERT(searchEngineItem != null)
                                            {

                                                ListBox listBox = null;
                                                TabItem tabItem = null;
                                                string dictname = null;
                                                bool hasFound = FindUIElements(dictItem, out listBox, out tabItem, out dictname);

                                                if (hasFound && dictItem.Word != string.Empty)
                                                {
                                                    listBox.Items.Clear();
                                                    /*foreach ( SearchEngineResult.ResultItem resultItem in searchEngineItem.Results )
                                                    {
                                                        listBox.Items.Add( new ListBoxItem()
                                                        {
                                                            Content = resultItem.Title
                                                        } );
                                                    }*/
                                                    listBox.Items.Add(new ListBoxItem()
                                                    {
                                                        Content = dictItem.Word

                                                    });
                                                    if (dictItem.Pronunciation != string.Empty)
                                                    {
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = " "
                                                        });
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = dictItem.Pronunciation
                                                        });
                                                    }
                                                    if (dictItem.Variations != string.Empty)
                                                    {
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = " "
                                                        });
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = dictItem.Variations
                                                        });
                                                    }
                                                    if (dictItem.EnglishExplanations != string.Empty)
                                                    {
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = " "
                                                        });
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = dictItem.EnglishExplanations
                                                        });
                                                    }
                                                    if (dictItem.ChineseExplanations != string.Empty)
                                                    {
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = " "
                                                        });
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = dictItem.ChineseExplanations
                                                        });
                                                    }
                                                    if (dictItem.Examples != string.Empty)
                                                    {
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = " "
                                                        });
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = dictItem.Examples
                                                        });
                                                    }
                                                    if (dictItem.FromEncyclopedia != string.Empty)
                                                    {
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = " "
                                                        });
                                                        listBox.Items.Add(new ListBoxItem()
                                                        {
                                                            Content = dictItem.FromEncyclopedia
                                                        });
                                                    }

                                                    tabItem.Header = string.Format("{0}({1})", dictname, 1);

                                                    listBox.InvalidateArrange();
                                                    tabItem.InvalidateArrange();
                                                }
                                                else
                                                {
                                                    tabItem.Header = string.Format("{0}({1})", dictname, 0);

                                                    listBox.InvalidateArrange();
                                                    tabItem.InvalidateArrange();
                                                }
                                            }

                                            break;

                                        default:
                                            break;
                                    }
                                    #endregion
                                }
                            }
                            catch (Exception)
                            {
                                // do nothing
                            }
                        }
                    })
                );
            }
示例#8
0
            public void OnResultDeprecated(QueryResult result)
            {
                //if (_currentQueryResult == result)
                //{
                //    _parent.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
                //        delegate()
                //        {
                //            _parent.GoogleOutputListBox.Items.Clear();
                //            _parent.BaiduOutputListBox.Items.Clear();
                //        })
                //    );
                //    _currentQueryResult = null;
                //}

                //MessageBox.Show("OnResultDeprecated" + result.ToString());
            }
 /// <summary>
 /// 显示历史记录
 /// </summary>
 /// <param name="result">记录</param>
 private void ShowHistoryResult(QueryResult result)
 {
     if (ChangeText != null)
     {
         ChangeText(result.Query.ToString());
     }
     QueryResultHandler.OnResultNew(result);
     QueryResultHandler.OnResultUpdate(result);
     QueryResultHandler.OnResultCompleted(result);
 }
 /// <summary>
 /// 得到一个搜索结果对应的TreeViewItem
 /// </summary>
 /// <param name="result">搜索结果</param>
 /// <returns>对应的一项</returns>
 private object GetResultItem(QueryResult result)
 {
     DisplayQueryResult resultItem = new DisplayQueryResult(result);
     return resultItem;
 }
示例#11
0
 public void OnQueryResultCanceled(QueryResult result)
 {
     lock (_queryResultPipes)
     {
         foreach (Pipe pipe in _queryResultPipes)
         {
             if (pipe.Message == result)
             {
                 pipe.CancelMessage();
             }
         }
     }
 }
示例#12
0
 public void OnQueryResultReady(QueryResult result)
 {
     List<Pipe> newPipes =
         _queryResultSubscriberManager.NotifyAll(result);
     //Assert(newPipes != null)
     lock (_queryResultPipes)
     {
         _queryResultPipes.AddRange(newPipes);
     }
 }
 public void AppendRecord(QueryResult result, DateTime date)
 {
     List<QueryResult> resultList = GetResultList(date);
     resultList.Add(result);
     SetResultList(date, resultList);
 }
 public void UpdateRecord(QueryResult result)
 {
     ModifyRecord(result, DateTime.Today, true);
 }
示例#15
0
            private bool FindSearchEngineResult(QueryResult queryResult, SearchEngineType targetType, out SearchEngineResult searchEngineResult)
            {
                bool hasFound = false;
                searchEngineResult = null;
                if (queryResult != null)
                {

                    if ( queryResult.SearchEngineResultItems != null )
                    {

                        foreach ( SearchEngineResult resultItem in queryResult.SearchEngineResultItems )
                        {
                            if (resultItem != null && resultItem.SearchEngineType == targetType)
                            {
                                searchEngineResult = resultItem;
                                hasFound = true;
                                break;
                            }
                        }
                    }
                }
                return hasFound;
            }
示例#16
0
            public void OnResultCompleted(QueryResult result)
            {
                _parent.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
                        delegate()
                        {
                            if (result.IsEmpty())
                            {
                                _parent.InputTextBox.Text = "哎呦,没有结果:(";
                            }

                            _parent.SearchingStateGrid.Visibility = Visibility.Hidden;

                        })
                    );
            }
 public DisplayQueryResult(QueryResult queryResult)
 {
     QueryResult = queryResult;
 }
示例#18
0
 public void OnResultNew(QueryResult result)
 {
     _parent.Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, new Action(
         delegate()
         {
             _parent.SearchingStateGrid.Visibility = Visibility.Visible;
         })
     );
 }
 public void OnResultDeprecated(QueryResult result)
 {
     Console.WriteLine("Deprecate Result!");
 }
        public void Handle(IMessage message)
        {
            if (message.MessageType == MessageType.InputQuery)
            {
                InputQuery query = (InputQuery)message;
                if (_result != null && _result.Query == query)
                {
                    return;
                }
                // Kill current queries
                if (_result != null)
                {
                    HandleDeprecateMessage(_result.Query);
                }

                // Notice the handler
                _result = new QueryResult(query);
                _handler.OnResultNew(_result);

                // Generate new queries
                _searchPipeList = new List<SearchAndReturnPipe>();
                lock (_searchPipeList)
                {
                    foreach (ISearch engine in _searchEngineList)
                    {
                        SearchAndReturnPipe pipe = new SearchAndReturnPipe(this, engine, query, _pipeline);
                        _searchPipeList.Add(pipe);
                    }
                }
            }
        }
 public void ModifyRecord(QueryResult result, DateTime date, bool appendIfNotExist)
 {
     List<QueryResult> resultList = GetResultList(date);
     foreach (QueryResult existResult in resultList)
     {
         if (result.Query.Equals(existResult.Query))
         {
             int i = resultList.IndexOf(existResult);
             //resultList.RemoveAt(i);
             //resultList.Insert(i, result);
             //if (existResult.Items.Count <= result.Items.Count)
             if (existResult.LastUpdateTime < result.LastUpdateTime)
             {
                 //existResult.Items.Clear();
                 //existResult.Items.AddRange(result.Items);
                 resultList.Remove(existResult);
                 resultList.Add(result);
                 SetResultList(date, resultList);
             }
             return;
         }
     }
     if (appendIfNotExist)
     {
         AppendRecord(result, date);
     }
 }