mirror of
https://github.com/aaru-dps/RedBookPlayer.git
synced 2025-12-16 19:24:41 +00:00
Disconnect some more UI -> Model
This commit is contained in:
@@ -90,7 +90,7 @@ namespace RedBookPlayer.GUI
|
||||
|
||||
Closing += (e, f) =>
|
||||
{
|
||||
PlayerView.Player.Stop();
|
||||
((PlayerView)ContentControl.Content).StopButton_Click(this, null);
|
||||
};
|
||||
|
||||
AddHandler(DragDrop.DropEvent, MainWindow_Drop);
|
||||
|
||||
@@ -71,7 +71,8 @@ namespace RedBookPlayer.GUI
|
||||
public async Task<bool> LoadImage(string path)
|
||||
{
|
||||
// If the player is currently running, stop it
|
||||
if(Player.Playing) Player.Stop();
|
||||
if((DataContext as PlayerViewModel).Playing != true)
|
||||
(DataContext as PlayerViewModel).Playing = null;
|
||||
|
||||
bool result = await Task.Run(() =>
|
||||
{
|
||||
@@ -233,13 +234,13 @@ namespace RedBookPlayer.GUI
|
||||
await LoadImage(path);
|
||||
}
|
||||
|
||||
public void PlayButton_Click(object sender, RoutedEventArgs e) => Player.TogglePlayPause(true);
|
||||
public void PlayButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).Playing = true;
|
||||
|
||||
public void PauseButton_Click(object sender, RoutedEventArgs e) => Player.TogglePlayPause(false);
|
||||
public void PauseButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).Playing = false;
|
||||
|
||||
public void PlayPauseButton_Click(object sender, RoutedEventArgs e) => Player.TogglePlayPause(!Player.Playing);
|
||||
public void PlayPauseButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).Playing = !(DataContext as PlayerViewModel).Playing;
|
||||
|
||||
public void StopButton_Click(object sender, RoutedEventArgs e) => Player.Stop();
|
||||
public void StopButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).Playing = null;
|
||||
|
||||
public void NextTrackButton_Click(object sender, RoutedEventArgs e) => Player.NextTrack();
|
||||
|
||||
@@ -253,29 +254,29 @@ namespace RedBookPlayer.GUI
|
||||
|
||||
public void RewindButton_Click(object sender, RoutedEventArgs e) => Player.Rewind();
|
||||
|
||||
public void VolumeUpButton_Click(object sender, RoutedEventArgs e) => App.Settings.Volume++;
|
||||
public void VolumeUpButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).Volume++;
|
||||
|
||||
public void VolumeDownButton_Click(object sender, RoutedEventArgs e) => App.Settings.Volume--;
|
||||
public void VolumeDownButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).Volume--;
|
||||
|
||||
public void MuteToggleButton_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (_lastVolume == null)
|
||||
{
|
||||
_lastVolume = App.Settings.Volume;
|
||||
App.Settings.Volume = 0;
|
||||
_lastVolume = (DataContext as PlayerViewModel).Volume;
|
||||
(DataContext as PlayerViewModel).Volume = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
App.Settings.Volume = _lastVolume.Value;
|
||||
(DataContext as PlayerViewModel).Volume = _lastVolume.Value;
|
||||
_lastVolume = null;
|
||||
}
|
||||
}
|
||||
|
||||
public void EnableDeEmphasisButton_Click(object sender, RoutedEventArgs e) => Player.ToggleDeEmphasis(true);
|
||||
public void EnableDeEmphasisButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).ApplyDeEmphasis = true;
|
||||
|
||||
public void DisableDeEmphasisButton_Click(object sender, RoutedEventArgs e) => Player.ToggleDeEmphasis(false);
|
||||
public void DisableDeEmphasisButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).ApplyDeEmphasis = false;
|
||||
|
||||
public void EnableDisableDeEmphasisButton_Click(object sender, RoutedEventArgs e) => Player.ToggleDeEmphasis(!Player.ApplyDeEmphasis);
|
||||
public void EnableDisableDeEmphasisButton_Click(object sender, RoutedEventArgs e) => (DataContext as PlayerViewModel).ApplyDeEmphasis = !(DataContext as PlayerViewModel).ApplyDeEmphasis;
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
@@ -6,13 +6,31 @@ namespace RedBookPlayer.GUI
|
||||
{
|
||||
#region Player Status
|
||||
|
||||
private bool _playing;
|
||||
public bool Playing
|
||||
private bool? _playing;
|
||||
public bool? Playing
|
||||
{
|
||||
get => _playing;
|
||||
set => this.RaiseAndSetIfChanged(ref _playing, value);
|
||||
}
|
||||
|
||||
private int _volume;
|
||||
public int Volume
|
||||
{
|
||||
get => _volume;
|
||||
set => this.RaiseAndSetIfChanged(ref _volume, value);
|
||||
}
|
||||
|
||||
private bool _applyDeEmphasis;
|
||||
public bool ApplyDeEmphasis
|
||||
{
|
||||
get => _applyDeEmphasis;
|
||||
set => this.RaiseAndSetIfChanged(ref _applyDeEmphasis, value);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Model-Provided Playback Information
|
||||
|
||||
private ulong _currentSector;
|
||||
public ulong CurrentSector
|
||||
{
|
||||
@@ -35,20 +53,6 @@ namespace RedBookPlayer.GUI
|
||||
public int TotalSeconds => (int)(_totalSectors / 75 % 60);
|
||||
public int TotalMinutes => (int)(_totalSectors % 75);
|
||||
|
||||
private int _volume;
|
||||
public int Volume
|
||||
{
|
||||
get => _volume;
|
||||
set => this.RaiseAndSetIfChanged(ref _volume, value);
|
||||
}
|
||||
|
||||
private bool _applyDeEmphasis;
|
||||
public bool ApplyDeEmphasis
|
||||
{
|
||||
get => _applyDeEmphasis;
|
||||
set => this.RaiseAndSetIfChanged(ref _applyDeEmphasis, value);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Disc Flags
|
||||
|
||||
@@ -90,35 +90,28 @@ namespace RedBookPlayer.Hardware
|
||||
#region Playback
|
||||
|
||||
/// <summary>
|
||||
/// Toggle audio playback
|
||||
/// Set the current audio playback state
|
||||
/// </summary>
|
||||
/// <param name="start">True to start playback, false to pause</param>
|
||||
public void TogglePlayPause(bool start)
|
||||
/// <param name="start">True to start playback, false to pause, null to stop</param>
|
||||
private void SetPlayingState(bool? start)
|
||||
{
|
||||
if(_opticalDisc == null || !_opticalDisc.Initialized)
|
||||
return;
|
||||
|
||||
if(start)
|
||||
if(start == true)
|
||||
{
|
||||
_soundOutput.Play();
|
||||
_opticalDisc.SetTotalIndexes();
|
||||
}
|
||||
else
|
||||
else if(start == false)
|
||||
{
|
||||
_soundOutput.Stop();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Stop the current audio playback
|
||||
/// </summary>
|
||||
public void Stop()
|
||||
{
|
||||
if(_opticalDisc == null || !_opticalDisc.Initialized)
|
||||
return;
|
||||
|
||||
_soundOutput.Stop();
|
||||
_opticalDisc.LoadFirstTrack();
|
||||
else
|
||||
{
|
||||
_soundOutput.Stop();
|
||||
_opticalDisc.LoadFirstTrack();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -130,13 +123,13 @@ namespace RedBookPlayer.Hardware
|
||||
return;
|
||||
|
||||
bool wasPlaying = Playing;
|
||||
if(wasPlaying) TogglePlayPause(false);
|
||||
if(wasPlaying) SetPlayingState(false);
|
||||
|
||||
_opticalDisc.NextTrack();
|
||||
if(_opticalDisc is CompactDisc compactDisc)
|
||||
_soundOutput.ApplyDeEmphasis = compactDisc.TrackHasEmphasis;
|
||||
|
||||
if(wasPlaying) TogglePlayPause(true);
|
||||
if(wasPlaying) SetPlayingState(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -148,13 +141,13 @@ namespace RedBookPlayer.Hardware
|
||||
return;
|
||||
|
||||
bool wasPlaying = Playing;
|
||||
if(wasPlaying) TogglePlayPause(false);
|
||||
if(wasPlaying) SetPlayingState(false);
|
||||
|
||||
_opticalDisc.PreviousTrack();
|
||||
if(_opticalDisc is CompactDisc compactDisc)
|
||||
_soundOutput.ApplyDeEmphasis = compactDisc.TrackHasEmphasis;
|
||||
|
||||
if(wasPlaying) TogglePlayPause(true);
|
||||
if(wasPlaying) SetPlayingState(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -167,13 +160,13 @@ namespace RedBookPlayer.Hardware
|
||||
return;
|
||||
|
||||
bool wasPlaying = Playing;
|
||||
if(wasPlaying) TogglePlayPause(false);
|
||||
if(wasPlaying) SetPlayingState(false);
|
||||
|
||||
_opticalDisc.NextIndex(changeTrack);
|
||||
if(_opticalDisc is CompactDisc compactDisc)
|
||||
_soundOutput.ApplyDeEmphasis = compactDisc.TrackHasEmphasis;
|
||||
|
||||
if(wasPlaying) TogglePlayPause(true);
|
||||
if(wasPlaying) SetPlayingState(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -186,13 +179,13 @@ namespace RedBookPlayer.Hardware
|
||||
return;
|
||||
|
||||
bool wasPlaying = Playing;
|
||||
if(wasPlaying) TogglePlayPause(false);
|
||||
if(wasPlaying) SetPlayingState(false);
|
||||
|
||||
_opticalDisc.PreviousIndex(changeTrack);
|
||||
if(_opticalDisc is CompactDisc compactDisc)
|
||||
_soundOutput.ApplyDeEmphasis = compactDisc.TrackHasEmphasis;
|
||||
|
||||
if(wasPlaying) TogglePlayPause(true);
|
||||
if(wasPlaying) SetPlayingState(true);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -255,12 +248,6 @@ namespace RedBookPlayer.Hardware
|
||||
return string.Join("", numbers.Select(i => i.ToString().PadLeft(2, '0').Substring(0, 2)));
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Toggle de-emphasis processing
|
||||
/// </summary>
|
||||
/// <param name="enable">True to apply de-emphasis, false otherwise</param>
|
||||
public void ToggleDeEmphasis(bool enable) => _soundOutput?.ToggleDeEmphasis(enable);
|
||||
|
||||
/// <summary>
|
||||
/// Update the data context for the frontend
|
||||
/// </summary>
|
||||
@@ -303,8 +290,9 @@ namespace RedBookPlayer.Hardware
|
||||
if(!Initialized || dataContext == null)
|
||||
return;
|
||||
|
||||
SetPlayingState(dataContext.Playing);
|
||||
App.Settings.Volume = dataContext.Volume;
|
||||
ToggleDeEmphasis(dataContext.ApplyDeEmphasis);
|
||||
_soundOutput?.ToggleDeEmphasis(dataContext.ApplyDeEmphasis);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user