mirror of
https://github.com/aaru-dps/RedBookPlayer.git
synced 2025-12-16 19:24:41 +00:00
Add volume setting
This commit is contained in:
@@ -89,7 +89,7 @@ namespace RedBookPlayer
|
||||
|
||||
this.Closing += (e, f) =>
|
||||
{
|
||||
PlayerView.player.Shutdown();
|
||||
PlayerView.Player.Shutdown();
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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"/>
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user