Add volume setting

This commit is contained in:
deagahelio
2021-03-29 19:40:22 -03:00
parent aef93eea2b
commit 9a89f8378b
6 changed files with 57 additions and 25 deletions

View File

@@ -89,7 +89,7 @@ namespace RedBookPlayer
this.Closing += (e, f) => this.Closing += (e, f) =>
{ {
PlayerView.player.Shutdown(); PlayerView.Player.Shutdown();
}; };
} }
} }

View File

@@ -96,6 +96,23 @@ namespace RedBookPlayer
public int TotalTracks { get; private set; } = 0; public int TotalTracks { get; private set; } = 0;
public int TotalIndexes { get; private set; } = 0; public int TotalIndexes { get; private set; } = 0;
public ulong TimeOffset { get; private set; } = 0; public ulong TimeOffset { get; private set; } = 0;
int volume = 100;
public int Volume
{
get
{
return volume;
}
set
{
if (volume >= 0 && volume <= 100)
{
volume = value;
soundOut.Volume = (float)volume / 100;
}
}
}
public AaruFormat Image { get; private set; } public AaruFormat Image { get; private set; }
FullTOC.CDFullTOC toc; FullTOC.CDFullTOC toc;
PlayerSource source; PlayerSource source;

View File

@@ -30,7 +30,7 @@ namespace RedBookPlayer
InitializeComponent(xaml); InitializeComponent(xaml);
} }
public static Player player = new Player(); public static Player Player = new Player();
TextBlock currentTrack; TextBlock currentTrack;
Image[] digits; Image[] digits;
Timer updateTimer; Timer updateTimer;
@@ -51,9 +51,9 @@ namespace RedBookPlayer
filter.Open(path); filter.Open(path);
image.Open(filter); image.Open(filter);
player?.Shutdown(); Player?.Shutdown();
player = new Player(); Player = new Player();
player.Init(image, App.Settings.AutoPlay); Player.Init(image, App.Settings.AutoPlay);
}); });
await Dispatcher.UIThread.InvokeAsync(() => await Dispatcher.UIThread.InvokeAsync(() =>
@@ -80,71 +80,71 @@ namespace RedBookPlayer
public void PlayButton_Click(object sender, RoutedEventArgs e) public void PlayButton_Click(object sender, RoutedEventArgs e)
{ {
player.Play(); Player.Play();
} }
public void PauseButton_Click(object sender, RoutedEventArgs e) public void PauseButton_Click(object sender, RoutedEventArgs e)
{ {
player.Pause(); Player.Pause();
} }
public void StopButton_Click(object sender, RoutedEventArgs e) public void StopButton_Click(object sender, RoutedEventArgs e)
{ {
player.Stop(); Player.Stop();
} }
public void NextTrackButton_Click(object sender, RoutedEventArgs e) public void NextTrackButton_Click(object sender, RoutedEventArgs e)
{ {
player.NextTrack(); Player.NextTrack();
} }
public void PreviousTrackButton_Click(object sender, RoutedEventArgs e) public void PreviousTrackButton_Click(object sender, RoutedEventArgs e)
{ {
player.PreviousTrack(); Player.PreviousTrack();
} }
public void NextIndexButton_Click(object sender, RoutedEventArgs e) public void NextIndexButton_Click(object sender, RoutedEventArgs e)
{ {
player.NextIndex(App.Settings.IndexButtonChangeTrack); Player.NextIndex(App.Settings.IndexButtonChangeTrack);
} }
public void PreviousIndexButton_Click(object sender, RoutedEventArgs e) public void PreviousIndexButton_Click(object sender, RoutedEventArgs e)
{ {
player.PreviousIndex(App.Settings.IndexButtonChangeTrack); Player.PreviousIndex(App.Settings.IndexButtonChangeTrack);
} }
public void FastForwardButton_Click(object sender, RoutedEventArgs e) public void FastForwardButton_Click(object sender, RoutedEventArgs e)
{ {
player.FastForward(); Player.FastForward();
} }
public void RewindButton_Click(object sender, RoutedEventArgs e) public void RewindButton_Click(object sender, RoutedEventArgs e)
{ {
player.Rewind(); Player.Rewind();
} }
public void EnableDeEmphasisButton_Click(object sender, RoutedEventArgs e) public void EnableDeEmphasisButton_Click(object sender, RoutedEventArgs e)
{ {
player.EnableDeEmphasis(); Player.EnableDeEmphasis();
} }
public void DisableDeEmphasisButton_Click(object sender, RoutedEventArgs e) public void DisableDeEmphasisButton_Click(object sender, RoutedEventArgs e)
{ {
player.DisableDeEmphasis(); Player.DisableDeEmphasis();
} }
private void UpdateView(object sender, ElapsedEventArgs e) private void UpdateView(object sender, ElapsedEventArgs e)
{ {
if (player.Initialized) if (Player.Initialized)
{ {
int[] numbers = new int[]{ int[] numbers = new int[]{
player.CurrentTrack + 1, Player.CurrentTrack + 1,
player.CurrentIndex, Player.CurrentIndex,
(int)(((player.CurrentSector + player.TimeOffset) / (75 * 60)) % 60), (int)(((Player.CurrentSector + Player.TimeOffset) / (75 * 60)) % 60),
(int)(((player.CurrentSector + player.TimeOffset) / 75) % 60), (int)(((Player.CurrentSector + Player.TimeOffset) / 75) % 60),
(int)((player.CurrentSector + player.TimeOffset) % 75), (int)((Player.CurrentSector + Player.TimeOffset) % 75),
player.TotalTracks, Player.TotalTracks,
player.TotalIndexes Player.TotalIndexes
}; };
string digitString = String.Join("", numbers.Select(i => i.ToString().PadLeft(2, '0').Substring(0, 2))); string digitString = String.Join("", numbers.Select(i => i.ToString().PadLeft(2, '0').Substring(0, 2)));
@@ -159,7 +159,7 @@ namespace RedBookPlayer
} }
} }
((PlayerViewModel)DataContext).PreEmphasis = player.HasPreEmphasis; ((PlayerViewModel)DataContext).PreEmphasis = Player.HasPreEmphasis;
}); });
} }
else else

View File

@@ -8,6 +8,7 @@ namespace RedBookPlayer
{ {
public bool AutoPlay { get; set; } = false; public bool AutoPlay { get; set; } = false;
public bool IndexButtonChangeTrack { get; set; } = false; public bool IndexButtonChangeTrack { get; set; } = false;
public int Volume { get; set; } = 100;
public string SelectedTheme { get; set; } = "default"; public string SelectedTheme { get; set; } = "default";
string filePath; string filePath;

View File

@@ -17,6 +17,12 @@
<CheckBox IsChecked="{Binding IndexButtonChangeTrack}" Margin="0,0,8,0"/> <CheckBox IsChecked="{Binding IndexButtonChangeTrack}" Margin="0,0,8,0"/>
<TextBlock VerticalAlignment="Center">Index navigation can change track</TextBlock> <TextBlock VerticalAlignment="Center">Index navigation can change track</TextBlock>
</WrapPanel> </WrapPanel>
<DockPanel Margin="0,0,0,16">
<TextBlock VerticalAlignment="Center" Margin="0,0,8,0" DockPanel.Dock="Left">Volume</TextBlock>
<TextBlock VerticalAlignment="Center" DockPanel.Dock="Right" Text="%"/>
<TextBlock VerticalAlignment="Center" Margin="8,0,0,0" DockPanel.Dock="Right" Text="{Binding Volume}" Name="VolumeLabel"/>
<Slider Minimum="0" Maximum="100" SmallChange="1" LargeChange="10" Value="{Binding Volume}" Name="VolumeSlider"/>
</DockPanel>
<Button Name="ApplyButton">Apply</Button> <Button Name="ApplyButton">Apply</Button>
</StackPanel> </StackPanel>
<ListBox Name="ThemeList" SelectionMode="Single" Margin="0,0,0,16"/> <ListBox Name="ThemeList" SelectionMode="Single" Margin="0,0,0,16"/>

View File

@@ -39,9 +39,16 @@ namespace RedBookPlayer
MainWindow.ApplyTheme(selectedTheme); MainWindow.ApplyTheme(selectedTheme);
} }
PlayerView.Player.Volume = settings.Volume;
settings.Save(); settings.Save();
} }
public void UpdateView()
{
this.FindControl<TextBlock>("VolumeLabel").Text = settings.Volume.ToString();
}
private void InitializeComponent() private void InitializeComponent()
{ {
AvaloniaXamlLoader.Load(this); AvaloniaXamlLoader.Load(this);
@@ -70,6 +77,7 @@ namespace RedBookPlayer
themeList.Items = items; themeList.Items = items;
this.FindControl<Button>("ApplyButton").Click += ApplySettings; this.FindControl<Button>("ApplyButton").Click += ApplySettings;
this.FindControl<Slider>("VolumeSlider").PropertyChanged += (s, e) => UpdateView();
} }
} }
} }