/// <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(); }
/// <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; }
public bool TracksCountValid() { if (Tracks == null) { return(false); } var trackCount = Tracks.Count(); if (trackCount > 0 && trackCount < MaxTrackCount) { return(true); } return(false); }
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))); } }