Create SelectRelativeTrack (unused)

This commit is contained in:
Matt Nadareski
2021-10-06 11:01:07 -07:00
parent a83549824d
commit f5127ee351

View File

@@ -828,12 +828,12 @@ namespace RedBookPlayer.Models.Hardware
/// Select a track by number /// Select a track by number
/// </summary> /// </summary>
/// <param name="trackNumber">Track number to attempt to load</param> /// <param name="trackNumber">Track number to attempt to load</param>
/// <returns>True if the track was changed, false otherwise</returns>
/// <remarks>TODO: This needs to reset the pointer in the track playback order</remarks> /// <remarks>TODO: This needs to reset the pointer in the track playback order</remarks>
/// <remarks>TODO: There needs to be a SelectRelativeTrack variant that follows order and then invokes this</remarks> public bool SelectTrack(int trackNumber)
public void SelectTrack(int trackNumber)
{ {
if(_opticalDiscs[CurrentDisc] == null || !_opticalDiscs[CurrentDisc].Initialized) if(_opticalDiscs[CurrentDisc] == null || !_opticalDiscs[CurrentDisc].Initialized)
return; return false;
PlayerState wasPlaying = PlayerState; PlayerState wasPlaying = PlayerState;
if(wasPlaying == PlayerState.Playing) if(wasPlaying == PlayerState.Playing)
@@ -860,7 +860,7 @@ namespace RedBookPlayer.Models.Hardware
if(wasPlaying == PlayerState.Playing) if(wasPlaying == PlayerState.Playing)
Play(); Play();
return; return true;
} }
else if((trackNumber < 1 && !LoadHiddenTracks) || (trackNumber < (int)compactDisc.Tracks.Min(t => t.TrackSequence))) else if((trackNumber < 1 && !LoadHiddenTracks) || (trackNumber < (int)compactDisc.Tracks.Min(t => t.TrackSequence)))
{ {
@@ -874,7 +874,7 @@ namespace RedBookPlayer.Models.Hardware
if(wasPlaying == PlayerState.Playing) if(wasPlaying == PlayerState.Playing)
Play(); Play();
return; return true;
} }
} }
@@ -912,7 +912,7 @@ namespace RedBookPlayer.Models.Hardware
// Cache the current track for easy access // Cache the current track for easy access
Track track = compactDisc.GetTrack(cachedTrackNumber); Track track = compactDisc.GetTrack(cachedTrackNumber);
if(track == null) if(track == null)
return; return false;
// If the track is playable, just return // If the track is playable, just return
if((track.TrackType == TrackType.Audio || DataPlayback != DataPlayback.Skip) if((track.TrackType == TrackType.Audio || DataPlayback != DataPlayback.Skip)
@@ -966,6 +966,40 @@ namespace RedBookPlayer.Models.Hardware
_opticalDiscs[CurrentDisc].LoadTrack(trackNumber); _opticalDiscs[CurrentDisc].LoadTrack(trackNumber);
} }
if(wasPlaying == PlayerState.Playing)
Play();
return true;
}
/// <summary>
/// Select a track in the relative track list by number
/// </summary>
/// <param name="relativeTrackNumber">Relative track number to attempt to load</param>
public void SelectRelativeTrack(int relativeTrackNumber)
{
if(_trackPlaybackOrder == null || _trackPlaybackOrder.Count == 0)
return;
PlayerState wasPlaying = PlayerState;
if(wasPlaying == PlayerState.Playing)
Pause();
if(relativeTrackNumber < 0)
relativeTrackNumber = _trackPlaybackOrder.Count - 1;
else if(relativeTrackNumber >= _trackPlaybackOrder.Count)
relativeTrackNumber = 0;
do
{
_currentTrackInOrder = relativeTrackNumber;
KeyValuePair<int, int> discTrackPair = _trackPlaybackOrder[relativeTrackNumber];
SelectDisc(discTrackPair.Key);
if(SelectTrack(discTrackPair.Value))
break;
}
while(true);
if(wasPlaying == PlayerState.Playing) if(wasPlaying == PlayerState.Playing)
Play(); Play();
} }