Add option to change index navigation behavior

This commit is contained in:
deagahelio
2021-03-29 12:49:56 -03:00
parent 20418a24b0
commit aef93eea2b
5 changed files with 29 additions and 21 deletions

View File

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

View File

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

View File

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

View File

@@ -10,9 +10,13 @@
<TextBlock DockPanel.Dock="Top" Margin="0,0,0,4">Themes</TextBlock>
<StackPanel DockPanel.Dock="Bottom">
<WrapPanel Margin="0,0,0,16">
<CheckBox Name="AutoPlay" Margin="0,0,8,0"/>
<CheckBox IsChecked="{Binding AutoPlay}" Margin="0,0,8,0"/>
<TextBlock VerticalAlignment="Center">Auto-play CD on load</TextBlock>
</WrapPanel>
<WrapPanel Margin="0,0,0,16">
<CheckBox IsChecked="{Binding IndexButtonChangeTrack}" Margin="0,0,8,0"/>
<TextBlock VerticalAlignment="Center">Index navigation can change track</TextBlock>
</WrapPanel>
<Button Name="ApplyButton">Apply</Button>
</StackPanel>
<ListBox Name="ThemeList" SelectionMode="Single" Margin="0,0,0,16"/>

View File

@@ -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<CheckBox>("AutoPlay");
LoadSettings();
this.FindControl<Button>("ApplyButton").Click += ApplySettings;
}
}