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; } } }
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); }
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 } } }) ); }
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; }
public void OnQueryResultCanceled(QueryResult result) { lock (_queryResultPipes) { foreach (Pipe pipe in _queryResultPipes) { if (pipe.Message == result) { pipe.CancelMessage(); } } } }
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); }
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; }
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; }
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); } }