Add Characteristic Menu

This commit is contained in:
2026-01-07 10:54:31 +01:00
parent 729fe2c0a4
commit b0382c17e0
2 changed files with 38 additions and 4 deletions

View File

@@ -4,7 +4,9 @@ namespace Flashcap_Demo;
public class Menu public class Menu
{ {
public required List<CaptureDeviceDescriptor> DeviceDescriptors { get; init; } public required List<CaptureDeviceDescriptor> DeviceDescriptors { get; set; }
public CaptureDeviceDescriptor? ChosenDevice { get; set; }
public VideoCharacteristics? ChosenCharacteristic { get; set; }
public CaptureDeviceDescriptor ShowDeviceMenu() public CaptureDeviceDescriptor ShowDeviceMenu()
{ {
@@ -20,7 +22,40 @@ public class Menu
} }
deviceIndex = result-1; deviceIndex = result-1;
} }
return DeviceDescriptors[deviceIndex]; ChosenDevice = DeviceDescriptors[deviceIndex];
return ChosenDevice;
}
public VideoCharacteristics ShowCharacteristicMenu(CaptureDeviceDescriptor? deviceDescriptor = null)
{
if (ChosenDevice == null && deviceDescriptor == null)
{
throw new ArgumentException("You must choose a device");
}
ChosenDevice ??= deviceDescriptor;
var index = -1;
while (index == -1)
{
PrintCharacteristics();
var input = Console.ReadLine();
int.TryParse(input, out var result);
if (result<1 || result>ChosenDevice!.Characteristics.Length)
{
continue;
}
index = result-1;
}
ChosenCharacteristic = ChosenDevice!.Characteristics[index];
return ChosenCharacteristic;
}
private void PrintCharacteristics()
{
Console.WriteLine("Choose your Resolution/Framerate:");
for (var index = ChosenDevice!.Characteristics.Length-1; index >=0; index--)
{
var characteristic = ChosenDevice.Characteristics[index];
Console.WriteLine($"\t({index + 1}): {characteristic}");
}
} }
private void PrintDevices() private void PrintDevices()
{ {

View File

@@ -16,8 +16,7 @@ internal static class Program
DeviceDescriptors = deviceDescriptors, DeviceDescriptors = deviceDescriptors,
}; };
var captureDeviceDescriptor = menu.ShowDeviceMenu(); var captureDeviceDescriptor = menu.ShowDeviceMenu();
Console.WriteLine($"Characteristics:\n\t" + var characteristic = menu.ShowCharacteristicMenu();
$"{string.Join("\n\t",captureDeviceDescriptor.Characteristics)}");
} }
} }