Ejemplo n.º 1
0
 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);
         }
     });
 }
Ejemplo n.º 2
0
 void Refresh()
 {
     //refreshes the values by getting and setting the same properties.
     PlaylistArt  = Songs.Any() ? PlaylistArt : null;
     TotalSongs   = TotalSongs;
     TotalMinutes = TotalMinutes;
 }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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));
        }
Ejemplo n.º 5
0
 /// <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);
 }
Ejemplo n.º 6
0
 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);
 }
Ejemplo n.º 7
0
        public void AddSong()
        {
            byte trackNo = 1;

            if (Songs.Any())
            {
                trackNo = (byte)(Songs.Last().TrackNo + 1);
            }

            Songs.Add(new SongViewModel {
                Id = -1, TrackNo = trackNo
            });
        }
Ejemplo n.º 8
0
        public Subject First()
        {
            if (People.Any())
            {
                return(People.First());
            }
            if (Artists.Any())
            {
                return(Artists.First());
            }
            if (Songs.Any())
            {
                return(Songs.First());
            }

            return(null);
        }
Ejemplo n.º 9
0
 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;
 }
Ejemplo n.º 10
0
        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);
                }
            }
        }
Ejemplo n.º 11
0
        public virtual bool HasSong(Song song)
        {
            ParamIs.NotNull(() => song);

            return(Songs.Any(a => song.Equals(a.Song)));
        }
Ejemplo n.º 12
0
 /// <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);
 }
Ejemplo n.º 13
0
 public bool ContainsSong(SongData songData)
 {
     return(Songs.Any(s => s.ID == songData.ID));
 }
Ejemplo n.º 14
0
 public bool ContainsSongWithID(string id)
 {
     return(Songs.Any(s => s.ID == id));
 }