Пример #1
0
        public void ShowCurrentlyAiringResults(
            IAsyncEnumerable <OneOf <IPagedData <Media>, IAniListError> > mediaEnumerable)
        {
            var currentlyAiringView = new SideScrollingList(Activity)
            {
                LabelText = "Currently Airing"
            };

            var adapter = new MediaRecyclerAdapter(Activity, mediaEnumerable,
                                                   BaseRecyclerAdapter.RecyclerCardType.Vertical, MediaViewModel.CreateMediaViewModel)
            {
                LongClickAction = (viewModel, position) =>
                {
                    if (Presenter.GetIsUserAuthenticated())
                    {
                        EditMediaListItemDialog.Create(Activity, Presenter, viewModel.Model,
                                                       viewModel.Model.MediaListEntry,
                                                       Presenter.GetLoggedInUser()?.MediaListOptions);
                    }
                },
            };

            adapter.SetHorizontalAdapterCardWidthDip(CardWidth);

            currentlyAiringView.RecyclerAdapter = _currentlyAiringRecyclerAdapter = adapter;

            _listContainer.AddView(currentlyAiringView);
        }
Пример #2
0
 public void ShowMediaSearchResults(IAsyncEnumerable <OneOf <IPagedData <Media>, IAniListError> > mediaEnumerable)
 {
     _recyclerView.SetAdapter(_adapter = new MediaRecyclerAdapter(this, mediaEnumerable, _cardType,
                                                                  MediaViewModel.CreateMediaViewModel)
     {
         LongClickAction = (viewModel, position) =>
         {
             if (Presenter.GetIsUserAuthenticated())
             {
                 EditMediaListItemDialog.Create(this, Presenter, viewModel.Model,
                                                viewModel.Model.MediaListEntry,
                                                Presenter.GetAuthenticatedUser()?.MediaListOptions);
             }
         },
     });
 }
Пример #3
0
        private View GetMediaListCollectionView()
        {
            var mediaCollectionView = LayoutInflater.Inflate(Resource.Layout.Fragment_MediaLists, null);
            var pagerAdapter        = new FragmentlessViewPagerAdapter();

            _recyclerAdapters = new List <MediaListRecyclerAdapter>();

            var listOrder    = GetListOrder();
            var orderedLists = _collection.Lists
                               .Where(x => listOrder.FirstOrDefault(y => y.Key == x.Name).Value)
                               .OrderBy(x => listOrder.FindIndex(y => y.Key == x.Name)).ToList();

            _currentSort          = Presenter.GetMediaListSortType(_type);
            _currentSortDirection = Presenter.GetMediaListSortDirection(_type);

            if (_currentSort != MediaListSortComparer.MediaListSortType.NoSort)
            {
                _collection.Lists.ForEach(list =>
                                          list.Entries.Sort(new MediaListSortComparer(_currentSort, _currentSortDirection)));
            }

            foreach (var statusList in orderedLists)
            {
                if (statusList.Entries?.Any() != true)
                {
                    continue;
                }

                var adapter = new MediaListRecyclerAdapter(Activity, statusList, Presenter.GetCardType(),
                                                           item => MediaListViewModel.CreateViewModel(item, _collection.User.MediaListOptions.ScoreFormat,
                                                                                                      Presenter.GetDisplayTimeUntilAiringAsCountdown(), Presenter.GetProgressDisplayType(), false,
                                                                                                      Presenter.GetShowEpisodeAddButtonForRepeatingMedia()),
                                                           Presenter.GetMediaListItemViewType(), Presenter.GetHighlightPriorityItems(),
                                                           Presenter.GetUseLongClickForEpisodeAdd(),
                                                           async(viewModel, callback) =>
                {
                    if (viewModel.Model.Progress + 1 ==
                        (viewModel.Model.Media.Episodes ?? viewModel.Model.Media.Chapters))
                    {
                        EditMediaListItemDialog.Create(Activity, Presenter, viewModel.Model.Media, viewModel.Model,
                                                       _collection.User.MediaListOptions, true);
                    }
                    else
                    {
                        await Presenter.IncreaseMediaProgress(viewModel.Model);
                    }

                    callback?.Invoke();
                })
                {
                    LongClickAction = (viewModel, position) => EditMediaListItemDialog.Create(Activity, Presenter,
                                                                                              viewModel.Model.Media, viewModel.Model, _collection.User.MediaListOptions)
                };

                adapter.SetFilter(_filterModel);

                _recyclerAdapters.Add(adapter);
                var listView = LayoutInflater.Inflate(Resource.Layout.View_SwipeRefreshList, null);
                listView.FindViewById <RecyclerView>(Resource.Id.List_RecyclerView).SetAdapter(adapter);
                pagerAdapter.AddView(listView, statusList.Name);

                var swipeRefreshLayout = listView.FindViewById <SwipeRefreshLayout>(Resource.Id.List_SwipeRefreshLayout);

                if (Presenter.GetUseSwipeToRefreshOnMediaLists())
                {
                    swipeRefreshLayout.Enabled  = true;
                    swipeRefreshLayout.Refresh += (sender, e) =>
                    {
                        _collection = null;
                        RecreateFragment();
                        if (sender is SwipeRefreshLayout refreshLayout)
                        {
                            refreshLayout.Refreshing = false;
                        }
                    };
                }
                else
                {
                    swipeRefreshLayout.Enabled = false;
                }
            }

            var viewPagerView = mediaCollectionView.FindViewById <ViewPager>(Resource.Id.MediaLists_ViewPager);

            viewPagerView.Adapter = pagerAdapter;
            mediaCollectionView.FindViewById <TabLayout>(Resource.Id.MediaLists_Tabs).SetupWithViewPager(viewPagerView);

            return(mediaCollectionView);
        }
Пример #4
0
 public void ShowMediaListEditDialog(AniList.Models.MediaModels.MediaList mediaList)
 {
     _editItem?.SetEnabled(true);
     EditMediaListItemDialog.Create(this, Presenter, _media, mediaList, _mediaListOptions);
 }