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); LoadTrack(CurrentTrack);
} }
public void NextIndex() public void NextIndex(bool changeTrack)
{ {
if (Image == null) if (Image == null)
{ {
@@ -340,8 +340,15 @@ namespace RedBookPlayer
if (++CurrentIndex > Image.Tracks[CurrentTrack].Indexes.Keys.Max()) if (++CurrentIndex > Image.Tracks[CurrentTrack].Indexes.Keys.Max())
{ {
NextTrack(); if (changeTrack)
CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[1]; {
NextTrack();
CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[1];
}
else
{
CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[--CurrentIndex];
}
} }
else else
{ {
@@ -349,7 +356,7 @@ namespace RedBookPlayer
} }
} }
public void PreviousIndex() public void PreviousIndex(bool changeTrack)
{ {
if (Image == null) if (Image == null)
{ {
@@ -358,8 +365,15 @@ namespace RedBookPlayer
if (CurrentIndex <= 1 || --CurrentIndex < Image.Tracks[CurrentTrack].Indexes.Keys.Min()) if (CurrentIndex <= 1 || --CurrentIndex < Image.Tracks[CurrentTrack].Indexes.Keys.Min())
{ {
PreviousTrack(); if (changeTrack)
CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes.Values.Max(); {
PreviousTrack();
CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes.Values.Max();
}
else
{
CurrentSector = (ulong)Image.Tracks[CurrentTrack].Indexes[1];
}
} }
else else
{ {

View File

@@ -105,12 +105,12 @@ namespace RedBookPlayer
public void NextIndexButton_Click(object sender, RoutedEventArgs e) public void NextIndexButton_Click(object sender, RoutedEventArgs e)
{ {
player.NextIndex(); player.NextIndex(App.Settings.IndexButtonChangeTrack);
} }
public void PreviousIndexButton_Click(object sender, RoutedEventArgs e) public void PreviousIndexButton_Click(object sender, RoutedEventArgs e)
{ {
player.PreviousIndex(); player.PreviousIndex(App.Settings.IndexButtonChangeTrack);
} }
public void FastForwardButton_Click(object sender, RoutedEventArgs e) public void FastForwardButton_Click(object sender, RoutedEventArgs e)

View File

@@ -7,6 +7,7 @@ namespace RedBookPlayer
public class Settings public class Settings
{ {
public bool AutoPlay { get; set; } = false; public bool AutoPlay { get; set; } = false;
public bool IndexButtonChangeTrack { get; set; } = false;
public string SelectedTheme { get; set; } = "default"; public string SelectedTheme { get; set; } = "default";
string filePath; string filePath;

View File

@@ -10,9 +10,13 @@
<TextBlock DockPanel.Dock="Top" Margin="0,0,0,4">Themes</TextBlock> <TextBlock DockPanel.Dock="Top" Margin="0,0,0,4">Themes</TextBlock>
<StackPanel DockPanel.Dock="Bottom"> <StackPanel DockPanel.Dock="Bottom">
<WrapPanel Margin="0,0,0,16"> <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> <TextBlock VerticalAlignment="Center">Auto-play CD on load</TextBlock>
</WrapPanel> </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> <Button Name="ApplyButton">Apply</Button>
</StackPanel> </StackPanel>
<ListBox Name="ThemeList" SelectionMode="Single" Margin="0,0,0,16"/> <ListBox Name="ThemeList" SelectionMode="Single" Margin="0,0,0,16"/>

View File

@@ -1,7 +1,6 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text.Json;
using Avalonia.Controls; using Avalonia.Controls;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Markup.Xaml; using Avalonia.Markup.Xaml;
@@ -13,13 +12,12 @@ namespace RedBookPlayer
Settings settings; Settings settings;
ListBox themeList; ListBox themeList;
string selectedTheme; string selectedTheme;
CheckBox autoPlay;
public SettingsWindow() { } public SettingsWindow() { }
public SettingsWindow(Settings settings) public SettingsWindow(Settings settings)
{ {
this.settings = settings; this.DataContext = this.settings = settings;
InitializeComponent(); InitializeComponent();
} }
@@ -33,11 +31,6 @@ namespace RedBookPlayer
selectedTheme = (string)e.AddedItems[0]; selectedTheme = (string)e.AddedItems[0];
} }
public void LoadSettings()
{
autoPlay.IsChecked = settings.AutoPlay;
}
public void ApplySettings(object sender, RoutedEventArgs e) public void ApplySettings(object sender, RoutedEventArgs e)
{ {
if ((selectedTheme ?? "") != "") if ((selectedTheme ?? "") != "")
@@ -46,7 +39,6 @@ namespace RedBookPlayer
MainWindow.ApplyTheme(selectedTheme); MainWindow.ApplyTheme(selectedTheme);
} }
settings.AutoPlay = autoPlay.IsChecked ?? false;
settings.Save(); settings.Save();
} }
@@ -77,9 +69,6 @@ namespace RedBookPlayer
themeList.Items = items; themeList.Items = items;
autoPlay = this.FindControl<CheckBox>("AutoPlay");
LoadSettings();
this.FindControl<Button>("ApplyButton").Click += ApplySettings; this.FindControl<Button>("ApplyButton").Click += ApplySettings;
} }
} }