public void SetMediaListSort(MediaListSortComparer.MediaListSortType sort, MediaListSortComparer.SortDirection direction) { _currentSort = sort; _currentSortDirection = direction; Presenter.SetMediaListSortSettings(_type, _currentSort, _currentSortDirection); RecreateFragment(); }
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 void SetMediaListSortSettings(MediaType mediaType, MediaListSortComparer.MediaListSortType sort, MediaListSortComparer.SortDirection direction) { if (MediaType.Anime.Equals(mediaType)) { AniDroidSettings.AnimeListSortType = sort; AniDroidSettings.AnimeListSortDirection = direction; } else if (MediaType.Manga.Equals(mediaType)) { AniDroidSettings.MangaListSortType = sort; AniDroidSettings.MangaListSortDirection = direction; } }
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 static void Create(BaseAniDroidActivity context, MediaListSortComparer.MediaListSortType currentSort, MediaListSortComparer.SortDirection currentDirection, Action <MediaListSortComparer.MediaListSortType, MediaListSortComparer.SortDirection> onSelectSortAction) { var view = context.LayoutInflater.Inflate(Resource.Layout.Dialog_MediaListSort, null); var dialog = new AlertDialog.Builder(context, context.GetThemedResourceId(Resource.Attribute.Dialog_Theme)); dialog.SetView(view); dialog.SetTitle("Sort Lists"); var selectedSort = Resource.Id.MediaListSort_Default; switch (currentSort) { case MediaListSortComparer.MediaListSortType.Title: selectedSort = Resource.Id.MediaListSort_Title; break; case MediaListSortComparer.MediaListSortType.AverageScore: selectedSort = Resource.Id.MediaListSort_AverageScore; break; case MediaListSortComparer.MediaListSortType.Rating: selectedSort = Resource.Id.MediaListSort_Rating; break; case MediaListSortComparer.MediaListSortType.Popularity: selectedSort = Resource.Id.MediaListSort_Popularity; break; case MediaListSortComparer.MediaListSortType.DateReleased: selectedSort = Resource.Id.MediaListSort_DateReleased; break; case MediaListSortComparer.MediaListSortType.DateAdded: selectedSort = Resource.Id.MediaListSort_DateAdded; break; case MediaListSortComparer.MediaListSortType.Progress: selectedSort = Resource.Id.MediaListSort_Progress; break; case MediaListSortComparer.MediaListSortType.DateLastUpdated: selectedSort = Resource.Id.MediaListSort_DateLastUpdated; break; case MediaListSortComparer.MediaListSortType.Duration: selectedSort = Resource.Id.MediaListSort_Duration; break; case MediaListSortComparer.MediaListSortType.DateStarted: selectedSort = Resource.Id.MediaListSort_DateStarted; break; case MediaListSortComparer.MediaListSortType.DateCompleted: selectedSort = Resource.Id.MediaListSort_DateCompleted; break; case MediaListSortComparer.MediaListSortType.NextEpisodeDate: selectedSort = Resource.Id.MediaListSort_NextEpisodeDate; break; } // set current selections var sortRadioGroup = view.FindViewById <RadioGroup>(Resource.Id.MediaListSort_SortRadioGroup); sortRadioGroup.Check(selectedSort); var directionRadioGroup = view.FindViewById <RadioGroup>(Resource.Id.MediaListSort_DirectionRadioGroup); directionRadioGroup.Check(currentDirection == MediaListSortComparer.SortDirection.Ascending ? Resource.Id.MediaListSort_Ascending : Resource.Id.MediaListSort_Descending); dialog.SetPositiveButton("Save", (sender, args) => { var sort = MediaListSortComparer.MediaListSortType.NoSort; switch (sortRadioGroup.CheckedRadioButtonId) { case Resource.Id.MediaListSort_Title: sort = MediaListSortComparer.MediaListSortType.Title; break; case Resource.Id.MediaListSort_AverageScore: sort = MediaListSortComparer.MediaListSortType.AverageScore; break; case Resource.Id.MediaListSort_Rating: sort = MediaListSortComparer.MediaListSortType.Rating; break; case Resource.Id.MediaListSort_Progress: sort = MediaListSortComparer.MediaListSortType.Progress; break; case Resource.Id.MediaListSort_Popularity: sort = MediaListSortComparer.MediaListSortType.Popularity; break; case Resource.Id.MediaListSort_DateReleased: sort = MediaListSortComparer.MediaListSortType.DateReleased; break; case Resource.Id.MediaListSort_DateAdded: sort = MediaListSortComparer.MediaListSortType.DateAdded; break; case Resource.Id.MediaListSort_DateLastUpdated: sort = MediaListSortComparer.MediaListSortType.DateLastUpdated; break; case Resource.Id.MediaListSort_Duration: sort = MediaListSortComparer.MediaListSortType.Duration; break; case Resource.Id.MediaListSort_DateStarted: sort = MediaListSortComparer.MediaListSortType.DateStarted; break; case Resource.Id.MediaListSort_DateCompleted: sort = MediaListSortComparer.MediaListSortType.DateCompleted; break; case Resource.Id.MediaListSort_NextEpisodeDate: sort = MediaListSortComparer.MediaListSortType.NextEpisodeDate; break; } var direction = directionRadioGroup.CheckedRadioButtonId == Resource.Id.MediaListSort_Ascending ? MediaListSortComparer.SortDirection.Ascending : MediaListSortComparer.SortDirection.Descending; onSelectSortAction(sort, direction); }); dialog.Show(); }
public void SetMangaListSort(MediaListSortComparer.MediaListSortType sort, MediaListSortComparer.SortDirection direction) { AniDroidSettings.MangaListSortType = sort; AniDroidSettings.MangaListSortDirection = direction; }
public void CreateMangaListSortItem(MediaListSortComparer.MediaListSortType sort, MediaListSortComparer.SortDirection direction) { _settingsContainer.AddView( SettingsActivity.CreateChevronSettingRow(this, "Set Manga List Sort Type", "Set how you want to sort items on your Manga lists", (sender, args) => MediaListSortDialog.Create(this, sort, direction, Presenter.SetMangaListSort))); _settingsContainer.AddView(SettingsActivity.CreateSettingDivider(this)); }