From 9a89f8378bccd71a1e676135fbe037c1bdb54e18 Mon Sep 17 00:00:00 2001 From: deagahelio <16138291+deagahelio@users.noreply.github.com> Date: Mon, 29 Mar 2021 19:40:22 -0300 Subject: [PATCH] Add volume setting --- RedBookPlayer/MainWindow.xaml.cs | 2 +- RedBookPlayer/Player.cs | 17 ++++++++++ RedBookPlayer/PlayerView.xaml.cs | 48 ++++++++++++++-------------- RedBookPlayer/Settings.cs | 1 + RedBookPlayer/SettingsWindow.xaml | 6 ++++ RedBookPlayer/SettingsWindow.xaml.cs | 8 +++++ 6 files changed, 57 insertions(+), 25 deletions(-) diff --git a/RedBookPlayer/MainWindow.xaml.cs b/RedBookPlayer/MainWindow.xaml.cs index 057a43f..cbb9ef1 100644 --- a/RedBookPlayer/MainWindow.xaml.cs +++ b/RedBookPlayer/MainWindow.xaml.cs @@ -89,7 +89,7 @@ namespace RedBookPlayer this.Closing += (e, f) => { - PlayerView.player.Shutdown(); + PlayerView.Player.Shutdown(); }; } } diff --git a/RedBookPlayer/Player.cs b/RedBookPlayer/Player.cs index 04bae2c..bc7c30f 100644 --- a/RedBookPlayer/Player.cs +++ b/RedBookPlayer/Player.cs @@ -96,6 +96,23 @@ namespace RedBookPlayer public int TotalTracks { get; private set; } = 0; public int TotalIndexes { 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; } FullTOC.CDFullTOC toc; PlayerSource source; diff --git a/RedBookPlayer/PlayerView.xaml.cs b/RedBookPlayer/PlayerView.xaml.cs index 4d9a3fa..25ccba3 100644 --- a/RedBookPlayer/PlayerView.xaml.cs +++ b/RedBookPlayer/PlayerView.xaml.cs @@ -30,7 +30,7 @@ namespace RedBookPlayer InitializeComponent(xaml); } - public static Player player = new Player(); + public static Player Player = new Player(); TextBlock currentTrack; Image[] digits; Timer updateTimer; @@ -51,9 +51,9 @@ namespace RedBookPlayer filter.Open(path); image.Open(filter); - player?.Shutdown(); - player = new Player(); - player.Init(image, App.Settings.AutoPlay); + Player?.Shutdown(); + Player = new Player(); + Player.Init(image, App.Settings.AutoPlay); }); await Dispatcher.UIThread.InvokeAsync(() => @@ -80,71 +80,71 @@ namespace RedBookPlayer public void PlayButton_Click(object sender, RoutedEventArgs e) { - player.Play(); + Player.Play(); } public void PauseButton_Click(object sender, RoutedEventArgs e) { - player.Pause(); + Player.Pause(); } public void StopButton_Click(object sender, RoutedEventArgs e) { - player.Stop(); + Player.Stop(); } public void NextTrackButton_Click(object sender, RoutedEventArgs e) { - player.NextTrack(); + Player.NextTrack(); } public void PreviousTrackButton_Click(object sender, RoutedEventArgs e) { - player.PreviousTrack(); + Player.PreviousTrack(); } 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) { - player.PreviousIndex(App.Settings.IndexButtonChangeTrack); + Player.PreviousIndex(App.Settings.IndexButtonChangeTrack); } public void FastForwardButton_Click(object sender, RoutedEventArgs e) { - player.FastForward(); + Player.FastForward(); } public void RewindButton_Click(object sender, RoutedEventArgs e) { - player.Rewind(); + Player.Rewind(); } public void EnableDeEmphasisButton_Click(object sender, RoutedEventArgs e) { - player.EnableDeEmphasis(); + Player.EnableDeEmphasis(); } public void DisableDeEmphasisButton_Click(object sender, RoutedEventArgs e) { - player.DisableDeEmphasis(); + Player.DisableDeEmphasis(); } private void UpdateView(object sender, ElapsedEventArgs e) { - if (player.Initialized) + if (Player.Initialized) { int[] numbers = new int[]{ - player.CurrentTrack + 1, - player.CurrentIndex, - (int)(((player.CurrentSector + player.TimeOffset) / (75 * 60)) % 60), - (int)(((player.CurrentSector + player.TimeOffset) / 75) % 60), - (int)((player.CurrentSector + player.TimeOffset) % 75), - player.TotalTracks, - player.TotalIndexes + Player.CurrentTrack + 1, + Player.CurrentIndex, + (int)(((Player.CurrentSector + Player.TimeOffset) / (75 * 60)) % 60), + (int)(((Player.CurrentSector + Player.TimeOffset) / 75) % 60), + (int)((Player.CurrentSector + Player.TimeOffset) % 75), + Player.TotalTracks, + Player.TotalIndexes }; 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 diff --git a/RedBookPlayer/Settings.cs b/RedBookPlayer/Settings.cs index f4e36d6..08ad063 100644 --- a/RedBookPlayer/Settings.cs +++ b/RedBookPlayer/Settings.cs @@ -8,6 +8,7 @@ namespace RedBookPlayer { public bool AutoPlay { get; set; } = false; public bool IndexButtonChangeTrack { get; set; } = false; + public int Volume { get; set; } = 100; public string SelectedTheme { get; set; } = "default"; string filePath; diff --git a/RedBookPlayer/SettingsWindow.xaml b/RedBookPlayer/SettingsWindow.xaml index 6a6467b..a5c2e75 100644 --- a/RedBookPlayer/SettingsWindow.xaml +++ b/RedBookPlayer/SettingsWindow.xaml @@ -17,6 +17,12 @@ Index navigation can change track + + Volume + + + + diff --git a/RedBookPlayer/SettingsWindow.xaml.cs b/RedBookPlayer/SettingsWindow.xaml.cs index 0b29f53..3b954bf 100644 --- a/RedBookPlayer/SettingsWindow.xaml.cs +++ b/RedBookPlayer/SettingsWindow.xaml.cs @@ -39,9 +39,16 @@ namespace RedBookPlayer MainWindow.ApplyTheme(selectedTheme); } + PlayerView.Player.Volume = settings.Volume; + settings.Save(); } + public void UpdateView() + { + this.FindControl("VolumeLabel").Text = settings.Volume.ToString(); + } + private void InitializeComponent() { AvaloniaXamlLoader.Load(this); @@ -70,6 +77,7 @@ namespace RedBookPlayer themeList.Items = items; this.FindControl