Fix volume setting; move view model to common

This commit is contained in:
Matt Nadareski
2021-07-05 16:20:34 -07:00
parent 4efc58d0ef
commit 49d8d8c23a
6 changed files with 28 additions and 8 deletions

View File

@@ -389,6 +389,12 @@ namespace RedBookPlayer.Common.Hardware
/// <param name="load">True to enable loading data tracks, false otherwise</param> /// <param name="load">True to enable loading data tracks, false otherwise</param>
public void SetLoadDataTracks(bool load) => (_opticalDisc as CompactDisc)?.SetLoadDataTracks(load); public void SetLoadDataTracks(bool load) => (_opticalDisc as CompactDisc)?.SetLoadDataTracks(load);
/// <summary>
/// Set the value for the volume
/// </summary>
/// <param name="volume">New volume value</param>
public void SetVolume(int volume) => _soundOutput?.SetVolume(volume);
/// <summary> /// <summary>
/// Update the player from the current OpticalDisc /// Update the player from the current OpticalDisc
/// </summary> /// </summary>

View File

@@ -303,6 +303,12 @@ namespace RedBookPlayer.Common.Hardware
/// <param name="apply"></param> /// <param name="apply"></param>
public void SetDeEmphasis(bool apply) => ApplyDeEmphasis = apply; public void SetDeEmphasis(bool apply) => ApplyDeEmphasis = apply;
/// <summary>
/// Set the value for the volume
/// </summary>
/// <param name="volume">New volume value</param>
public void SetVolume(int volume) => Volume = volume;
/// <summary> /// <summary>
/// Sets or resets the de-emphasis filters /// Sets or resets the de-emphasis filters
/// </summary> /// </summary>

View File

@@ -2,7 +2,7 @@ using System.ComponentModel;
using ReactiveUI; using ReactiveUI;
using RedBookPlayer.Common.Hardware; using RedBookPlayer.Common.Hardware;
namespace RedBookPlayer.GUI namespace RedBookPlayer.Common
{ {
public class PlayerViewModel : ReactiveObject public class PlayerViewModel : ReactiveObject
{ {
@@ -170,7 +170,7 @@ namespace RedBookPlayer.GUI
public int Volume public int Volume
{ {
get => _volume; get => _volume;
set => this.RaiseAndSetIfChanged(ref _volume, value); private set => this.RaiseAndSetIfChanged(ref _volume, value);
} }
private bool? _playing; private bool? _playing;
@@ -270,6 +270,12 @@ namespace RedBookPlayer.GUI
/// <param name="load">True to enable loading data tracks, false otherwise</param> /// <param name="load">True to enable loading data tracks, false otherwise</param>
public void SetLoadDataTracks(bool load) => _player?.SetLoadDataTracks(load); public void SetLoadDataTracks(bool load) => _player?.SetLoadDataTracks(load);
/// <summary>
/// Set the value for the volume
/// </summary>
/// <param name="volume">New volume value</param>
public void SetVolume(int volume) => _player?.SetVolume(volume);
/// <summary> /// <summary>
/// Temporarily mute playback /// Temporarily mute playback
/// </summary> /// </summary>
@@ -278,11 +284,11 @@ namespace RedBookPlayer.GUI
if(_lastVolume == null) if(_lastVolume == null)
{ {
_lastVolume = Volume; _lastVolume = Volume;
Volume = 0; _player?.SetVolume(0);
} }
else else
{ {
Volume = _lastVolume.Value; _player?.SetVolume(_lastVolume.Value);
_lastVolume = null; _lastVolume = null;
} }
} }

View File

@@ -189,7 +189,7 @@ namespace RedBookPlayer.GUI
increment *= 5; increment *= 5;
if(playerView?.PlayerViewModel?.Volume != null) if(playerView?.PlayerViewModel?.Volume != null)
playerView.PlayerViewModel.Volume += increment; playerView.PlayerViewModel.SetVolume(playerView.PlayerViewModel.Volume + increment);
} }
// Volume Down // Volume Down
@@ -202,7 +202,7 @@ namespace RedBookPlayer.GUI
decrement *= 5; decrement *= 5;
if (playerView?.PlayerViewModel?.Volume != null) if (playerView?.PlayerViewModel?.Volume != null)
playerView.PlayerViewModel.Volume -= decrement; playerView.PlayerViewModel.SetVolume(playerView.PlayerViewModel.Volume - decrement);
} }
// Mute Toggle // Mute Toggle

View File

@@ -98,6 +98,7 @@
<TextBlock Margin="0,0,16,0" IsVisible="{Binding QuadChannel}">4CH</TextBlock> <TextBlock Margin="0,0,16,0" IsVisible="{Binding QuadChannel}">4CH</TextBlock>
<TextBlock Margin="0,0,16,0" Foreground="LightGray" IsVisible="{Binding !HiddenTrack}">HIDDEN</TextBlock> <TextBlock Margin="0,0,16,0" Foreground="LightGray" IsVisible="{Binding !HiddenTrack}">HIDDEN</TextBlock>
<TextBlock Margin="0,0,16,0" IsVisible="{Binding HiddenTrack}">HIDDEN</TextBlock> <TextBlock Margin="0,0,16,0" IsVisible="{Binding HiddenTrack}">HIDDEN</TextBlock>
<TextBlock Margin="0,0,16,0" Text="{Binding Volume}"/>
</StackPanel> </StackPanel>
</StackPanel> </StackPanel>
</UserControl> </UserControl>

View File

@@ -11,6 +11,7 @@ using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging; using Avalonia.Media.Imaging;
using Avalonia.Platform; using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
using RedBookPlayer.Common;
namespace RedBookPlayer.GUI namespace RedBookPlayer.GUI
{ {
@@ -270,9 +271,9 @@ namespace RedBookPlayer.GUI
public void RewindButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.Rewind(); public void RewindButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.Rewind();
public void VolumeUpButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.Volume++; public void VolumeUpButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.SetVolume(PlayerViewModel.Volume + 1);
public void VolumeDownButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.Volume--; public void VolumeDownButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.SetVolume(PlayerViewModel.Volume - 1);
public void MuteToggleButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.ToggleMute(); public void MuteToggleButton_Click(object sender, RoutedEventArgs e) => PlayerViewModel.ToggleMute();