private void SearchCompletedHandler(System.Net.DownloadStringCompletedEventArgs e) { SearchGroupTabs = null; //TODO examine e.Error if (e.Error == null) { var groupTabs = _tabSearcher.Entries.Where(FilterTab). Select(entry => new TabEntity { SearchId = entry.Id, SearchUrl = entry.Url, Name = entry.Name, Group = entry.Artist, Rating = entry.Rating, Type = entry.Type, ImageUrl = Database.GetTabTypeByName(entry.Type).ImageUrl, Votes = entry.Votes, Version = entry.Version }); if (_sortOrder == ResultsSortOrder.Popularity) { var artistName = CurrentSearchText.TransLiterate(); var grouped = groupTabs.Where(t => t.Group.TransLiterate() == artistName).OrderByDescending(t => t.Votes); IsNothingPopularFound = !grouped.Any(); SearchPopularTabs = new ObservableCollection <TabEntity>(grouped.Take(100)); Deployment.Current.Dispatcher.BeginInvoke(() => { IsSearching = false; }); //Clear the Search Area (for the Search Page) this.ClearSearchArea(); } else { IsNothingFound = !groupTabs.Any(); Pages = Enumerable.Range(1, _tabSearcher.Summary.PageCount).Select(p => p.ToString()); SearchGroupTabs = new TabsByName(new ObservableCollection <TabEntity>(groupTabs), Database); Deployment.Current.Dispatcher.BeginInvoke( () => { if (Pages.Any()) { SelectedPage = Pages.ElementAt(CurrentPageIndex - 1); } RaisePropertyChanged("SelectedPage"); AssignHeaderPagingUI(_tabSearcher.Summary.PageCount); IsSearching = false; }); } } else { IsSearching = false; ClearSearchArea(); Dialog.Show(AppResources.Search_Sorry, AppResources.Search_ServerUnavailable); } }
private void DoSelectPage(string index) { if (index == null) { return; } int pageNumber; if (Int32.TryParse(index, out pageNumber)) { SearchInfoTextBlock = String.Format(AppResources.Search_PageFor, index, CurrentTypedText); CurrentPageIndex = pageNumber; string bandName = string.Empty, songName = string.Empty; switch (SearchMethod) { case SearchType.ByBand: bandName = CurrentSearchText; break; case SearchType.BySong: songName = CurrentSearchText; break; case SearchType.BandSong: if (CurrentSearchText.Contains(",")) { string[] words = CurrentSearchText.Split(','); bandName = words[0].Trim(); songName = words[1].Trim(); } else if (CurrentSearchText.Contains(" ")) { string[] words = CurrentSearchText.Split(' '); bandName = words[0].Trim(); for (int i = 1; i < words.Length; i++) { songName += words[i] + " "; } } else { bandName = CurrentSearchText; } break; } RunSearch(bandName, songName, ResultsSortOrder.Alphabetical); } }