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) =>
{
PlayerView.player.Shutdown();
PlayerView.Player.Shutdown();
};
}
}

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -17,6 +17,12 @@
<CheckBox IsChecked="{Binding IndexButtonChangeTrack}" Margin="0,0,8,0"/>
<TextBlock VerticalAlignment="Center">Index navigation can change track</TextBlock>
</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>
</StackPanel>
<ListBox Name="ThemeList" SelectionMode="Single" Margin="0,0,0,16"/>

View File

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