internal async void OnMixButtonCommand(object param)
        {
            if (IsMixDiscFilterValid())
            {
                _mixDiscTracks.Clear();
                var playlistTracks     = new ObservableCollection <ISong>(ImportedTrackCollection.Where(t => t.Playlist == SelectedMixDiscPlaylistComboBoxItem)).ToList();
                var playlistTrackCount = playlistTracks.Count();
                var tasks = new List <Task>(playlistTrackCount);

                ResetProgressBar();
                ProgressBarMax = playlistTrackCount;
                var minPlaytime = (Convert.ToInt32(PlaytimeTextBoxText) * 60);
                var mixLength   = Convert.ToInt32(MixLengthTextBoxText);
                ProgressBarValue = MixDiscCollection.Count();

                foreach (var track in playlistTracks)
                {
                    var baseTrackList = MixDiscCollection.ToList();
                    var task          = FindMixDiscTracksAsync(track, baseTrackList, playlistTracks, SelectedIntensityComboBoxItem, minPlaytime, mixLength);
                    tasks.Add(task);
                }

                await Task.WhenAll(tasks);
            }
        }
        internal void UpdateMixDiscProgressBar()
        {
            if (ProgressBarValue == ProgressBarMax)
            {
                var statusMessage = string.Empty;

                if (_mixDiscTracks.Count > 0)
                {
                    var bestMixDisc = GetBestMixDiscTracks();

                    foreach (var track in bestMixDisc)
                    {
                        MixDiscCollection.Add(track);
                    }

                    statusMessage = string.Concat("A new Mix disc is found");
                }
                else if (MixDiscCollection.Count == 0)
                {
                    DisplayLongestTrackCombinationList();
                    statusMessage = string.Concat("No new Mix disc is found. The longest track combination is displayed");
                }
                else
                {
                    statusMessage = string.Concat("No new Mix disc is found");
                }

                ProgressBarMessage = statusMessage;
                MessageBox.Show(string.Concat(statusMessage, "."));
            }
        }
        internal List <ISong> GetBestMixDiscTracks()
        {
            var baseTrackList = MixDiscCollection.ToList();

            MixDiscCollection.Clear();

            return(_songListModel.GetBestMixDiscTracks(baseTrackList, _mixDiscTracks, SelectedIntensityComboBoxItem, _culledMatchingTrackCombinationList));
        }
 private void DisplayLongestTrackCombinationList()
 {
     if (MixDiscCollection.Count == 0)
     {
         foreach (var track in _longestTrackCombinationList)
         {
             MixDiscCollection.Add(track);
         }
     }
 }
 internal void ClearPlaylists()
 {
     FilteredTrackCollection.Clear();
     ImportedTrackCollection.Clear();
     PreparationCollection.Clear();
     MixDiscCollection.Clear();
     ClearFilter();
     ClearMixDiscFilter();
     _mixDiscTracks = new List <List <ISong> >();
     EnableControls();
     EnableMixDiscControls();
     ProgressBarMessage = "Ready to import";
 }