示例#1
0
        public async void PopulateData(bool force = false)
        {
            ViewModelLocator.GeneralMain.CurrentStatus = CurrentWorkMode.GetDescription();

            if (Loading)
            {
                return;
            }

            if (!force)
            {
                switch (CurrentWorkMode)
                {
                case RecommendationsPageWorkMode.Anime:
                    if (RecommendationAnimeItems != null)
                    {
                        RaisePropertyChanged(() => CurrentWorkMode);
                        return;
                    }
                    break;

                case RecommendationsPageWorkMode.Manga:
                    if (RecommendationMangaItems != null)
                    {
                        RaisePropertyChanged(() => CurrentWorkMode);
                        return;
                    }
                    break;

                case RecommendationsPageWorkMode.PersonalizedAnime:
                    if (PersonalizedAnimeItems != null)
                    {
                        RaisePropertyChanged(() => CurrentWorkMode);
                        return;
                    }
                    break;

                case RecommendationsPageWorkMode.PersonalizedManga:
                    if (PersonalizedMangaItems != null)
                    {
                        RaisePropertyChanged(() => CurrentWorkMode);
                        return;
                    }
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                RaisePropertyChanged(() => PivotItemIndex);
            }

            Loading = true;

            if (CurrentWorkMode == RecommendationsPageWorkMode.Anime ||
                CurrentWorkMode == RecommendationsPageWorkMode.Manga)
            {
                List <RecommendationData> data = null;
                await Task.Run(async() => data =
                               await new AnimeRecomendationsQuery(CurrentWorkMode == RecommendationsPageWorkMode.Anime)
                               .GetRecomendationsData());

                if (data == null)
                {
                    Loading = false;
                    return;
                }

                var items = new List <XPivotItem>();
                var i     = 0;
                foreach (var item in data)
                {
                    var pivot = new XPivotItem
                    {
                        Header  = item.DependentTitle + "\n" + item.RecommendationTitle,
                        Content = new RecommendationItemViewModel(item, i++)
                    };
                    items.Add(pivot);
                }

                if (CurrentWorkMode == RecommendationsPageWorkMode.Anime)
                {
                    RecommendationAnimeItems = items;
                }
                else
                {
                    RecommendationMangaItems = items;
                }

                RaisePropertyChanged(() => PivotItemIndex);
            }
            else
            {
                var data =
                    await new AnimePersonalizedRecommendationsQuery(CurrentWorkMode ==
                                                                    RecommendationsPageWorkMode.PersonalizedAnime)
                    .GetPersonalizedRecommendations();
                if (CurrentWorkMode == RecommendationsPageWorkMode.PersonalizedAnime)
                {
                    PersonalizedAnimeItems =
                        data.Select(recommendationData => new AnimeItemAbstraction(false, new AnimeLibraryItemData
                    {
                        Title  = recommendationData.Title,
                        Id     = recommendationData.Id,
                        ImgUrl = recommendationData.ImgUrl
                    }).ViewModel).ToList();
                    PersonalizedAnimeItems.ForEach(model =>
                    {
                        model.UpdateButtonsVisibility = false;
                    });
                }
                else
                {
                    PersonalizedMangaItems =
                        data.Select(recommendationData => new AnimeItemAbstraction(false, new MangaLibraryItemData
                    {
                        Title  = recommendationData.Title,
                        Id     = recommendationData.Id,
                        ImgUrl = recommendationData.ImgUrl
                    }).ViewModel).ToList();
                    PersonalizedMangaItems.ForEach(model =>
                    {
                        model.UpdateButtonsVisibility = false;
                    });
                }
            }

            Loading = false;
        }
        public async void PopulateData()
        {
            ViewModelLocator.GeneralMain.CurrentStatus = AnimeMode ? "Anime Recommendations" : "Manga Recommendations";

            if (Loading || _prevLoaded == AnimeMode)
                return;
            Loading = true;
            var data = new List<RecommendationData>();

            _prevLoaded = AnimeMode;
            await Task.Run(async () => data = await new AnimeRecomendationsQuery(AnimeMode).GetRecomendationsData());

            if (data == null)
            {
                Loading = false;
                return;
            }

            RecommendationItems.Clear();
            var i = 0;
            foreach (var item in data)
            {
                var pivot = new XPivotItem
                {
                    Header = item.DependentTitle + "\n" + item.RecommendationTitle,
                    Content = new RecommendationItemViewModel(item, i++)
                };
                RecommendationItems.Add(pivot);
            }
            Loading = false;
            RaisePropertyChanged(() => PivotItemIndex);
        }