mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-02-23 19:49:43 +01:00
#
Refactor VCP code handling and improve immutability Refactored `WaitForColorTempAndSaveAsync` to use `IReadOnlyList<Task>` for improved immutability. Removed the `GetMonitorViewModel` method from `MainViewModel.Monitors.cs`. Simplified VCP code handling in `MainViewModel.Settings.cs` by inlining the logic of `BuildVcpCodesList` and `BuildFormattedVcpCodesList` into the object initialization for `monitorInfo`. This reduces redundancy and improves code readability and maintainability.
This commit is contained in:
@@ -150,7 +150,7 @@ public partial class MainViewModel
|
||||
}
|
||||
}
|
||||
|
||||
private async Task WaitForColorTempAndSaveAsync(List<Task> colorTempTasks)
|
||||
private async Task WaitForColorTempAndSaveAsync(IReadOnlyList<Task> colorTempTasks)
|
||||
{
|
||||
try
|
||||
{
|
||||
@@ -200,9 +200,6 @@ public partial class MainViewModel
|
||||
}
|
||||
}
|
||||
|
||||
private MonitorViewModel? GetMonitorViewModel(string monitorId)
|
||||
=> Monitors.FirstOrDefault(vm => vm.Id == monitorId);
|
||||
|
||||
/// <summary>
|
||||
/// Get set of hidden monitor IDs from settings
|
||||
/// </summary>
|
||||
|
||||
@@ -556,8 +556,10 @@ public partial class MainViewModel
|
||||
colorTemperatureVcp: vm.ColorTemperature)
|
||||
{
|
||||
CapabilitiesRaw = vm.CapabilitiesRaw,
|
||||
VcpCodes = BuildVcpCodesList(vm),
|
||||
VcpCodesFormatted = BuildFormattedVcpCodesList(vm),
|
||||
VcpCodes = vm.VcpCapabilitiesInfo?.GetVcpCodesAsHexStrings() ?? new List<string>(),
|
||||
VcpCodesFormatted = vm.VcpCapabilitiesInfo?.GetSortedVcpCodes()
|
||||
.Select(info => FormatVcpCodeForDisplay(info.Code, info))
|
||||
.ToList() ?? new List<Microsoft.PowerToys.Settings.UI.Library.VcpCodeDisplayInfo>(),
|
||||
|
||||
// Infer support flags from VCP capabilities
|
||||
// VCP 0x12 (18) = Contrast, 0x14 (20) = Color Temperature, 0x60 (96) = Input Source, 0x62 (98) = Volume
|
||||
@@ -573,33 +575,6 @@ public partial class MainViewModel
|
||||
return monitorInfo;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Build list of VCP codes in hex format
|
||||
/// </summary>
|
||||
private List<string> BuildVcpCodesList(MonitorViewModel vm)
|
||||
{
|
||||
return vm.VcpCapabilitiesInfo?.GetVcpCodesAsHexStrings() ?? new List<string>();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Build list of formatted VCP codes with display info
|
||||
/// </summary>
|
||||
private List<Microsoft.PowerToys.Settings.UI.Library.VcpCodeDisplayInfo> BuildFormattedVcpCodesList(MonitorViewModel vm)
|
||||
{
|
||||
if (vm.VcpCapabilitiesInfo == null)
|
||||
{
|
||||
return new List<Microsoft.PowerToys.Settings.UI.Library.VcpCodeDisplayInfo>();
|
||||
}
|
||||
|
||||
var result = new List<Microsoft.PowerToys.Settings.UI.Library.VcpCodeDisplayInfo>();
|
||||
foreach (var info in vm.VcpCapabilitiesInfo.GetSortedVcpCodes())
|
||||
{
|
||||
result.Add(FormatVcpCodeForDisplay(info.Code, info));
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Apply preserved user settings from existing monitor settings
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user