mirror of
https://github.com/aaru-dps/RedBookPlayer.git
synced 2025-12-16 19:24:41 +00:00
Make keybinds UI-accessible
This commit is contained in:
@@ -1,40 +1,140 @@
|
||||
<Window xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignWidth="800"
|
||||
d:DesignHeight="450" x:Class="RedBookPlayer.GUI.SettingsWindow" Title="Settings" Width="450" Height="600">
|
||||
<DockPanel Margin="16">
|
||||
<TextBlock DockPanel.Dock="Top" Margin="0,0,0,4">Themes</TextBlock>
|
||||
<StackPanel DockPanel.Dock="Bottom">
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<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>
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<CheckBox IsChecked="{Binding AllowSkipHiddenTrack}" Margin="0,0,8,0" />
|
||||
<TextBlock VerticalAlignment="Center">Treat index 0 of track 1 as track 0 (hidden track)</TextBlock>
|
||||
</WrapPanel>
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<CheckBox IsChecked="{Binding PlayDataTracks}" Margin="0,0,8,0"/>
|
||||
<TextBlock VerticalAlignment="Center">Play data tracks like old, non-compliant players</TextBlock>
|
||||
</WrapPanel>
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<CheckBox IsChecked="{Binding GenerateMissingTOC}" Margin="0,0,8,0"/>
|
||||
<TextBlock VerticalAlignment="Center">Generate a TOC if the disc is missing one</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" />
|
||||
</DockPanel>
|
||||
d:DesignHeight="450" x:Class="RedBookPlayer.GUI.SettingsWindow" Title="Settings" SizeToContent="WidthAndHeight">
|
||||
<StackPanel>
|
||||
<TabControl>
|
||||
<TabItem Header="UI Settings">
|
||||
<DockPanel Margin="16">
|
||||
<TextBlock DockPanel.Dock="Top" Margin="0,0,0,4">Themes</TextBlock>
|
||||
<StackPanel DockPanel.Dock="Bottom">
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<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>
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<CheckBox IsChecked="{Binding AllowSkipHiddenTrack}" Margin="0,0,8,0" />
|
||||
<TextBlock VerticalAlignment="Center">Treat index 0 of track 1 as track 0 (hidden track)</TextBlock>
|
||||
</WrapPanel>
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<CheckBox IsChecked="{Binding PlayDataTracks}" Margin="0,0,8,0"/>
|
||||
<TextBlock VerticalAlignment="Center">Play data tracks like old, non-compliant players</TextBlock>
|
||||
</WrapPanel>
|
||||
<WrapPanel Margin="0,0,0,16">
|
||||
<CheckBox IsChecked="{Binding GenerateMissingTOC}" Margin="0,0,8,0"/>
|
||||
<TextBlock VerticalAlignment="Center">Generate a TOC if the disc is missing one</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>
|
||||
</StackPanel>
|
||||
<ListBox Name="ThemeList" SelectionMode="Single" Margin="0,0,0,16" />
|
||||
</DockPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="Keyboard Bindings">
|
||||
<StackPanel Margin="16">
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Load Image</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="LoadImageKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Toggle Play/Pause</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="TogglePlaybackKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Stop Playback</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="StopPlaybackKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Next Track</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="NextTrackKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Previous Track</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="PreviousTrackKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Next Index</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="NextIndexKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Previous Index</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="PreviousIndexKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Fast-Forward</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="FastForwardPlaybackKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Rewind</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="RewindPlaybackKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
<Grid Margin="0,0,0,16">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
<TextBlock Grid.Column="0" Width="120">Toggle De-Emphasis</TextBlock>
|
||||
<ComboBox Grid.Column="1" HorizontalAlignment="Right" Name="ToggleDeEmphasisKeyBind" Margin="8,0,0,0" Width="120"/>
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<Button Name="ApplyButton">Apply</Button>
|
||||
</StackPanel>
|
||||
</Window>
|
||||
@@ -1,6 +1,8 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using Avalonia.Controls;
|
||||
using Avalonia.Input;
|
||||
using Avalonia.Interactivity;
|
||||
using Avalonia.Markup.Xaml;
|
||||
|
||||
@@ -36,6 +38,7 @@ namespace RedBookPlayer.GUI
|
||||
MainWindow.ApplyTheme(_selectedTheme);
|
||||
}
|
||||
|
||||
SaveKeyboardList();
|
||||
_settings.Save();
|
||||
}
|
||||
|
||||
@@ -46,6 +49,7 @@ namespace RedBookPlayer.GUI
|
||||
AvaloniaXamlLoader.Load(this);
|
||||
|
||||
PopulateThemes();
|
||||
PopulateKeyboardList();
|
||||
|
||||
this.FindControl<Button>("ApplyButton").Click += ApplySettings;
|
||||
this.FindControl<Slider>("VolumeSlider").PropertyChanged += (s, e) => UpdateView();
|
||||
@@ -81,5 +85,87 @@ namespace RedBookPlayer.GUI
|
||||
|
||||
_themeList.Items = items;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Populate all of the keyboard bindings
|
||||
/// </summary>
|
||||
private void PopulateKeyboardList()
|
||||
{
|
||||
// Access all of the combo boxes
|
||||
ComboBox LoadImageKeyBind = this.FindControl<ComboBox>("LoadImageKeyBind");
|
||||
ComboBox TogglePlaybackKeyBind = this.FindControl<ComboBox>("TogglePlaybackKeyBind");
|
||||
ComboBox StopPlaybackKeyBind = this.FindControl<ComboBox>("StopPlaybackKeyBind");
|
||||
ComboBox NextTrackKeyBind = this.FindControl<ComboBox>("NextTrackKeyBind");
|
||||
ComboBox PreviousTrackKeyBind = this.FindControl<ComboBox>("PreviousTrackKeyBind");
|
||||
ComboBox NextIndexKeyBind = this.FindControl<ComboBox>("NextIndexKeyBind");
|
||||
ComboBox PreviousIndexKeyBind = this.FindControl<ComboBox>("PreviousIndexKeyBind");
|
||||
ComboBox FastForwardPlaybackKeyBind = this.FindControl<ComboBox>("FastForwardPlaybackKeyBind");
|
||||
ComboBox RewindPlaybackKeyBind = this.FindControl<ComboBox>("RewindPlaybackKeyBind");
|
||||
ComboBox ToggleDeEmphasisKeyBind = this.FindControl<ComboBox>("ToggleDeEmphasisKeyBind");
|
||||
|
||||
// Assign the list of values to all of them
|
||||
Array keyboardList = GenerateKeyboardList();
|
||||
LoadImageKeyBind.Items = keyboardList;
|
||||
TogglePlaybackKeyBind.Items = keyboardList;
|
||||
StopPlaybackKeyBind.Items = keyboardList;
|
||||
NextTrackKeyBind.Items = keyboardList;
|
||||
PreviousTrackKeyBind.Items = keyboardList;
|
||||
NextIndexKeyBind.Items = keyboardList;
|
||||
PreviousIndexKeyBind.Items = keyboardList;
|
||||
FastForwardPlaybackKeyBind.Items = keyboardList;
|
||||
RewindPlaybackKeyBind.Items = keyboardList;
|
||||
ToggleDeEmphasisKeyBind.Items = keyboardList;
|
||||
|
||||
// Set all of the currently selected items
|
||||
LoadImageKeyBind.SelectedItem = _settings.LoadImageKey;
|
||||
TogglePlaybackKeyBind.SelectedItem = _settings.TogglePlaybackKey;
|
||||
StopPlaybackKeyBind.SelectedItem = _settings.StopPlaybackKey;
|
||||
NextTrackKeyBind.SelectedItem = _settings.NextTrackKey;
|
||||
PreviousTrackKeyBind.SelectedItem = _settings.PreviousTrackKey;
|
||||
NextIndexKeyBind.SelectedItem = _settings.NextIndexKey;
|
||||
PreviousIndexKeyBind.SelectedItem = _settings.PreviousIndexKey;
|
||||
FastForwardPlaybackKeyBind.SelectedItem = _settings.FastForwardPlaybackKey;
|
||||
RewindPlaybackKeyBind.SelectedItem = _settings.RewindPlaybackKey;
|
||||
ToggleDeEmphasisKeyBind.SelectedItem = _settings.ToggleDeEmphasisKey;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save back all values from keyboard bindings
|
||||
/// </summary>
|
||||
private void SaveKeyboardList()
|
||||
{
|
||||
// Access all of the combo boxes
|
||||
ComboBox LoadImageKeyBind = this.FindControl<ComboBox>("LoadImageKeyBind");
|
||||
ComboBox TogglePlaybackKeyBind = this.FindControl<ComboBox>("TogglePlaybackKeyBind");
|
||||
ComboBox StopPlaybackKeyBind = this.FindControl<ComboBox>("StopPlaybackKeyBind");
|
||||
ComboBox NextTrackKeyBind = this.FindControl<ComboBox>("NextTrackKeyBind");
|
||||
ComboBox PreviousTrackKeyBind = this.FindControl<ComboBox>("PreviousTrackKeyBind");
|
||||
ComboBox NextIndexKeyBind = this.FindControl<ComboBox>("NextIndexKeyBind");
|
||||
ComboBox PreviousIndexKeyBind = this.FindControl<ComboBox>("PreviousIndexKeyBind");
|
||||
ComboBox FastForwardPlaybackKeyBind = this.FindControl<ComboBox>("FastForwardPlaybackKeyBind");
|
||||
ComboBox RewindPlaybackKeyBind = this.FindControl<ComboBox>("RewindPlaybackKeyBind");
|
||||
ComboBox ToggleDeEmphasisKeyBind = this.FindControl<ComboBox>("ToggleDeEmphasisKeyBind");
|
||||
|
||||
// Set all of the currently selected items
|
||||
_settings.LoadImageKey = (Key)LoadImageKeyBind.SelectedItem;
|
||||
_settings.TogglePlaybackKey = (Key)TogglePlaybackKeyBind.SelectedItem;
|
||||
_settings.StopPlaybackKey = (Key)StopPlaybackKeyBind.SelectedItem;
|
||||
_settings.NextTrackKey = (Key)NextTrackKeyBind.SelectedItem;
|
||||
_settings.PreviousTrackKey = (Key)PreviousTrackKeyBind.SelectedItem;
|
||||
_settings.NextIndexKey = (Key)NextIndexKeyBind.SelectedItem;
|
||||
_settings.PreviousIndexKey = (Key)PreviousIndexKeyBind.SelectedItem;
|
||||
_settings.FastForwardPlaybackKey = (Key)FastForwardPlaybackKeyBind.SelectedItem;
|
||||
_settings.RewindPlaybackKey = (Key)RewindPlaybackKeyBind.SelectedItem;
|
||||
_settings.ToggleDeEmphasisKey = (Key)ToggleDeEmphasisKeyBind.SelectedItem;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Generate a list of keyboard keys for mapping
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
private Array GenerateKeyboardList()
|
||||
{
|
||||
return Enum.GetValues(typeof(Key));
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user