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