mirror of
https://github.com/aaru-dps/RedBookPlayer.git
synced 2025-12-16 19:24:41 +00:00
Create SelectRelativeTrack (unused)
This commit is contained in:
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user