Ejemplo n.º 1
0
 public static IComparer <Comic> Make(ComicSortSelector sortSelector)
 {
     return(sortSelector switch {
         ComicSortSelector.Title => new TitleComparer(),
         ComicSortSelector.Author => new AuthorComparer(),
         ComicSortSelector.DateAdded => new DateAddedComparer(),
         ComicSortSelector.Random => throw new ProgrammerError($"{nameof(ComicComparers)}.{nameof(Make)}: Random is not allowed here"),
         _ => throw new ProgrammerError($"{nameof(ComicComparers)}.{nameof(Make)}: unexpected sort selector")
     });
Ejemplo n.º 2
0
 private static void SortComics(List <Comic> comics, ComicSortSelector sortSelector)
 {
     if (sortSelector == ComicSortSelector.Random)
     {
         General.Shuffle(comics);
     }
     else
     {
         comics.Sort(ComicComparers.Make(sortSelector));
     }
 }
Ejemplo n.º 3
0
 internal SortedComicView(
     ComicView trackChangesFrom,
     IEnumerable <Comic> comics,
     ComicSortSelector sortSelector
     ) : this(trackChangesFrom, comicAccessor : new Dictionary <string, Comic>(), sortedComics : new List <Comic>(), sortSelector)
 {
     foreach (var comic in comics)
     {
         this.Instance_AddComic(comic);
     }
 }
Ejemplo n.º 4
0
 /// <summary>
 /// A convenience constructor, for a pre-populated comicAccessor field
 /// </summary>
 private SortedComicView(
     ComicView trackChangesFrom,
     Dictionary <string, Comic> comicAccessor,
     List <Comic> sortedComics,
     ComicSortSelector sortSelector
     ) : base(trackChangesFrom)
 {
     this.comicAccessor = comicAccessor;
     this.sortedComics  = sortedComics;
     this.sortSelector  = sortSelector;
 }
Ejemplo n.º 5
0
        // this override optimizes Sorted since we know more than an unsorted collection
        public override SortedComicView Sorted(ComicSortSelector sortSelector)
        {
            if (sortSelector == this.sortSelector)
            {
                return(this);
            }

            var sorted = new List <Comic>(this.sortedComics);

            SortComics(sorted, sortSelector);

            return(new SortedComicView(this, this.comicAccessor, sorted, sortSelector));
        }
Ejemplo n.º 6
0
 public void Sort(ComicSortSelector sortSelector)
 {
     this.sortSelector = sortSelector;
     SortComics(this.sortedComics, sortSelector);
     this.OnComicChanged(new ViewChangedEventArgs(ComicChangeType.Refresh));
 }