/// <summary> /// If a song is being played and its current time is higher than 2 seconds, /// then it will rewind to the beginning. If there's no song being played, then /// the previous song played will be played. /// </summary> /// <param name="sender">Rewind button</param> /// <param name="e">Button event</param> private void RewindButton_Click(object sender, RoutedEventArgs e) { if (reader != null && !isPlayerWaveOutAvailable) { if (reader.GetType() == typeof(WaveFileReader)) { var waveFileReader = (WaveFileReader)reader; if (waveFileReader.CurrentTime.TotalSeconds >= 3) { waveFileReader.CurrentTime = TimeSpan.FromMilliseconds(0); SetPlayerData(reader); } else { PreviousSong(); } } else if (reader.GetType() == typeof(Mp3FileReader)) { var mp3FileReader = (Mp3FileReader)reader; if (mp3FileReader.CurrentTime.TotalSeconds >= 3) { mp3FileReader.CurrentTime = TimeSpan.FromMilliseconds(0); SetPlayerData(reader); } else { PreviousSong(); } } } }
/// <summary> /// Updates the player data with the reader received. /// </summary> /// <param name="reader">Reader that stores the song data</param> private void SetPlayerData(IWaveProvider reader) { Application.Current.Dispatcher.Invoke(delegate { if (reader.GetType() == typeof(WaveFileReader)) { var waveFileReader = (WaveFileReader)reader; songCurrentTimeTextBlock.Text = waveFileReader.CurrentTime.ToString("mm\\:ss"); songSlider.Value = waveFileReader.CurrentTime.Ticks * songSlider.Maximum / waveFileReader.TotalTime.Ticks; } else if (reader.GetType() == typeof(Mp3FileReader)) { var mp3FileReader = (Mp3FileReader)reader; songCurrentTimeTextBlock.Text = mp3FileReader.CurrentTime.ToString("mm\\:ss"); songSlider.Value = mp3FileReader.CurrentTime.Ticks * songSlider.Maximum / mp3FileReader.TotalTime.Ticks; } }); }