예제 #1
0
        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");
            }
        }
예제 #2
0
        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);
        }
예제 #3
0
        /// <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);
            }
        }
예제 #4
0
        /// <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);
              }
        }
예제 #5
0
        /// <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);
              }
        }
예제 #7
0
        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;
        }