Esempio n. 1
0
        public async Task AddNew(StopOperationToken stopToken)
        {
            IReadOnlyList <StorageFile> files = await GetStorageFolderFiles();

            Song[] songs = Songs.ToArray();

            IEnumerable <StorageFile> addFiles = files.Where(f => !songs.Any(s => s.Path == f.Path));

            Song[] addSongs = (await GetSongsFromStoragefiles(addFiles, stopToken)).ToArray();

            if (stopToken.IsStopped)
            {
                return;
            }
            if (addSongs.Length == 0)
            {
                return;
            }

            Songs.Change(null, addSongs);
        }
Esempio n. 2
0
        public async Task Update(StopOperationToken stopToken)
        {
            Song[] songs = Songs.ToArray();
            IReadOnlyList <StorageFile> files = await GetStorageFolderFiles();

            IEnumerable <StorageFile> addFiles = files.Where(f => songs.All(s => s.Path != f.Path));

            Song[] addSongs    = (await GetSongsFromStoragefiles(addFiles, stopToken)).ToArray();
            Song[] removeSongs = songs.Where(s => files.All(f => f.Path != s.Path)).ToArray();

            if (stopToken.IsStopped)
            {
                return;
            }

            if (Songs.Count + addSongs.Length - removeSongs.Length == 0)
            {
                Parent.Remove(this);
                return;
            }

            Songs.Change(removeSongs, addSongs);
        }