From ca0a51ec153010bfaf6028af9fbf31ea9968e05f Mon Sep 17 00:00:00 2001 From: rbalsleyMSFT <53497092+rbalsleyMSFT@users.noreply.github.com> Date: Thu, 19 Jun 2025 19:16:11 -0700 Subject: [PATCH] Refactor VM Switch initialization logic Move the `Initialize-VMSwitchData` function call from the main UI script into the `Initialize-UIDefaults` function. This change centralizes the UI default initialization logic within the core module, improving code organization and ensuring VM Switch data is loaded at the correct time. --- FFUDevelopment/BuildFFUVM_UI.ps1 | 2 - .../FFUUI.Core/FFUUI.Core.Initialize.psm1 | 72 ++++++++++--------- 2 files changed, 37 insertions(+), 37 deletions(-) diff --git a/FFUDevelopment/BuildFFUVM_UI.ps1 b/FFUDevelopment/BuildFFUVM_UI.ps1 index 4d91b66..c3a6396 100644 --- a/FFUDevelopment/BuildFFUVM_UI.ps1 +++ b/FFUDevelopment/BuildFFUVM_UI.ps1 @@ -131,8 +131,6 @@ $window.Add_Loaded({ Initialize-DynamicUIElements -State $script:uiState - Initialize-VMSwitchData -State $script:uiState - Register-EventHandlers -State $script:uiState }) diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Initialize.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Initialize.psm1 index 6b663d4..b840362 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Initialize.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Initialize.psm1 @@ -146,6 +146,37 @@ function Initialize-UIControls { $State.Controls.chkUpdateADK = $window.FindName('chkUpdateADK') } +function Initialize-VMSwitchData { + param([PSCustomObject]$State) + + WriteLog "Initializing VM Switch data..." + + # Hyper-V Settings: Populate VM Switch ComboBox + $vmSwitchData = Get-VMSwitchData + $State.Data.vmSwitchMap = $vmSwitchData.SwitchMap + $State.Controls.cmbVMSwitchName.Items.Clear() + foreach ($switchName in $vmSwitchData.SwitchNames) { + $State.Controls.cmbVMSwitchName.Items.Add($switchName) | Out-Null + } + $State.Controls.cmbVMSwitchName.Items.Add('Other') | Out-Null + if ($State.Controls.cmbVMSwitchName.Items.Count -gt 1) { + $State.Controls.cmbVMSwitchName.SelectedIndex = 0 + $firstSwitch = $State.Controls.cmbVMSwitchName.SelectedItem + if ($State.Data.vmSwitchMap.ContainsKey($firstSwitch)) { + $State.Controls.txtVMHostIPAddress.Text = $State.Data.vmSwitchMap[$firstSwitch] + } + else { + $State.Controls.txtVMHostIPAddress.Text = $State.Defaults.generalDefaults.VMHostIPAddress # Use default if IP not found + } + $State.Controls.txtCustomVMSwitchName.Visibility = 'Collapsed' + } + else { + $State.Controls.cmbVMSwitchName.SelectedItem = 'Other' + $State.Controls.txtCustomVMSwitchName.Visibility = 'Visible' + $State.Controls.txtVMHostIPAddress.Text = $State.Defaults.generalDefaults.VMHostIPAddress # Use default + } +} + function Initialize-UIDefaults { param([PSCustomObject]$State) WriteLog "Initializing UI defaults..." @@ -186,6 +217,7 @@ function Initialize-UIDefaults { $State.Controls.chkPromptExternalHardDiskMedia.IsEnabled = $State.Controls.chkAllowExternalHardDiskMedia.IsChecked # Hyper-V Settings defaults from General Defaults + Initialize-VMSwitchData -State $State $State.Controls.txtDiskSize.Text = $State.Defaults.generalDefaults.DiskSizeGB $State.Controls.txtMemory.Text = $State.Defaults.generalDefaults.MemoryGB $State.Controls.txtProcessors.Text = $State.Defaults.generalDefaults.Processors @@ -262,12 +294,12 @@ function Initialize-UIDefaults { # Set initial state for Office panel visibility Update-OfficePanelVisibility -State $State - # Set initial state for Application panel visibility - Update-ApplicationPanelVisibility -State $State + # Set initial state for Application panel visibility + Update-ApplicationPanelVisibility -State $State - # Set initial state for BYO Apps copy button - Update-CopyButtonState -State $State - } + # Set initial state for BYO Apps copy button + Update-CopyButtonState -State $State +} function Initialize-DynamicUIElements { param([PSCustomObject]$State) @@ -470,35 +502,5 @@ function Initialize-DynamicUIElements { } } -function Initialize-VMSwitchData { - param([PSCustomObject]$State) - - WriteLog "Initializing VM Switch data..." - - # Hyper-V Settings: Populate VM Switch ComboBox - $vmSwitchData = Get-VMSwitchData - $State.Data.vmSwitchMap = $vmSwitchData.SwitchMap - $State.Controls.cmbVMSwitchName.Items.Clear() - foreach ($switchName in $vmSwitchData.SwitchNames) { - $State.Controls.cmbVMSwitchName.Items.Add($switchName) | Out-Null - } - $State.Controls.cmbVMSwitchName.Items.Add('Other') | Out-Null - if ($State.Controls.cmbVMSwitchName.Items.Count -gt 1) { - $State.Controls.cmbVMSwitchName.SelectedIndex = 0 - $firstSwitch = $State.Controls.cmbVMSwitchName.SelectedItem - if ($State.Data.vmSwitchMap.ContainsKey($firstSwitch)) { - $State.Controls.txtVMHostIPAddress.Text = $State.Data.vmSwitchMap[$firstSwitch] - } - else { - $State.Controls.txtVMHostIPAddress.Text = $State.Defaults.generalDefaults.VMHostIPAddress # Use default if IP not found - } - $State.Controls.txtCustomVMSwitchName.Visibility = 'Collapsed' - } - else { - $State.Controls.cmbVMSwitchName.SelectedItem = 'Other' - $State.Controls.txtCustomVMSwitchName.Visibility = 'Visible' - $State.Controls.txtVMHostIPAddress.Text = $State.Defaults.generalDefaults.VMHostIPAddress # Use default - } -} Export-ModuleMember -Function *