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>
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>
/// Update the player from the current OpticalDisc
/// </summary>

View File

@@ -303,6 +303,12 @@ namespace RedBookPlayer.Common.Hardware
/// <param name="apply"></param>
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>
/// Sets or resets the de-emphasis filters
/// </summary>

View File

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

View File

@@ -189,7 +189,7 @@ namespace RedBookPlayer.GUI
increment *= 5;
if(playerView?.PlayerViewModel?.Volume != null)
playerView.PlayerViewModel.Volume += increment;
playerView.PlayerViewModel.SetVolume(playerView.PlayerViewModel.Volume + increment);
}
// Volume Down
@@ -202,7 +202,7 @@ namespace RedBookPlayer.GUI
decrement *= 5;
if (playerView?.PlayerViewModel?.Volume != null)
playerView.PlayerViewModel.Volume -= decrement;
playerView.PlayerViewModel.SetVolume(playerView.PlayerViewModel.Volume - decrement);
}
// 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" Foreground="LightGray" 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>
</UserControl>

View File

@@ -11,6 +11,7 @@ using Avalonia.Markup.Xaml;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using Avalonia.Threading;
using RedBookPlayer.Common;
namespace RedBookPlayer.GUI
{
@@ -270,9 +271,9 @@ namespace RedBookPlayer.GUI
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();