/// <summary> /// Load playlist from file. Returns null if it fails: /// </summary> /// <param name="path"></param> /// <param name="library"></param> /// <returns></returns> public static Playlist Load(String path, Library library) { Stream stream = null; Playlist loadedPlaylist = null; try { stream = File.OpenRead(path); XmlSerializer serializer = new XmlSerializer(typeof(Playlist)); loadedPlaylist = (Playlist)serializer.Deserialize(stream); } catch { return(null); } finally { if (stream != null) { stream.Close(); } } Playlist pl = new Playlist(library, loadedPlaylist.Name, loadedPlaylist.songPaths); library.LibraryChanged += pl.library_LibraryChanged; pl.CurrentIndex = loadedPlaylist.CurrentIndex; List <string> toBeRemoved = new List <string>(); foreach (string filePath in pl.songPaths) { if (!library.PathDictionary.Keys.Contains(filePath)) { toBeRemoved.Add(filePath); } } foreach (string filePath in toBeRemoved) { pl.Remove(filePath); } return(pl); }
/// <summary> /// Load playlist from file. Returns null if it fails: /// </summary> /// <param name="path"></param> /// <param name="library"></param> /// <returns></returns> public static Playlist Load(String path, Library library) { Stream stream = null; Playlist loadedPlaylist = null; try { stream = File.OpenRead(path); XmlSerializer serializer = new XmlSerializer(typeof(Playlist)); loadedPlaylist = (Playlist)serializer.Deserialize(stream); } catch { return null; } finally { if (stream != null) stream.Close(); } Playlist pl = new Playlist(library, loadedPlaylist.Name, loadedPlaylist.songPaths); library.LibraryChanged += pl.library_LibraryChanged; pl.CurrentIndex = loadedPlaylist.CurrentIndex; List<string> toBeRemoved = new List<string>(); foreach (string filePath in pl.songPaths) if (!library.PathDictionary.Keys.Contains(filePath)) toBeRemoved.Add(filePath); foreach (string filePath in toBeRemoved) pl.Remove(filePath); return pl; }