示例#1
0
        public void SetCollection(MediaListCollection collection)
        {
            SetContentView(Resource.Layout.Activity_MediaLists);

            _collection = collection;

            var pagerAdapter = new FragmentlessViewPagerAdapter();

            _recyclerAdapters = new List <MediaListRecyclerAdapter>();

            var listOrder    = GetListOrder();
            var orderedLists = !listOrder.Any()
                ? _collection.Lists
                : _collection.Lists.Where(x =>
                                          listOrder.All(y => y.Key != x.Name) || listOrder.FirstOrDefault(y => y.Key == x.Name).Value)
                               .OrderBy(x => listOrder.FindIndex(y => y.Key == x.Name)).ToList();

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

            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(this, statusList, Presenter.GetCardType(),
                                                           item => MediaListViewModel.CreateViewModel(item, _collection.User.MediaListOptions.ScoreFormat,
                                                                                                      Settings.DisplayUpcomingEpisodeTimeAsCountdown, Settings.MediaListProgressDisplay, true,
                                                                                                      Settings.ShowEpisodeAddButtonForRepeatingMedia),
                                                           Presenter.GetMediaListItemViewType(), Presenter.GetHighlightPriorityItems(),
                                                           Presenter.GetUseLongClickForEpisodeAdd());

                adapter.SetFilter(_filterModel);

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

            _viewPager.Adapter = pagerAdapter;
            _tabLayout.SetupWithViewPager(_viewPager);

            SetupToolbar(_collection.User.Name);
        }
示例#2
0
        private View CreateMediaFollowingUsersMediaListStatusView(int mediaId)
        {
            var mediaListEnumerable = Presenter.GetMediaFollowingUsersMediaListsEnumerable(mediaId, PageLength);
            var retView             = LayoutInflater.Inflate(Resource.Layout.View_List, null);
            var recycler            = retView.FindViewById <RecyclerView>(Resource.Id.List_RecyclerView);
            var recyclerAdapter     = new MediaListRecyclerAdapter(this, CardType, mediaListEnumerable,
                                                                   MediaListViewModel.CreateUserMediaListViewModel)
            {
                ClickAction = (viewModel, position) => UserActivity.StartActivity(this, viewModel.Model?.User?.Id ?? 0)
            };

            recycler.SetAdapter(recyclerAdapter);

            return(retView);
        }
示例#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);
        }