Example #1
0
        /// <exception cref="DeprecatedWrapperException"></exception>
        internal async Task <ISearchResultContainer> ExtractResultsFrom(string html)
        {
            var context = BrowsingContext.New(Configuration.Default);

            var document = await context.OpenAsync(req => req.Content(html)).ConfigureAwait(false);

            IElement resultsContainerNode = document.QuerySelector("div#main_tartalom div.lista_all div.box_torrent_all");

            if (resultsContainerNode == null)
            {
                throw new DeprecatedWrapperException("Couldn't find the container for the search results!", document.DocumentElement);
            }

            IElement noResultNode = resultsContainerNode.QuerySelector("div.lista_mini_error");

            if (noResultNode != null && noResultNode.TextContent == _userConfig.Language.NoSearchResults)
            {
                return(new SearchResultContainer());
            }

            IElement topPaginationElement = document.QuerySelector("#pager_top");

            if (topPaginationElement == null)
            {
                throw new DeprecatedWrapperException("Couldn't find the container for the pagination!");
            }

            SearchResultContainer resultContainer = new SearchResultContainer();

            resultContainer.HasPreviousPage = topPaginationElement.QuerySelector("#pPa") != null;
            resultContainer.HasNextPage     = topPaginationElement.QuerySelector("#nPa") != null;

            if (resultContainer.HasPreviousPage)
            {
                IElement prevPageLink = topPaginationElement.QuerySelector("#pPa");
                resultContainer.CurrentPage = GetPageFrom(prevPageLink) + 1;
            }
            else if (resultContainer.HasNextPage)
            {
                IElement nextPageLink = topPaginationElement.QuerySelector("#nPa");
                resultContainer.CurrentPage = GetPageFrom(nextPageLink) - 1;
            }

            IHtmlCollection <IElement> resultNodes = resultsContainerNode.QuerySelectorAll("div.box_torrent");

            if (resultNodes == null)
            {
                throw new DeprecatedWrapperException("Couldn't find the container for the search results!", resultsContainerNode);
            }

            foreach (IElement result in resultNodes)
            {
                resultContainer.Torrents.Add(ParseAsTorrent(result));
            }

            return(resultContainer);
        }
        private SearchResultContainer CreateSearchResult(CardWrapper[] vCards)
        {
            SearchResultContainer retVal = new SearchResultContainer();

            Log.WriteLine("Creating search result...", LogType.Debug);

            DataGridCardItem[] vItems = new DataGridCardItem[vCards.Length];

            for (int i = 0; i < vCards.Length; i++)
            {
                CardWrapper wrapper = vCards[i];

                switch (wrapper.DbCard.Rarity)
                {
                case HearthDb.Enums.Rarity.COMMON:
                    retVal.CommonsCount += wrapper.Count;
                    break;

                case HearthDb.Enums.Rarity.RARE:
                    retVal.RaresCount += wrapper.Count;
                    break;

                case HearthDb.Enums.Rarity.EPIC:
                    retVal.EpicsCount += wrapper.Count;
                    break;

                case HearthDb.Enums.Rarity.LEGENDARY:
                    retVal.LegendariesCount += wrapper.Count;
                    break;
                }

                DataGridCardItem item = DataGridCardItem.FromCardWrapper(wrapper);

                retVal.TotalCount += item.Count;
                retVal.Dust       += item.Dust;

                vItems[i] = item;
            }

            //Sort
            vItems = OrderItems(vItems).ToArray();

            for (int i = 0; i < vItems.Length; i++)
            {
                retVal.GridItems.Add(vItems[i]);
            }

            return(retVal);
        }
Example #3
0
        private void OnSortOrderClick(object sender, System.Windows.RoutedEventArgs e)
        {
            SortOrderDialog dialog = new SortOrderDialog()
            {
                Owner = this
            };

            if (dialog.ShowDialog().Value)
            {
                //dataGrid.ItemsSource = OrderItems(dataGrid.ItemsSource as IEnumerable<GridItem>);

                SearchResultContainer container = GetSearchResultContainerComponent();

                container.SetGridItems(OrderItems(container.GridItems));
            }
            else
            {
            }
        }