Ejemplo n.º 1
0
        internal async Task <List <Song> > GetSongsAsync()
        {
            if (IsOnline && Songs != null && Songs.Count > 0)
            {
                return(Songs);
            }
            if (Songs.Count == SongsID.Length)
            {
                return(Songs);
            }
            Songs.Clear();
            var opr = SQLOperator.Current();
            var s   = await opr.GetSongsAsync(SongsID);

            var s1 = s.OrderBy(x => x.Track);

            s1 = s1.OrderBy(x => x.Disc);
            Songs.AddRange(s1);

            var t = ThreadPool.RunAsync(async work =>
            {
                SongsID = s.Select(x => x.ID).ToArray();
                if (SongsID.IsNullorEmpty())
                {
                    await SQLOperator.Current().RemoveAlbumAsync(ID);
                }
                else
                {
                    await SQLOperator.Current().UpdateAlbumAsync(new Album(ID)
                    {
                        Songs               = SongsID,
                        Name                = Name ?? string.Empty,
                        Genres              = Genres ?? new string[] { },
                        Year                = Year,
                        AlbumSort           = AlbumSort ?? string.Empty,
                        TrackCount          = TrackCount,
                        DiscCount           = DiscCount,
                        AlbumArtists        = AlbumArtists ?? new string[] { },
                        AlbumArtistsSort    = AlbumArtistsSort ?? new string[] { },
                        ReplayGainAlbumGain = ReplayGainAlbumGain,
                        ReplayGainAlbumPeak = ReplayGainAlbumPeak,
                        PicturePath         = ArtworkUri == null ? string.Empty : ArtworkUri.AbsolutePath ?? string.Empty,
                    });
                }
            });

            return(s1.ToList());
        }
Ejemplo n.º 2
0
        internal async Task AddAsync(int[] SongID)
        {
            var songs = await Song.GetAsync(SongID);

            var list = new List <int>();

            foreach (var song in songs)
            {
                if (SongsID.Contains(song.ID))
                {
                    return;
                }
                list.Add(song.ID);
                if (!song.PicturePath.IsNullorEmpty())
                {
                    bool b = true;
                    // confirm no duplicate
                    foreach (var item in HeroArtworks)
                    {
                        if (item.OriginalString == song.PicturePath)
                        {
                            b = false;
                            break;
                        }
                    }
                    if (b)
                    {
                        HeroArtworks.Insert(0, new Uri(song.PicturePath));
                    }
                }
            }

            list.AddRange(SongsID);
            SongsID = list.ToArray();

            if (HeroArtworks.Count > 4)
            {
                HeroArtworks.RemoveRange(4, HeroArtworks.Count - 4);
            }

            await SaveAsync();
        }