public async Task AddNew(StopOperationToken stopToken) { List <StorageFolder> folders = await GetStorageFolders(); List <IPlaylist> adds = new List <IPlaylist>(); foreach (StorageFolder folder in folders.OrderBy(f => f.Path)) { if (stopToken.IsStopped) { return; } if (Playlists.Any(p => p.AbsolutePath == folder.Path)) { continue; } IPlaylist playlist = new Playlist(folder.Path); playlist.Parent = Playlists; await playlist.Reset(stopToken); if (playlist.Songs.Count > 0) { adds.Add(playlist); } } if (stopToken.IsStopped) { return; } Playlists.Change(null, adds); }
private async void UpdateThisPlaylist_Click(object sender, RoutedEventArgs e) { StopOperationToken stopToken = new StopOperationToken(); Frame.Navigate(typeof(LoadingPage), stopToken); await viewModel.Update(stopToken); Frame.GoBack(); }
private async void SearchForNewSongs_Click(object sender, RoutedEventArgs e) { StopOperationToken stopToken = new StopOperationToken(); Frame.Navigate(typeof(LoadingPage), stopToken); await viewModel.AddNew(stopToken); Frame.GoBack(); }
private async void ResetAllSongs_Click(object sender, RoutedEventArgs e) { StopOperationToken stopToken = new StopOperationToken(); Frame.Navigate(typeof(LoadingPage), stopToken); await library.ResetSongs(stopToken); Frame.GoBack(); }
private async void AddNotExistingPlaylists_Click(object sender, RoutedEventArgs e) { StopOperationToken stopToken = new StopOperationToken(); Frame.Navigate(typeof(LoadingPage), stopToken); await library.AddNew(stopToken); Frame.GoBack(); }
private async void ResetThisPlaylist_Click(object sender, RoutedEventArgs e) { StopOperationToken stopToken = new StopOperationToken(); Frame.Navigate(typeof(LoadingPage), stopToken); await viewModel.Reset(stopToken); Frame.GoBack(); if (viewModel.Songs.Count == 0) Frame.GoBack(); }
private async void PlaylistsView_AddNewClick(object sender, PlaylistActionEventArgs e) { StopOperationToken stopToken = new StopOperationToken(); Frame.Navigate(typeof(LoadingPage), stopToken); await e.Playlist.AddNew(stopToken); if (!stopToken.IsStopped) { Frame.GoBack(); } }
public async Task ResetSongs(StopOperationToken stopToken) { foreach (IPlaylist playlist in Playlists.ToArray()) { if (stopToken.IsStopped) { return; } await playlist.ResetSongs(stopToken); } }
public async Task Reset(StopOperationToken stopToken) { IReadOnlyList <StorageFile> files = await GetStorageFolderFiles(); Song[] foundSongs = (await GetSongsFromStoragefiles(files, stopToken)).ToArray(); if (stopToken.IsStopped) { return; } Songs = new SongCollection(foundSongs, ShuffleType.Off, null); CurrentSong = Songs.Shuffle.FirstOrDefault(); }
private async void Library_Loaded(object sender, EventArgs args) { MobileDebug.Service.WriteEvent("MainPageLibLoaded"); if (library.Playlists.Count > 0) { return; } StopOperationToken stopToken = new StopOperationToken(); Frame.Navigate(typeof(LoadingPage), stopToken); await library.Reset(stopToken); Frame.GoBack(); AutoSaveLoad.CheckLibrary(library, "ResetedOnLoaded"); }
private async Task <Song> GetLoadedSong(StorageFile file, StopOperationToken stopToken) { if (stopToken.IsStopped) { return(null); } try { return(await Song.GetLoaded(file)); } catch (Exception e) { MobileDebug.Service.WriteEvent("LoadSongFail", e); } return(null); }
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); }
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); }
public async Task Reset(StopOperationToken stopToken) { IsPlaying = false; List <IPlaylist> refreshedPlaylists = new List <IPlaylist>(); List <StorageFolder> folders = await GetStorageFolders(); foreach (StorageFolder folder in await GetStorageFolders()) { IPlaylist playlist = new Playlist(folder.Path); playlist.Parent = Playlists; await playlist.Reset(stopToken); if (stopToken.IsStopped) { return; } if (playlist.Songs.Count > 0) { refreshedPlaylists.Add(playlist); } } IPlaylistCollection playlists = new PlaylistCollection(); playlists.Change(null, refreshedPlaylists); if (stopToken.IsStopped) { return; } Playlists = playlists; CurrentPlaylist = playlists.FirstOrDefault(); }
public async Task ResetSongs(StopOperationToken stopToken) { await Task.WhenAll(Songs.Select(s => s.Reset()).ToArray()); }
private async Task <IEnumerable <Song> > GetSongsFromStoragefiles(IEnumerable <StorageFile> files, StopOperationToken stopToken) { Task <Song>[] tasks = files.Select(f => GetLoadedSong(f, stopToken)).ToArray(); await Task.WhenAll(tasks); return(tasks.Select(t => t.Result).Where(s => s != null && !s.IsEmpty)); }
protected override void OnNavigatedTo(NavigationEventArgs e) { stopToken = (StopOperationToken)e.Parameter; }