diff --git a/RedBookPlayer/Player.cs b/RedBookPlayer/Player.cs index 2e9a8f2..04bae2c 100644 --- a/RedBookPlayer/Player.cs +++ b/RedBookPlayer/Player.cs @@ -331,7 +331,7 @@ namespace RedBookPlayer LoadTrack(CurrentTrack); } - public void NextIndex() + public void NextIndex(bool changeTrack) { if (Image == null) { @@ -340,8 +340,15 @@ namespace RedBookPlayer if (++CurrentIndex > Image.Tracks[CurrentTrack].Indexes.Keys.Max()) { - NextTrack(); - CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[1]; + if (changeTrack) + { + NextTrack(); + CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[1]; + } + else + { + CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[--CurrentIndex]; + } } else { @@ -349,7 +356,7 @@ namespace RedBookPlayer } } - public void PreviousIndex() + public void PreviousIndex(bool changeTrack) { if (Image == null) { @@ -358,8 +365,15 @@ namespace RedBookPlayer if (CurrentIndex <= 1 || --CurrentIndex < Image.Tracks[CurrentTrack].Indexes.Keys.Min()) { - PreviousTrack(); - CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes.Values.Max(); + if (changeTrack) + { + PreviousTrack(); + CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes.Values.Max(); + } + else + { + CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[1]; + } } else { diff --git a/RedBookPlayer/PlayerView.xaml.cs b/RedBookPlayer/PlayerView.xaml.cs index f1d8bcb..4d9a3fa 100644 --- a/RedBookPlayer/PlayerView.xaml.cs +++ b/RedBookPlayer/PlayerView.xaml.cs @@ -105,12 +105,12 @@ namespace RedBookPlayer public void NextIndexButton_Click(object sender, RoutedEventArgs e) { - player.NextIndex(); + player.NextIndex(App.Settings.IndexButtonChangeTrack); } public void PreviousIndexButton_Click(object sender, RoutedEventArgs e) { - player.PreviousIndex(); + player.PreviousIndex(App.Settings.IndexButtonChangeTrack); } public void FastForwardButton_Click(object sender, RoutedEventArgs e) diff --git a/RedBookPlayer/Settings.cs b/RedBookPlayer/Settings.cs index 726d489..f4e36d6 100644 --- a/RedBookPlayer/Settings.cs +++ b/RedBookPlayer/Settings.cs @@ -7,6 +7,7 @@ namespace RedBookPlayer public class Settings { public bool AutoPlay { get; set; } = false; + public bool IndexButtonChangeTrack { get; set; } = false; public string SelectedTheme { get; set; } = "default"; string filePath; diff --git a/RedBookPlayer/SettingsWindow.xaml b/RedBookPlayer/SettingsWindow.xaml index b05b4ed..6a6467b 100644 --- a/RedBookPlayer/SettingsWindow.xaml +++ b/RedBookPlayer/SettingsWindow.xaml @@ -10,9 +10,13 @@ Themes - + Auto-play CD on load + + + Index navigation can change track + diff --git a/RedBookPlayer/SettingsWindow.xaml.cs b/RedBookPlayer/SettingsWindow.xaml.cs index 8eb358b..0b29f53 100644 --- a/RedBookPlayer/SettingsWindow.xaml.cs +++ b/RedBookPlayer/SettingsWindow.xaml.cs @@ -1,7 +1,6 @@ using System; using System.Collections.Generic; using System.IO; -using System.Text.Json; using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Markup.Xaml; @@ -13,13 +12,12 @@ namespace RedBookPlayer Settings settings; ListBox themeList; string selectedTheme; - CheckBox autoPlay; public SettingsWindow() { } public SettingsWindow(Settings settings) { - this.settings = settings; + this.DataContext = this.settings = settings; InitializeComponent(); } @@ -33,11 +31,6 @@ namespace RedBookPlayer selectedTheme = (string)e.AddedItems[0]; } - public void LoadSettings() - { - autoPlay.IsChecked = settings.AutoPlay; - } - public void ApplySettings(object sender, RoutedEventArgs e) { if ((selectedTheme ?? "") != "") @@ -46,7 +39,6 @@ namespace RedBookPlayer MainWindow.ApplyTheme(selectedTheme); } - settings.AutoPlay = autoPlay.IsChecked ?? false; settings.Save(); } @@ -77,9 +69,6 @@ namespace RedBookPlayer themeList.Items = items; - autoPlay = this.FindControl("AutoPlay"); - LoadSettings(); - this.FindControl