static void PrintCurrentTime() { while (state.Equals(PlaybackState.Playing)) { Console.Clear(); PlaybackUsage(24); ShowPlaylist(songsList); //for(int i = 0; i < (long)reader.TotalTime.Seconds; i++) //{ Console.WriteLine("{0}:{1}:{2}", reader.CurrentTime.Hours, reader.CurrentTime.Minutes, reader.CurrentTime.Seconds); //Console.Write(">"); Thread.Sleep(1000); //} //Console.WriteLine(); } }
static void Main(string[] args) { //Basic User Interface init MainPage(); //songs list. Add songs to the song list; songsList = new List <string>(); songsList.Clear(); CreateSongList(songsList); //song name songName = ""; //songs quantity; int songQuantity = songsList.Count(); //select option flags; string option = ""; isSelected = false; //song selector string getNum = ""; songNum = 0; string getOpt = ""; isLegalNum = false; //create waveoutEvent waveOut = new WaveOutEvent(); waveOut.PlaybackStopped += OnPlaybackStopped; //player Manager; //AUTORESETEVENT playMode = false; orderLoopMode = false; //program running state; bool isRunning = false; //start program isRunning = true; while (isRunning) //Main loop { while (!isSelected) { option = Console.ReadLine(); switch (option) { case "1": Console.Clear(); PlaybackUsage(songQuantity); ShowPlaylist(songsList); isSelected = true; //isLegalNum = false; break; case "2": isSelected = true; break; case "q": isSelected = true; isRunning = false; Environment.Exit(0); break; default: printErrors(ERRORS.ERRORS_OPTION_IS_ILLEGAL); isSelected = false; option = ""; break; } } isSelected = false; /*opton 1*/ while (option.Equals("1")) { //1.show play list //2.init the function of playing music while (!isSelected) { getNum = Console.ReadLine(); switch (getNum) { case "b": option = ""; GoMainPage(); isSelected = true; isLegalNum = false; break; case "o": Console.WriteLine("Enable list loop mode."); orderLoopMode = true; isLegalNum = true; isSelected = true; songNum = 1; break; case "p": isSelected = true; isLegalNum = true; if (songNum == 0) { songNum = 1; } break; default: if (int.TryParse(getNum, out songNum)) { songNum = int.Parse(getNum); if (songNum <= 0) { printErrors(ERRORS.ERRORS_OPTION_IS_LOWER_THAN_ZERO); isSelected = false; //selectError = true; } else if (songNum > songQuantity) { printErrors(ERRORS.ERRORS_OPTION_IS_LARGER_THAN_SONGS_QUANTITY); isSelected = false; //selectError = true; } else { isSelected = true; isLegalNum = true;; //getOpt = "p"; } } else { printErrors(ERRORS.ERRORS_OPTION_IS_ILLEGAL); isSelected = false; //selectError = true; } //Console.WriteLine("default is over"); break; } //Console.WriteLine("new area"); } // while(!isSelected); //getNum = ""; if (isLegalNum) { songName = songsList[songNum - 1].Substring(9); state = PlaybackState.Stopped; Thread thread = new Thread(PrintCurrentTime); /*if(waveOut == null) * { * waveOut = new WaveOutEvent(); * waveOut.PlaybackStopped += OnPlaybackStopped; * * }*/ reader = new MediaFoundationReader(songsList[songNum - 1]); waveOut.Init(reader); playMode = true; getOpt = "p"; PrintSign(50, "-"); while (playMode) { if (getOpt.Equals("")) { getOpt = Console.ReadLine(); } switch (getOpt) { case "b": Console.Clear(); waveOut.Stop(); if (reader != null) { reader.Dispose(); reader = null; } if (waveOut != null) { waveOut.Dispose(); //waveOut = null; } GoMainPage(); isSelected = true; isLegalNum = false; playMode = false; songNum = 0; getNum = ""; option = ""; break; case "c": Console.Clear(); PlaybackUsage(songQuantity); ShowPlaylist(songsList); break; case "o": if (!orderLoopMode) { orderLoopMode = true; Console.WriteLine("Enable list loop mode."); } else { orderLoopMode = false; Console.WriteLine("Disable list loop mode."); } //songNum = 1; break; case "p": if (!state.Equals(PlaybackState.Playing)) { waveOut.Play(); state = PlaybackState.Playing; Console.WriteLine("Playing: {0} Total time: {1}:{2}:{3}", songName, reader.TotalTime.Hours, reader.TotalTime.Minutes, reader.TotalTime.Seconds); if (thread.ThreadState.Equals(ThreadState.Unstarted)) { thread.Start(); } else if (thread.ThreadState.Equals(ThreadState.Stopped)) { thread = new Thread(PrintCurrentTime); thread.Start(); } } break; case "s": state = PlaybackState.Stopped; orderLoopMode = false; waveOut.Stop(); if (reader != null) { reader.Dispose(); reader = null; } if (waveOut != null) { waveOut.Dispose(); //waveOut = null; } Console.Clear(); PlaybackUsage(songQuantity); ShowPlaylist(songsList); Console.WriteLine("Stopped: {0}.", songName); playMode = false; isSelected = false; //songNum = 0; getNum = ""; break; case "h": if (state.Equals(PlaybackState.Playing)) { waveOut.Pause(); state = PlaybackState.Paused; Console.WriteLine("Paused: {0}.", songName); } break; default: if (int.TryParse(getOpt, out songNum)) { waveOut.Stop(); if (waveOut != null) { waveOut.Dispose(); //waveOut = null; } if (reader != null) { reader.Dispose(); reader = null; } int tempSongNum = int.Parse(getOpt); if (!(tempSongNum < 0) && !(tempSongNum > songQuantity)) { songNum = tempSongNum; reader = new MediaFoundationReader(songsList[songNum - 1]); } playMode = false; isSelected = true; } else { printErrors(ERRORS.ERRORS_OPTION_IS_ILLEGAL); Console.WriteLine("Please try again."); } break; } //Console.WriteLine(reader.TotalTime.Subtract(reader.CurrentTime)); getOpt = ""; /*if (autoplay) * { * Thread.Sleep(1000*30); * * getOpt = "p"; * }*/ } } } //while option == 1 } //isRunning Console.ReadLine(); Console.ReadLine(); }