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); }
public override bool OnOptionsItemSelected(IMenuItem item) { switch (item.ItemId) { case Resource.Id.Menu_MediaLists_Refresh: _collection = null; RecreateFragment(); return(true); case Resource.Id.Menu_MediaLists_Sort: MediaListSortDialog.Create(Activity, _currentSort, _currentSortDirection, SetMediaListSort); return(true); case Resource.Id.Menu_MediaLists_Filter: MediaListFilterDialog.Create(Activity, this, _type, Presenter.GetGenres(), Presenter.GetMediaTags()); return(true); } return(base.OnOptionsItemSelected(item)); }
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); }
public void SetCollection(MediaListCollection collection) { _collection = collection; RecreateFragment(); }