Example #1
0
        /// <summary>
        /// Удаление трека
        /// </summary>
        public void RemoveTrack(RocksmithTrack track)
        {
            if (!Tracks.Contains(track))
            {
                return;
            }

            Tracks.Remove(track);

            TrackRemoveEvent?.Invoke(new TrackEventArgs {
                Track = track
            });

            // После удаления из очереди проверяем треки, которые можно добавить из отложенных
            RocksmithTrack addTrack = DeferredTracks.FirstOrDefault(t => Tracks.Count(tt => tt.User == t.User) < userLimit);

            if (addTrack != null)
            {
                DeferredTracks.Remove(addTrack);
                Tracks.Add(addTrack);

                TrackAddEvent?.Invoke(new TrackEventArgs {
                    Track = addTrack
                });
            }

            // Сохранение очередей в файл
            Save();
        }
Example #2
0
        /// <summary>
        /// Добавление трека
        /// </summary>
        public string Add(RocksmithTrack track)
        {
            // Если список треков от пользователя достиг лимита, то добавляем в отложенную очередь
            int count = Tracks.Count(t => t.User == track.User);

            if (count >= userLimit)
            {
                DeferredTracks.Add(track);

                int deferredTracksCount = DeferredTracks.Count(t => t.User == track.User);

                // Сохранение очередей в файл
                Save();

                return($"{track.User}, трек добавлен в отложенную очередь, {count + deferredTracksCount} треков всего");
            }

            TrackAddEvent?.Invoke(new TrackEventArgs {
                Track = track
            });

            Tracks.Add(track);

            // Сохранение очередей в файл
            Save();

            return($"{track.User}, трек добавлен.");
        }
        /// <summary>
        ///     Binds the data.
        /// </summary>
        private void BindData()
        {
            var albumArtists = Tracks.Select(t => t.Artist)
                               .Union(Tracks.Select(t => t.AlbumArtist))
                               .Distinct()
                               .Where(aa => aa != "Various")
                               .OrderBy(aa => Tracks.Count(t => t.Artist == aa) + Tracks.Count(t => t.AlbumArtist == aa))
                               .ToList();

            if (albumArtists.Count > 1)
            {
                albumArtists.Insert(0, "Various");
            }

            cmbAlbumArtist.DataSource = albumArtists;

            txtAlbumName.Text = PlaylistName;
            if (txtAlbumName.Text == "" && albumArtists.Count == 1)
            {
                txtAlbumName.Text = albumArtists[0];
            }

            btnOK.Enabled = Tracks.Count > 0;


            var settings = Settings.Default;

            txtOutputFolder.Text = settings.ExportPlaylistFolder;
        }
Example #4
0
        public bool TracksCountValid()
        {
            if (Tracks == null)
            {
                return(false);
            }

            var trackCount = Tracks.Count();

            if (trackCount > 0 && trackCount < MaxTrackCount)
            {
                return(true);
            }

            return(false);
        }
Example #5
0
        public void Handle(UnselectExistingTracksReplyEvent message)
        {
            if (message.Unselect)
            {
                foreach (var existingTrack in Tracks.Where(track => track.ExistsLocally))
                {
                    existingTrack.Selected = false;
                }

                _Logger.Info(String.Format("{0} tracks were automatically unselected since they already exist locally", Tracks.Count(track => track.ExistsLocally)));
            }
        }