public async Task <string> LoadPlaylistDataAsync() { var fileDialog = new CommonOpenFileDialog { Title = "Select a playlist to load" }; fileDialog.Filters.Add(new CommonFileDialogFilter("M3U Playlist Files", "*.m3u")); if (fileDialog.ShowDialog() != CommonFileDialogResult.Ok) { await Task.Delay(1); return(LoadedPlaylistFile); } TrackList.Clear(); ViewModelStatus = "Loading Playlist..."; LoadedPlaylistFile = ""; var selectedFile = new FileInfo(fileDialog.FileName); var loadedTracks = await PlaylistFileProcessor.LoadPlaylistDataAsync(selectedFile.FullName); Environment.CurrentDirectory = selectedFile.DirectoryName; foreach (var track in loadedTracks) { var trackData = await Task.Run(() => MediaFileProcessor.LoadTrackMetadata(track)); if (trackData != null) { TrackList.Add(trackData); } } ViewModelStatus = await Task.Run(() => GetPlaylistSummary()); //LoadedPlaylistFile = selectedFile.FullName; return(selectedFile.FullName); }
public async Task <string> SavePlaylistDataAsync() { var fileDialog = new CommonSaveFileDialog { Title = "Save Playlist...", DefaultExtension = "m3u", AlwaysAppendDefaultExtension = true }; fileDialog.Filters.Add(new CommonFileDialogFilter("M3U Playlist Files", "*.m3u")); if (fileDialog.ShowDialog() != CommonFileDialogResult.Ok) { await Task.Delay(1); return(LoadedPlaylistFile); } ViewModelStatus = "Loading Playlist..."; var buffer = new StringBuilder(); var selectedFile = new FileInfo(fileDialog.FileName); foreach (var track in TrackList) { var filePath = Path.GetRelativePath(selectedFile.DirectoryName, track.ResolvedPath); buffer.AppendLine(filePath); } await PlaylistFileProcessor.SavePlaylistDataAsync(selectedFile.FullName, buffer.ToString()); ViewModelStatus = await Task.Run(() => GetPlaylistSummary()); return(selectedFile.FullName); }