예제 #1
0
        public async Task Clear()
        {
            clear();
#if !Windows10
            savePlaylistToBackgroundDB();
#endif
            OnPlaylistChanged?.Invoke();
        }
예제 #2
0
 public PlaybackService()
 {
     _playlistService = new PlaylistService(this);
     _playlistService.OnPlaylistEndReached  += () => OnPlaylistEndReached?.Invoke();
     _playlistService.OnPlaylistChanged     += () => OnPlaylistChanged?.Invoke();
     _playlistService.OnCurrentMediaChanged += onCurrentMediaChanged;
     _playlistService.OnRepeatChanged       += (v) => OnRepeatChanged?.Invoke(v);
     PlayingType = PlayingType.NotPlaying;
 }
예제 #3
0
 public void RemoveMedia(IMediaItem media)
 {
     // CurrentMedia relies on the underlying playlist, so we can't check after removal
     if (_playlist.Remove(media) == true)
     {
         _nonShuffledPlaylist.Remove(media);
         OnPlaylistChanged?.Invoke();
     }
 }
예제 #4
0
 public void AddToPlaylist(IEnumerable <IMediaItem> toAdd)
 {
     foreach (var m in toAdd)
     {
         _playlist.Add(m);
     }
     OnPlaylistChanged?.Invoke();
     savePlaylistToBackgroundDB();
 }
예제 #5
0
 private void ToggleShuffle()
 {
     if (!_isShuffled)
     {
         shufflePlaylist(_index);
         _isShuffled = true;
     }
     else
     {
         var index = _nonShuffledPlaylist.IndexOf(CurrentMedia);
         _playlist   = _nonShuffledPlaylist;
         _index      = index;
         _isShuffled = false;
     }
     OnPlaylistChanged?.Invoke();
 }
예제 #6
0
 public async Task SetPlaylist(IEnumerable <IMediaItem> mediaItems, int startingIndex = 0, bool shuffle = false)
 {
     clear();
     foreach (var m in mediaItems)
     {
         _playlist.Add(m);
     }
     if (shuffle)
     {
         shufflePlaylist();
         _isShuffled = true;
     }
     OnPlaylistChanged?.Invoke();
     Index = startingIndex;
     savePlaylistToBackgroundDB();
 }
예제 #7
0
        public void Restore()
        {
            if (!ApplicationSettingsHelper.Contains(nameof(Index)))
            {
                return;
            }

            var playlist = BackgroundTrackRepository.LoadPlaylist();

            if (!playlist.Any())
            {
                return;
            }

            var trackIds         = playlist.Select(node => node.TrackId);
            var restoredplaylist = new SmartCollection <IMediaItem>();

            foreach (int trackId in trackIds)
            {
                var trackItem = Locator.MediaLibrary.LoadTrackById(trackId);
                if (trackItem != null)
                {
                    restoredplaylist.Add(trackItem);
                }
            }

            if (restoredplaylist.Count == 0)
            {
                return;
            }
            clear();
            _playlist = restoredplaylist;
            OnPlaylistChanged?.Invoke();
            _index = (int)ApplicationSettingsHelper.ReadSettingsValue(nameof(Index));
            OnCurrentMediaChanged?.Invoke(_playlist[_index], true);
        }
예제 #8
0
 public async Task Clear()
 {
     clear();
     savePlaylistToBackgroundDB();
     OnPlaylistChanged?.Invoke();
 }