예제 #1
0
        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);
        }
예제 #2
0
        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);
        }