public async Task Refresh() { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { try { PlaylistArt = null; TotalMinutes = string.Format("{0:0.0}", Math.Truncate(Songs.Sum(t => TimeSpan.ParseExact(t.Length, "mm\\:ss", CultureInfo.InvariantCulture).TotalMinutes) * 10) / 10) + " Minutes"; TotalSongs = Songs.Count.ToString() + " Songs"; if (Songs.Any(s => !string.IsNullOrEmpty(s.AttachedPicture)) && PlaylistArt == null) { BitmapImage image = new BitmapImage(new Uri(Songs.FirstOrDefault(s => !string.IsNullOrEmpty(s.AttachedPicture)).AttachedPicture, UriKind.RelativeOrAbsolute)); PlaylistArt = image; Themes.ThemeManager.SetThemeColor(Songs.FirstOrDefault(s => !string.IsNullOrEmpty(s.AttachedPicture)).AttachedPicture); } var mp3 = Songs?.FirstOrDefault(t => t.Path == Player.CurrentlyPlayingFile?.Path); if (mp3 != null) { mp3.State = PlayerState.Playing; } } catch (Exception ex) { BLogger.Logger.Error("Error occured while refreshing playlist.", ex); } }); }
void Refresh() { //refreshes the values by getting and setting the same properties. PlaylistArt = Songs.Any() ? PlaylistArt : null; TotalSongs = TotalSongs; TotalMinutes = TotalMinutes; }
public async Task OnGetAsync() { Artist = await _context.Artists.FindAsync(ArtistId); Songs = await _context.Songs.Where(s => s.ArtistId == ArtistId).ToListAsync(); CurrentSong = Songs.Any(s => s.Id == SongId) ? Songs.Find(s => s.Id == SongId) : Songs.FirstOrDefault(); }
public virtual SongInAlbum AddSong(Song song) { ParamIs.NotNull(() => song); var discNum = LastDiscNumber; var trackNum = (Songs.Any(s => s.DiscNumber == discNum) ? Songs.Where(s => s.DiscNumber == discNum).Max(s => s.TrackNumber) + 1 : 1); return(AddSong(song, trackNum, discNum)); }
/// <summary> /// Adds a PlaylistSong to the list if a song with the same hash doesn't already exist. /// </summary> /// <param name="song"></param> /// <returns>True if the song was added.</returns> public bool TryAdd(PlaylistSong song) { if (!Songs.Any(s => s.Hash.Equals(song.Hash))) { Songs.Add(song); IsDirty = true; return(true); } return(false); }
public bool TryRemove(string songHash) { songHash = songHash.ToUpper(); if (Songs.Any(s => songHash.Equals(s.Hash))) { int songsRemoved = Songs.RemoveAll(s => songHash.Equals(s.Hash)); IsDirty = true; return(true); } return(false); }
public void AddSong() { byte trackNo = 1; if (Songs.Any()) { trackNo = (byte)(Songs.Last().TrackNo + 1); } Songs.Add(new SongViewModel { Id = -1, TrackNo = trackNo }); }
public Subject First() { if (People.Any()) { return(People.First()); } if (Artists.Any()) { return(Artists.First()); } if (Songs.Any()) { return(Songs.First()); } return(null); }
void UpdatePanel(SongItem[] songs) { songs.ForEach(s => { if (!Songs.Any(o => ((ListViewItemData)o.Tag).ID == s.ID)) { CoverArts.Images.Add(s.ID.ToString(), s.CoverArt); var item = new ListViewItem { Text = s.SongName, ImageKey = s.ID.ToString(), Tag = new ListViewItemData { ID = s.ID } }; item.SubItems.Add(s.SongAuthor); Songs.Add(item); listView1.Items.Add(item); } }); this.Text = string.Format(WindowTitle, Songs.Count(o => ((ListViewItemData)o.Tag).State == ListViewItemData._State.Processed), Songs.Count, CurrentOffset); LabelOffset.Text = string.Format(labelText, CurrentOffset / 15); progressBar1.Maximum = Songs.Count; }
public async Task SaveAllAsync() { await SaveAlbumInformationAsync(); var songs = Mapper.Map <Song[]>(Songs); // first, check validity of song data if (Songs.Any(s => !string.IsNullOrEmpty(s.Error))) { var message = Songs.Where(s => s.Error != "") .Select(s => s.TrackNo.ToString()) .Aggregate((t, s) => t + ", " + s); MessageBox.Show($"Errors in songs #{message}"); return; } var i = 0; foreach (var song in songs) { song.AlbumId = Album.Id; if (song.Id == -1) { await _songService.AddSongAsync(song); // update song Id after adding it to database Songs[i++].Id = song.Id; } else { await _songService.UpdateSongAsync(song); } } }
public virtual bool HasSong(Song song) { ParamIs.NotNull(() => song); return(Songs.Any(a => song.Equals(a.Song))); }
/// <summary> /// Gets the next free track number for a particular disc on this album. /// </summary> /// <param name="discNum">Disc number, starting from 1.</param> /// <returns>Next free track number on the specified disc, starting from 1.</returns> public virtual int GetNextTrackNumber(int discNum) { return(Songs.Any(s => s.DiscNumber == discNum) ? Songs.Where(s => s.DiscNumber == discNum).Max(s => s.TrackNumber) + 1 : 1); }
public bool ContainsSong(SongData songData) { return(Songs.Any(s => s.ID == songData.ID)); }
public bool ContainsSongWithID(string id) { return(Songs.Any(s => s.ID == id)); }