public MediaListRecyclerAdapter(BaseAniDroidActivity context, MediaListGroup mediaListGroup, RecyclerCardType cardType, Func <AniList.Models.MediaModels.MediaList, MediaListViewModel> createViewModelFunc, MediaListItemViewType viewType, bool highlightPriorityItems, bool useLongClickForEpisodeAdd, Action <MediaListViewModel, Action> episodeAddAction = null) : base(context, mediaListGroup.Entries.Select(createViewModelFunc).ToList(), cardType) { CreateViewModelFunc = createViewModelFunc; _isCustomList = mediaListGroup.IsCustomList; _listName = mediaListGroup.Name; _listStatus = mediaListGroup.Status; _unfilteredItems = Items; _viewType = viewType; _highlightPriorityItems = highlightPriorityItems; _priorityBackgroundColor = ColorStateList.ValueOf(new Color(Context.GetThemedColor(Resource.Attribute.ListItem_Priority))); _upToDateTitleColor = ColorStateList.ValueOf(new Color(Context.GetThemedColor(Resource.Attribute.ListItem_UpToDate))); _slightlyBehindTitleColor = ColorStateList.ValueOf(new Color(Context.GetThemedColor(Resource.Attribute.ListItem_SlightlyBehind))); _behindTitleColor = ColorStateList.ValueOf(new Color(Context.GetThemedColor(Resource.Attribute.ListItem_Behind))); _veryBehindTitleColor = ColorStateList.ValueOf(new Color(Context.GetThemedColor(Resource.Attribute.ListItem_VeryBehind))); ClickAction = (viewModel, position) => MediaActivity.StartActivity(Context, viewModel.Model.Media?.Id ?? 0, BaseAniDroidActivity.ObjectBrowseRequestCode); // leave this as the non-edit action so we can leave the presenter out LongClickAction = (viewModel, position) => Context.DisplaySnackbarMessage(viewModel.Model.Media?.Title?.UserPreferred, Snackbar.LengthLong); if (episodeAddAction != null) { if (useLongClickForEpisodeAdd) { ButtonLongClickAction = (viewModel, pos, callback) => episodeAddAction.Invoke(viewModel as MediaListViewModel, callback); ButtonClickAction = (viewModel, pos, callback) => Toast.MakeText(Context.ApplicationContext, Context.GetString(Resource.String.MediaList_LongPressEnabledAlert), ToastLength.Short).Show(); } else { ButtonClickAction = (viewModel, pos, callback) => episodeAddAction.Invoke(viewModel as MediaListViewModel, callback); } } if (_viewType != MediaListItemViewType.Normal) { CardType = RecyclerCardType.Custom; CustomCardUseItemDecoration = true; } }
/// <summary> /// Filter by the watching/reading status. /// </summary> public GraphQueryArgument <MediaListStatus> StatusQueryArgument(MediaListStatus value) { return(Status.GetQueryArgumentAndSetValue(value)); }