From 5bf0a610e8b2a4e976ee5be87e3e05ce214739b6 Mon Sep 17 00:00:00 2001 From: Yu Leng Date: Mon, 8 Dec 2025 14:57:05 +0800 Subject: [PATCH] # Refactor VCP code handling and improve immutability Refactored `WaitForColorTempAndSaveAsync` to use `IReadOnlyList` 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. --- .../ViewModels/MainViewModel.Monitors.cs | 5 +-- .../ViewModels/MainViewModel.Settings.cs | 33 +++---------------- 2 files changed, 5 insertions(+), 33 deletions(-) diff --git a/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Monitors.cs b/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Monitors.cs index 5966f8fc27..9d64c8c575 100644 --- a/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Monitors.cs +++ b/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Monitors.cs @@ -150,7 +150,7 @@ public partial class MainViewModel } } - private async Task WaitForColorTempAndSaveAsync(List colorTempTasks) + private async Task WaitForColorTempAndSaveAsync(IReadOnlyList colorTempTasks) { try { @@ -200,9 +200,6 @@ public partial class MainViewModel } } - private MonitorViewModel? GetMonitorViewModel(string monitorId) - => Monitors.FirstOrDefault(vm => vm.Id == monitorId); - /// /// Get set of hidden monitor IDs from settings /// diff --git a/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs b/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs index 8babf97a1e..699193610d 100644 --- a/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs +++ b/src/modules/powerdisplay/PowerDisplay/ViewModels/MainViewModel.Settings.cs @@ -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(), + VcpCodesFormatted = vm.VcpCapabilitiesInfo?.GetSortedVcpCodes() + .Select(info => FormatVcpCodeForDisplay(info.Code, info)) + .ToList() ?? new List(), // 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; } - /// - /// Build list of VCP codes in hex format - /// - private List BuildVcpCodesList(MonitorViewModel vm) - { - return vm.VcpCapabilitiesInfo?.GetVcpCodesAsHexStrings() ?? new List(); - } - - /// - /// Build list of formatted VCP codes with display info - /// - private List BuildFormattedVcpCodesList(MonitorViewModel vm) - { - if (vm.VcpCapabilitiesInfo == null) - { - return new List(); - } - - var result = new List(); - foreach (var info in vm.VcpCapabilitiesInfo.GetSortedVcpCodes()) - { - result.Add(FormatVcpCodeForDisplay(info.Code, info)); - } - - return result; - } - /// /// Apply preserved user settings from existing monitor settings ///