private void clear() { BackgroundTrackRepository.Clear(); _playlist.Clear(); _nonShuffledPlaylist?.Clear(); _index = 0; _isShuffled = false; }
private void clear() { #if !Windows10 BackgroundTrackRepository.Clear(); #endif _playlist.Clear(); _nonShuffledPlaylist?.Clear(); _index = 0; _isShuffled = false; }
private async Task RestorePlaylist() { try { var playlist = await 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 = await Locator.MediaLibrary.LoadTrackById(trackId); if (trackItem != null) { restoredplaylist.Add(trackItem); } } if (!ApplicationSettingsHelper.Contains(nameof(CurrentMedia))) { return; } var index = (int)ApplicationSettingsHelper.ReadSettingsValue(nameof(CurrentMedia)); if (restoredplaylist.Any()) { if (index == -1) { // Background Audio was terminated // We need to reset the playlist, or set the current track 0. ApplicationSettingsHelper.SaveSettingsValue(nameof(CurrentMedia), 0); index = 0; } SetCurrentMediaPosition(index); } if (CurrentMedia >= restoredplaylist.Count || CurrentMedia == -1) { CurrentMedia = 0; } if (restoredplaylist.Any()) { await SetPlaylist(restoredplaylist, true, false, restoredplaylist[CurrentMedia]); } } catch (Exception e) { Debug.WriteLine("Failed to restore the playlist"); } }
public async Task ResetCollection() { await BackgroundTrackRepository.Clear(); Playlist.Clear(); CurrentMedia = -1; NonShuffledPlaylist?.Clear(); IsShuffled = false; Playback_MediaSet(null); IsRunning = false; }
public async Task <bool> SetPlaylist(IEnumerable <IMediaItem> mediaItems, bool reset, bool play, IMediaItem media) { if (reset) { await ResetCollection(); } if (mediaItems != null) { var count = (uint)Playlist.Count; var trackItems = mediaItems.OfType <TrackItem>(); var backgroundTrackItems = new List <BackgroundTrackItem>(); foreach (var track in trackItems) { backgroundTrackItems.Add(new BackgroundTrackItem() { TrackId = track.Id }); track.Index = count; count++; } Playlist.AddRange(mediaItems); await BackgroundTrackRepository.Add(backgroundTrackItems); IsRunning = true; } if (media != null && Playlist.Any()) { var mediaInPlaylist = Playlist.FirstOrDefault(x => x.Path == media.Path); if (mediaInPlaylist == null) { return(false); } var mediaIndex = Playlist.IndexOf(mediaInPlaylist); if (mediaIndex < 0) { return(false); } SetCurrentMediaPosition(mediaIndex); Playback_MediaSet.Invoke(mediaInPlaylist); await SetMedia(mediaInPlaylist, play); } return(true); }
private void savePlaylistToBackgroundDB() { var trackItems = _playlist.OfType <TrackItem>(); var backgroundTrackItems = new List <BackgroundTrackItem>(); foreach (var track in trackItems) { backgroundTrackItems.Add(new BackgroundTrackItem() { TrackId = track.Id }); } BackgroundTrackRepository.Add(backgroundTrackItems); }
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); }