Add support to select audio devices

pull/1/head
php 1 year ago
parent 238b598afe
commit e9d81266bc

@ -0,0 +1,24 @@
<Window x:Class="WhackerLinkConsoleV2.AudioSettingsWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Audio Settings" Height="250" Width="400"
WindowStartupLocation="CenterScreen">
<Grid Margin="10">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<TextBlock Text="Audio Input Device" FontWeight="Bold" Margin="0,0,0,5"/>
<ComboBox x:Name="InputDeviceComboBox" Width="300" Margin="70,15,10,5"/>
<TextBlock Text="Audio Output Device" FontWeight="Bold" Grid.Row="1" Margin="0,0,0,5"/>
<ComboBox x:Name="OutputDeviceComboBox" Width="300" Grid.Row="1" Margin="70,18,10,2"/>
<StackPanel Orientation="Horizontal" HorizontalAlignment="Right" Grid.Row="2" Margin="0,20,0,0">
<Button x:Name="SaveButton" Content="Save" Width="100" Margin="0,0,10,0" Click="SaveButton_Click"/>
<Button x:Name="CancelButton" Content="Cancel" Width="100" Click="CancelButton_Click"/>
</StackPanel>
</Grid>
</Window>

@ -0,0 +1,65 @@
using System.Windows;
using System.Collections.Generic;
using NAudio.Wave;
namespace WhackerLinkConsoleV2
{
public partial class AudioSettingsWindow : Window
{
public int? SelectedInputDeviceIndex { get; private set; }
public int? SelectedOutputDeviceIndex { get; private set; }
public AudioSettingsWindow()
{
InitializeComponent();
LoadAudioDevices();
}
private void LoadAudioDevices()
{
InputDeviceComboBox.ItemsSource = GetAudioInputDevices();
OutputDeviceComboBox.ItemsSource = GetAudioOutputDevices();
}
private List<string> GetAudioInputDevices()
{
List<string> inputDevices = new List<string>();
for (int i = 0; i < WaveIn.DeviceCount; i++)
{
var deviceInfo = WaveIn.GetCapabilities(i);
inputDevices.Add(deviceInfo.ProductName);
}
return inputDevices;
}
private List<string> GetAudioOutputDevices()
{
List<string> outputDevices = new List<string>();
for (int i = 0; i < WaveOut.DeviceCount; i++)
{
var deviceInfo = WaveOut.GetCapabilities(i);
outputDevices.Add(deviceInfo.ProductName);
}
return outputDevices;
}
private void SaveButton_Click(object sender, RoutedEventArgs e)
{
SelectedInputDeviceIndex = InputDeviceComboBox.SelectedIndex;
SelectedOutputDeviceIndex = OutputDeviceComboBox.SelectedIndex;
DialogResult = true;
Close();
}
private void CancelButton_Click(object sender, RoutedEventArgs e)
{
DialogResult = false;
Close();
}
}
}

@ -14,6 +14,7 @@
<MenuItem Header="Open Codeplug" Click="OpenCodeplug_Click"/> <MenuItem Header="Open Codeplug" Click="OpenCodeplug_Click"/>
</MenuItem> </MenuItem>
<MenuItem Header="Edit"> <MenuItem Header="Edit">
<MenuItem Header="Audio Settings" Click="AudioSettings_Click" />
<MenuItem Header="Enable Edit Mode" Click="ToggleEditMode_Click"/> <MenuItem Header="Enable Edit Mode" Click="ToggleEditMode_Click"/>
<MenuItem Header="Select Widgets to Display" Click="SelectWidgets_Click"/> <MenuItem Header="Select Widgets to Display" Click="SelectWidgets_Click"/>
<MenuItem Header="Reset Settings" Click="ResetSettings_Click"/> <MenuItem Header="Reset Settings" Click="ResetSettings_Click"/>

@ -310,6 +310,31 @@ namespace WhackerLinkConsoleV2
} }
} }
private void AudioSettings_Click(object sender, RoutedEventArgs e)
{
AudioSettingsWindow audioSettingsWindow = new AudioSettingsWindow();
if (audioSettingsWindow.ShowDialog() == true)
{
int? inputDeviceIndex = audioSettingsWindow.SelectedInputDeviceIndex;
int? outputDeviceIndex = audioSettingsWindow.SelectedOutputDeviceIndex;
if (inputDeviceIndex.HasValue && outputDeviceIndex.HasValue)
{
MessageBox.Show($"Selected Input Device Index: {inputDeviceIndex}\n" +
$"Selected Output Device Index: {outputDeviceIndex}",
"Selected Devices");
_waveIn.DeviceNumber = inputDeviceIndex.Value;
_waveOut.DeviceNumber = outputDeviceIndex.Value;
}
else
{
MessageBox.Show("No device selected.", "Warning");
}
}
}
private void SelectWidgets_Click(object sender, RoutedEventArgs e) private void SelectWidgets_Click(object sender, RoutedEventArgs e)
{ {
var widgetSelectionWindow = new WidgetSelectionWindow(); var widgetSelectionWindow = new WidgetSelectionWindow();

Loading…
Cancel
Save

Powered by TurnKey Linux.