diff --git a/Flashcap-Demo/Menu.cs b/Flashcap-Demo/Menu.cs index 415593d..2628b50 100644 --- a/Flashcap-Demo/Menu.cs +++ b/Flashcap-Demo/Menu.cs @@ -4,7 +4,9 @@ namespace Flashcap_Demo; public class Menu { - public required List DeviceDescriptors { get; init; } + public required List DeviceDescriptors { get; set; } + public CaptureDeviceDescriptor? ChosenDevice { get; set; } + public VideoCharacteristics? ChosenCharacteristic { get; set; } public CaptureDeviceDescriptor ShowDeviceMenu() { @@ -20,7 +22,40 @@ public class Menu } 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() { diff --git a/Flashcap-Demo/Program.cs b/Flashcap-Demo/Program.cs index 01a3b48..179745d 100644 --- a/Flashcap-Demo/Program.cs +++ b/Flashcap-Demo/Program.cs @@ -16,8 +16,7 @@ internal static class Program DeviceDescriptors = deviceDescriptors, }; var captureDeviceDescriptor = menu.ShowDeviceMenu(); - Console.WriteLine($"Characteristics:\n\t" + - $"{string.Join("\n\t",captureDeviceDescriptor.Characteristics)}"); + var characteristic = menu.ShowCharacteristicMenu(); } } \ No newline at end of file