Exemple #1
0
        public void Reset()
        {
            CurrentSongs.Clear();

            CurrentSongs.CollectionChanged -= HandleCurrentSongsCollectionChanged;

            CurrentSongs.UpdateLimit((uint)Limit, HasLimit);
            CurrentSongs.UpdateSortFunction(new SongSortGenericOrder(MixSortOrderToSongProperty(SortType), MixSortOrderToIsAscending(SortType)));

            List <MixViewModel> oldDependentMixes = new List <MixViewModel>(DependentMixes);

            UpdateDependencyList();

            if (!IsCircular)
            {
                foreach (SongViewModel song in LibraryViewModel.Current.FlatSongCollection)
                {
                    if (RootEvaluator.Eval(song))
                    {
                        CurrentSongs.Add(song);
                    }
                }
            }

            // Reset any mixes that used to depend on this and might not anymore
            foreach (MixViewModel mixViewModel in oldDependentMixes)
            {
                if (!DependentMixes.Contains(mixViewModel))
                {
                    mixViewModel.Reset();
                }
            }

            if (!IsCircular)
            {
                // Reset any mixes that now depend on this
                List <MixViewModel> copyDependentMixes = new List <MixViewModel>(DependentMixes);

                foreach (MixViewModel mixViewModel in copyDependentMixes)
                {
                    mixViewModel.Reset();
                }
            }

            CurrentSongs.CollectionChanged += HandleCurrentSongsCollectionChanged;

            ResetLength();
        }