public void Save(SortableBindingList <PlayListData> playlist, string fileName, bool useRelativePath) { using (StreamWriter writer = new StreamWriter(fileName, false, Encoding.Default)) { writer.WriteLine(START_PLAYLIST_MARKER); for (int i = 0; i < playlist.Count; i++) { PlayListData item = playlist[i]; string musicFile = item.FileName; if (useRelativePath) { musicFile = Path.Combine( Util.RelativePathTo(Path.GetDirectoryName(fileName), Path.GetDirectoryName(item.FileName)), Path.GetFileName(item.FileName)); } writer.WriteLine("File{0}={1}", i + 1, musicFile); writer.WriteLine("Title{0}={1}", i + 1, string.Format("{0} - {1}", item.Artist, item.Title)); writer.WriteLine("Length{0}={1}", i + 1, Util.DurationToSeconds(item.Duration)); } writer.WriteLine("NumberOfEntries={0}", playlist.Count); writer.WriteLine("Version=2"); } }
private bool AddItem(string songName, string duration, string fileName) { if (fileName == null || fileName.Length == 0) { return(false); } Util.GetQualifiedFilename(basePath, ref fileName); PlayListData newItem = new PlayListData(songName, fileName, duration); playlist.Add(newItem); return(true); }
/// <summary> /// Tracks are Dropped on the Playlist Grid /// </summary> /// <param name = "sender"></param> /// <param name = "e"></param> private void playListGrid_DragDrop(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof(List <TrackData>))) { return; } List <TrackData> selectedRows = (List <TrackData>)e.Data.GetData(typeof(List <TrackData>)); foreach (TrackData track in selectedRows) { PlayListData playListItem = new PlayListData(); playListItem.FileName = track.FullFileName; playListItem.Artist = track.Artist; playListItem.Album = track.Album; playListItem.Title = track.Title; playListItem.Duration = track.Duration.Substring(3, 5); // Just get Minutes and seconds _player.PlayList.Add(playListItem); } }
/// <summary> /// Save as Playlist /// </summary> /// <param name = "o"></param> /// <param name = "e"></param> public void tracksGrid_SaveAsPlayList(object o, EventArgs e) { SortableBindingList<PlayListData> playList = new SortableBindingList<PlayListData>(); foreach (DataGridViewRow row in tracksGrid.Rows) { if (!row.Selected) continue; TrackData track = Options.Songlist[row.Index]; PlayListData playListItem = new PlayListData(); playListItem.FileName = track.FullFileName; playListItem.Title = track.Title; playListItem.Artist = track.Artist; playListItem.Album = track.Album; playListItem.Duration = track.Duration.Substring(3, 5); // Just get Minutes and seconds playList.Add(playListItem); } SaveFileDialog sFD = new SaveFileDialog(); sFD.InitialDirectory = _main.CurrentDirectory; sFD.Filter = "M3U Format (*.m3u)|*.m3u|PLS Format (*.pls)|*.pls"; if (sFD.ShowDialog() == DialogResult.OK) { IPlayListIO saver = PlayListFactory.CreateIO(sFD.FileName); saver.Save(playList, sFD.FileName, true); } }
/// <summary> /// Add to Playlist /// </summary> /// <param name = "o"></param> /// <param name = "e"></param> public void tracksGrid_AddToPlayList(object o, EventArgs e) { // get current playlist count int playlistCount = _main.Player.PlayList.Count; foreach (DataGridViewRow row in tracksGrid.Rows) { if (!row.Selected) continue; TrackData track = Options.Songlist[row.Index]; PlayListData playListItem = new PlayListData(); playListItem.FileName = track.FullFileName; playListItem.Title = track.Title; playListItem.Artist = track.Artist; playListItem.Album = track.Album; playListItem.Duration = track.Duration.Substring(3, 5); // Just get Minutes and seconds _main.Player.PlayList.Add(playListItem); } // Start playing the songs just added, if player is idle if (!_main.Player.IsPlaying && _main.Player.PlayList.Count > playlistCount) { int index = playlistCount; if (index == -1) { index = 0; } _main.Player.Play(index); } }
/// <summary> /// Tracks are Dropped on the Playlist Grid /// </summary> /// <param name = "sender"></param> /// <param name = "e"></param> private void playListGrid_DragDrop(object sender, DragEventArgs e) { if (!e.Data.GetDataPresent(typeof (List<TrackData>))) { return; } List<TrackData> selectedRows = (List<TrackData>)e.Data.GetData(typeof (List<TrackData>)); foreach (TrackData track in selectedRows) { PlayListData playListItem = new PlayListData(); playListItem.FileName = track.FullFileName; playListItem.Artist = track.Artist; playListItem.Album = track.Album; playListItem.Title = track.Title; playListItem.Duration = track.Duration.Substring(3, 5); // Just get Minutes and seconds _player.PlayList.Add(playListItem); } }
public bool Load(SortableBindingList <PlayListData> playlist, string fileName) { string basePath = String.Empty; Stream stream; basePath = Path.GetDirectoryName(Path.GetFullPath(fileName)); stream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); playlist.Clear(); Encoding fileEncoding = Encoding.Default; StreamReader file = new StreamReader(stream, fileEncoding, true); if (file == null) { return(false); } string line; line = file.ReadLine(); if (line == null) { file.Close(); return(false); } string strLine = line.Trim(); //CUtil::RemoveCRLF(strLine); if (strLine != START_PLAYLIST_MARKER) { fileEncoding = Encoding.Default; stream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); file = new StreamReader(stream, fileEncoding, true); } string infoLine = ""; string durationLine = ""; fileName = ""; line = file.ReadLine(); while (line != null) { strLine = line.Trim(); //CUtil::RemoveCRLF(strLine); int equalPos = strLine.IndexOf("="); if (equalPos > 0) { string leftPart = strLine.Substring(0, equalPos); equalPos++; string valuePart = strLine.Substring(equalPos); leftPart = leftPart.ToLower(); if (leftPart.StartsWith("file")) { if (valuePart.Length > 0 && valuePart[0] == '#') { line = file.ReadLine(); continue; } if (fileName.Length != 0) { PlayListData newItem = new PlayListData(infoLine, fileName, "0"); playlist.Add(newItem); fileName = ""; infoLine = ""; durationLine = ""; } fileName = valuePart; } if (leftPart.StartsWith("title")) { infoLine = valuePart; } else { if (infoLine == "") { infoLine = Path.GetFileName(fileName); } } if (leftPart.StartsWith("length")) { durationLine = valuePart; } if (durationLine.Length > 0 && infoLine.Length > 0 && fileName.Length > 0) { string duration = durationLine; // Remove trailing slashes. Might cause playback issues if (fileName.EndsWith("/")) { fileName = fileName.Substring(0, fileName.Length - 1); } Util.GetQualifiedFilename(basePath, ref fileName); PlayListData newItem = new PlayListData(infoLine, fileName, Util.SecondsToHMSString(duration)); playlist.Add(newItem); fileName = ""; infoLine = ""; durationLine = ""; } } line = file.ReadLine(); } file.Close(); if (fileName.Length > 0) { PlayListData newItem = new PlayListData(infoLine, fileName, "0"); } return(true); }
public bool Load(SortableBindingList<PlayListData> playlist, string fileName) { string basePath = String.Empty; Stream stream; basePath = Path.GetDirectoryName(Path.GetFullPath(fileName)); stream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); playlist.Clear(); Encoding fileEncoding = Encoding.Default; StreamReader file = new StreamReader(stream, fileEncoding, true); if (file == null) { return false; } string line; line = file.ReadLine(); if (line == null) { file.Close(); return false; } string strLine = line.Trim(); //CUtil::RemoveCRLF(strLine); if (strLine != START_PLAYLIST_MARKER) { fileEncoding = Encoding.Default; stream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.Read); file = new StreamReader(stream, fileEncoding, true); } string infoLine = ""; string durationLine = ""; fileName = ""; line = file.ReadLine(); while (line != null) { strLine = line.Trim(); //CUtil::RemoveCRLF(strLine); int equalPos = strLine.IndexOf("="); if (equalPos > 0) { string leftPart = strLine.Substring(0, equalPos); equalPos++; string valuePart = strLine.Substring(equalPos); leftPart = leftPart.ToLower(); if (leftPart.StartsWith("file")) { if (valuePart.Length > 0 && valuePart[0] == '#') { line = file.ReadLine(); continue; } if (fileName.Length != 0) { PlayListData newItem = new PlayListData(infoLine, fileName, "0"); playlist.Add(newItem); fileName = ""; infoLine = ""; durationLine = ""; } fileName = valuePart; } if (leftPart.StartsWith("title")) { infoLine = valuePart; } else { if (infoLine == "") { infoLine = Path.GetFileName(fileName); } } if (leftPart.StartsWith("length")) { durationLine = valuePart; } if (durationLine.Length > 0 && infoLine.Length > 0 && fileName.Length > 0) { string duration = durationLine; // Remove trailing slashes. Might cause playback issues if (fileName.EndsWith("/")) { fileName = fileName.Substring(0, fileName.Length - 1); } Util.GetQualifiedFilename(basePath, ref fileName); PlayListData newItem = new PlayListData(infoLine, fileName, Util.SecondsToHMSString(duration)); playlist.Add(newItem); fileName = ""; infoLine = ""; durationLine = ""; } } line = file.ReadLine(); } file.Close(); if (fileName.Length > 0) { PlayListData newItem = new PlayListData(infoLine, fileName, "0"); } return true; }
private bool AddItem(string songName, string duration, string fileName) { if (fileName == null || fileName.Length == 0) { return false; } Util.GetQualifiedFilename(basePath, ref fileName); PlayListData newItem = new PlayListData(songName, fileName, duration); playlist.Add(newItem); return true; }