diff --git a/RedBookPlayer.GUI/ViewModels/PlayerViewModel.cs b/RedBookPlayer.GUI/ViewModels/PlayerViewModel.cs
index 45a9d08..931fdac 100644
--- a/RedBookPlayer.GUI/ViewModels/PlayerViewModel.cs
+++ b/RedBookPlayer.GUI/ViewModels/PlayerViewModel.cs
@@ -423,7 +423,7 @@ namespace RedBookPlayer.GUI.ViewModels
}
}
- #region Playback
+ #region Playback (UI)
///
/// Begin playback
@@ -440,6 +440,11 @@ namespace RedBookPlayer.GUI.ViewModels
///
public void ExecuteTogglePlayPause() => _player?.TogglePlayback();
+ ///
+ /// Shuffle the current track list
+ ///
+ public void ExecuteShuffle() => _player?.ShuffleTracks();
+
///
/// Stop current playback
///
@@ -470,11 +475,6 @@ namespace RedBookPlayer.GUI.ViewModels
///
public void ExecutePreviousTrack() => _player?.PreviousTrack();
- ///
- /// Shuffle the current track list
- ///
- public void ExecuteShuffle() => _player?.ShuffleTracks();
-
///
/// Move to the next index
///
@@ -497,6 +497,29 @@ namespace RedBookPlayer.GUI.ViewModels
#endregion
+ #region Playback (Internal)
+
+ ///
+ /// Select a particular disc by number
+ ///
+ /// Disc number to attempt to load
+ public void SelectDisc(int discNumber) => _player?.SelectDisc(discNumber);
+
+ ///
+ /// Select a particular index by number
+ ///
+ /// Track index to attempt to load
+ /// True if index changes can trigger a track change, false otherwise
+ public void SelectIndex(ushort index, bool changeTrack) => _player?.SelectIndex(index, changeTrack);
+
+ ///
+ /// Select a particular track by number
+ ///
+ /// Track number to attempt to load
+ public void SelectTrack(int trackNumber) => _player?.SelectTrack(trackNumber);
+
+ #endregion
+
#region Volume
///
@@ -541,6 +564,111 @@ namespace RedBookPlayer.GUI.ViewModels
#endregion
+ #region Extraction
+
+ ///
+ /// Extract a single track from the image to WAV
+ ///
+ ///
+ /// Output path to write data to
+ public void ExtractSingleTrackToWav(uint trackNumber, string outputDirectory) => _player?.ExtractSingleTrackToWav(trackNumber, outputDirectory);
+
+ ///
+ /// Extract all tracks from the image to WAV
+ ///
+ /// Output path to write data to
+ public void ExtractAllTracksToWav(string outputDirectory) => _player?.ExtractAllTracksToWav(outputDirectory);
+
+ #endregion
+
+ #region Setters
+
+ ///
+ /// Set data playback method [CompactDisc only]
+ ///
+ /// New playback value
+ public void SetDataPlayback(DataPlayback dataPlayback) => _player?.SetDataPlayback(dataPlayback);
+
+ ///
+ /// Set disc handling method
+ ///
+ /// New playback value
+ public void SetDiscHandling(DiscHandling discHandling) => _player?.SetDiscHandling(discHandling);
+
+ ///
+ /// Set the value for loading hidden tracks [CompactDisc only]
+ ///
+ /// True to enable loading hidden tracks, false otherwise
+ public void SetLoadHiddenTracks(bool load) => _player?.SetLoadHiddenTracks(load);
+
+ ///
+ /// Set repeat mode
+ ///
+ /// New repeat mode value
+ public void SetRepeatMode(RepeatMode repeatMode) => _player?.SetRepeatMode(repeatMode);
+
+ ///
+ /// Set session handling
+ ///
+ /// New session handling value
+ public void SetSessionHandling(SessionHandling sessionHandling) => _player?.SetSessionHandling(sessionHandling);
+
+ #endregion
+
+ #region State Change Event Handlers
+
+ ///
+ /// Update the view-model from the Player
+ ///
+ private void PlayerStateChanged(object sender, PropertyChangedEventArgs e)
+ {
+ if(_player == null)
+ return;
+
+ if(!_player.Initialized)
+ {
+ Dispatcher.UIThread.InvokeAsync(() =>
+ {
+ App.MainWindow.Title = "RedBookPlayer";
+ });
+ }
+
+ ImagePath = _player.ImagePath;
+ Initialized = _player.Initialized;
+
+ if (!string.IsNullOrWhiteSpace(ImagePath) && Initialized)
+ {
+ Dispatcher.UIThread.InvokeAsync(() =>
+ {
+ App.MainWindow.Title = "RedBookPlayer - " + ImagePath.Split('/').Last().Split('\\').Last();
+ });
+ }
+
+ CurrentDisc = _player.CurrentDisc;
+ CurrentTrackNumber = _player.CurrentTrackNumber;
+ CurrentTrackIndex = _player.CurrentTrackIndex;
+ CurrentTrackSession = _player.CurrentTrackSession;
+ CurrentSector = _player.CurrentSector;
+ SectionStartSector = _player.SectionStartSector;
+
+ HiddenTrack = _player.HiddenTrack;
+
+ QuadChannel = _player.QuadChannel;
+ IsDataTrack = _player.IsDataTrack;
+ CopyAllowed = _player.CopyAllowed;
+ TrackHasEmphasis = _player.TrackHasEmphasis;
+
+ PlayerState = _player.PlayerState;
+ DataPlayback = _player.DataPlayback;
+ RepeatMode = _player.RepeatMode;
+ ApplyDeEmphasis = _player.ApplyDeEmphasis;
+ Volume = _player.Volume;
+
+ UpdateDigits();
+ }
+
+ #endregion
+
#region Helpers
///
@@ -696,68 +824,6 @@ namespace RedBookPlayer.GUI.ViewModels
SetSessionHandling(App.Settings.SessionHandling);
}
- ///
- /// Extract a single track from the image to WAV
- ///
- ///
- /// Output path to write data to
- public void ExtractSingleTrackToWav(uint trackNumber, string outputDirectory) => _player?.ExtractSingleTrackToWav(trackNumber, outputDirectory);
-
- ///
- /// Extract all tracks from the image to WAV
- ///
- /// Output path to write data to
- public void ExtractAllTracksToWav(string outputDirectory) => _player?.ExtractAllTracksToWav(outputDirectory);
-
- ///
- /// Select a particular disc by number
- ///
- /// Disc number to attempt to load
- public void SelectDisc(int discNumber) => _player?.SelectDisc(discNumber);
-
- ///
- /// Select a particular index by number
- ///
- /// Track index to attempt to load
- /// True if index changes can trigger a track change, false otherwise
- public void SelectIndex(ushort index, bool changeTrack) => _player?.SelectIndex(index, changeTrack);
-
- ///
- /// Select a particular track by number
- ///
- /// Track number to attempt to load
- public void SelectTrack(int trackNumber) => _player?.SelectTrack(trackNumber);
-
- ///
- /// Set data playback method [CompactDisc only]
- ///
- /// New playback value
- public void SetDataPlayback(DataPlayback dataPlayback) => _player?.SetDataPlayback(dataPlayback);
-
- ///
- /// Set disc handling method
- ///
- /// New playback value
- public void SetDiscHandling(DiscHandling discHandling) => _player?.SetDiscHandling(discHandling);
-
- ///
- /// Set the value for loading hidden tracks [CompactDisc only]
- ///
- /// True to enable loading hidden tracks, false otherwise
- public void SetLoadHiddenTracks(bool load) => _player?.SetLoadHiddenTracks(load);
-
- ///
- /// Set repeat mode
- ///
- /// New repeat mode value
- public void SetRepeatMode(RepeatMode repeatMode) => _player?.SetRepeatMode(repeatMode);
-
- ///
- /// Set session handling
- ///
- /// New session handling value
- public void SetSessionHandling(SessionHandling sessionHandling) => _player?.SetSessionHandling(sessionHandling);
-
///
/// Generate the digit string to be interpreted by the frontend
///
@@ -879,56 +945,6 @@ namespace RedBookPlayer.GUI.ViewModels
UpdateDigits();
}
- ///
- /// Update the view-model from the Player
- ///
- private void PlayerStateChanged(object sender, PropertyChangedEventArgs e)
- {
- if(_player == null)
- return;
-
- if(!_player.Initialized)
- {
- Dispatcher.UIThread.InvokeAsync(() =>
- {
- App.MainWindow.Title = "RedBookPlayer";
- });
- }
-
- ImagePath = _player.ImagePath;
- Initialized = _player.Initialized;
-
- if (!string.IsNullOrWhiteSpace(ImagePath) && Initialized)
- {
- Dispatcher.UIThread.InvokeAsync(() =>
- {
- App.MainWindow.Title = "RedBookPlayer - " + ImagePath.Split('/').Last().Split('\\').Last();
- });
- }
-
- CurrentDisc = _player.CurrentDisc;
- CurrentTrackNumber = _player.CurrentTrackNumber;
- CurrentTrackIndex = _player.CurrentTrackIndex;
- CurrentTrackSession = _player.CurrentTrackSession;
- CurrentSector = _player.CurrentSector;
- SectionStartSector = _player.SectionStartSector;
-
- HiddenTrack = _player.HiddenTrack;
-
- QuadChannel = _player.QuadChannel;
- IsDataTrack = _player.IsDataTrack;
- CopyAllowed = _player.CopyAllowed;
- TrackHasEmphasis = _player.TrackHasEmphasis;
-
- PlayerState = _player.PlayerState;
- DataPlayback = _player.DataPlayback;
- RepeatMode = _player.RepeatMode;
- ApplyDeEmphasis = _player.ApplyDeEmphasis;
- Volume = _player.Volume;
-
- UpdateDigits();
- }
-
///
/// Update UI
///