protected ComicNavigationItemGridViewModel(
            IMainPageContent parent,
            MainViewModel appViewModel,
            NavigationTag navigationTag,
            ComicCollectionSortSelector initialSort
            ) : base(parent, appViewModel)
        {
            // Note: in the future, we may want to store this to remove the event handler
            switch (navigationTag)
            {
            case NavigationTag.Comics:
                throw new ProgrammerError("Cannot make of navigation item view model for work items");

            case NavigationTag.Playlist:
                this.collections = this.MainViewModel.Playlists;
                this.collections.SetSort(initialSort);
                break;

            default:
                this.collections = this.MainViewModel.SortedComicCollectionsFor(navigationTag, initialSort);
                break;
            }

            this.collections.CollectionsChanged += this.Collections_CollectionsChanged;
        }
Ejemplo n.º 2
0
 public static IComparer <IComicCollection> Make(ComicCollectionSortSelector sortSelector)
 {
     return(sortSelector switch {
         ComicCollectionSortSelector.Name => new NameComparer(),
         ComicCollectionSortSelector.ItemCount => new ItemCountComparer(),
         ComicCollectionSortSelector.Random => throw new ProgrammerError(
             $"{nameof(ComicCollectionComparers)}.{nameof(Make)}: Random not allowed here"
             ),
         _ => throw new ProgrammerError($"{nameof(ComicCollectionComparers)}.{nameof(Make)}: unexpected sort selector")
     });
        public static ComicNavigationItemGridViewModel ForViewModel(
            IMainPageContent parent,
            MainViewModel mainViewModel,
            NavigationTag navigationTag,
            ComicCollectionSortSelector initialSort,
            ComicItemGridState?savedState = null
            )
        {
            var viewModel = new ComicNavigationItemGridViewModel(parent, mainViewModel, navigationTag, initialSort);

            if (savedState?.LastModified is { } lastModified&& lastModified == mainViewModel.LastModified)
            {
                viewModel.SetComicItems(savedState.Items);
            }