From f1d0ab20cb75cc63bee385568f4c1d694f8ab1b2 Mon Sep 17 00:00:00 2001 From: rbalsleyMSFT <53497092+rbalsleyMSFT@users.noreply.github.com> Date: Mon, 16 Jun 2025 19:37:58 -0700 Subject: [PATCH] Refactor function names and improve code formatting Renames functions for better semantic clarity: - `Refresh-WindowsSettingsCombos` becomes `Initialize-WindowsSettingsCombos` to better reflect its role in initial UI setup. - `Filter-DriverModels` becomes `Search-DriverModels` to more accurately describe its use in user-driven model searches. Enhances code readability in the UI script through consistent formatting of event handlers and multi-line script blocks. --- FFUDevelopment/BuildFFUVM_UI.ps1 | 134 +++++++++++++----- .../FFUUI.Core/FFUUI.Core.Drivers.psm1 | 6 +- .../FFUUI.Core.WindowsSettings.psm1 | 6 +- 3 files changed, 103 insertions(+), 43 deletions(-) diff --git a/FFUDevelopment/BuildFFUVM_UI.ps1 b/FFUDevelopment/BuildFFUVM_UI.ps1 index a6eaeb7..de9a5d7 100644 --- a/FFUDevelopment/BuildFFUVM_UI.ps1 +++ b/FFUDevelopment/BuildFFUVM_UI.ps1 @@ -18,7 +18,7 @@ $FFUDevelopmentPath = 'C:\FFUDevelopment' # hard coded for testing $script:uiState = [PSCustomObject]@{ Window = $null; Controls = @{ - featureCheckBoxes = @{}; + featureCheckBoxes = @{}; UpdateInstallAppsBasedOnUpdates = $null }; Data = @{ @@ -28,11 +28,11 @@ $script:uiState = [PSCustomObject]@{ vmSwitchMap = @{} }; Flags = @{ - installAppsForcedByUpdates = $false; + installAppsForcedByUpdates = $false; prevInstallAppsStateBeforeUpdates = $null; - installAppsCheckedByOffice = $false; - lastSortProperty = $null; - lastSortAscending = $true + installAppsCheckedByOffice = $false; + lastSortProperty = $null; + lastSortAscending = $true }; Defaults = @{}; LogFilePath = "$FFUDevelopmentPath\FFUDevelopment_UI.log" @@ -151,8 +151,10 @@ $window.Add_Loaded({ Initialize-DynamicUIElements -State $script:uiState # Initialize Windows Settings UI using data from helper module - Refresh-WindowsSettingsCombos -isoPath $script:uiState.Defaults.windowsSettingsDefaults.DefaultISOPath -State $script:uiState # Use combined refresh function - $script:uiState.Controls.txtISOPath.Add_TextChanged({ Refresh-WindowsSettingsCombos -isoPath $script:uiState.Controls.txtISOPath.Text -State $script:uiState }) + Initialize-WindowsSettingsCombos -isoPath $script:uiState.Defaults.windowsSettingsDefaults.DefaultISOPath -State $script:uiState # Use combined refresh function + $script:uiState.Controls.txtISOPath.Add_TextChanged({ + Initialize-WindowsSettingsCombos -isoPath $script:uiState.Controls.txtISOPath.Text -State $script:uiState + }) $script:uiState.Controls.cmbWindowsRelease.Add_SelectionChanged({ $selectedReleaseValue = 11 # Default if null if ($null -ne $script:uiState.Controls.cmbWindowsRelease.SelectedItem) { @@ -410,7 +412,7 @@ $window.Add_Loaded({ }) $script:uiState.Controls.txtModelFilter.Add_TextChanged({ param($sourceObject, $textChangedEventArgs) - Filter-DriverModels -filterText $script:uiState.Controls.txtModelFilter.Text -State $script:uiState + Search-DriverModels -filterText $script:uiState.Controls.txtModelFilter.Text -State $script:uiState }) $script:uiState.Controls.btnDownloadSelectedDrivers.Add_Click({ param($buttonSender, $clickEventArgs) @@ -574,8 +576,12 @@ $window.Add_Loaded({ $script:uiState.Controls.txtModelFilter.Text = "" $script:uiState.Controls.txtStatus.Text = "Driver list cleared." }) - $script:uiState.Controls.btnSaveDriversJson.Add_Click({ Save-DriversJson -State $script:uiState }) - $script:uiState.Controls.btnImportDriversJson.Add_Click({ Import-DriversJson -State $script:uiState }) + $script:uiState.Controls.btnSaveDriversJson.Add_Click({ + Save-DriversJson -State $script:uiState + }) + $script:uiState.Controls.btnImportDriversJson.Add_Click({ + Import-DriversJson -State $script:uiState + }) # Office interplay (Keep existing logic) $script:uiState.Flags.installAppsCheckedByOffice = $false @@ -658,22 +664,46 @@ $window.Add_Loaded({ } } } - $script:uiState.Controls.chkUpdateLatestDefender.Add_Checked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) - $script:uiState.Controls.chkUpdateLatestDefender.Add_Unchecked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) - $script:uiState.Controls.chkUpdateEdge.Add_Checked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) - $script:uiState.Controls.chkUpdateEdge.Add_Unchecked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) - $script:uiState.Controls.chkUpdateOneDrive.Add_Checked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) - $script:uiState.Controls.chkUpdateOneDrive.Add_Unchecked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) - $script:uiState.Controls.chkUpdateLatestMSRT.Add_Checked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) - $script:uiState.Controls.chkUpdateLatestMSRT.Add_Unchecked({ & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState }) + $script:uiState.Controls.chkUpdateLatestDefender.Add_Checked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) + $script:uiState.Controls.chkUpdateLatestDefender.Add_Unchecked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) + $script:uiState.Controls.chkUpdateEdge.Add_Checked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) + $script:uiState.Controls.chkUpdateEdge.Add_Unchecked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) + $script:uiState.Controls.chkUpdateOneDrive.Add_Checked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) + $script:uiState.Controls.chkUpdateOneDrive.Add_Unchecked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) + $script:uiState.Controls.chkUpdateLatestMSRT.Add_Checked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) + $script:uiState.Controls.chkUpdateLatestMSRT.Add_Unchecked({ + & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState + }) # Initial check for Updates/InstallApps state & $script:uiState.Controls.UpdateInstallAppsBasedOnUpdates -State $script:uiState # CU interplay (Keep existing logic) - $script:uiState.Controls.chkLatestCU.Add_Checked({ $script:uiState.Controls.chkPreviewCU.IsEnabled = $false }) - $script:uiState.Controls.chkLatestCU.Add_Unchecked({ $script:uiState.Controls.chkPreviewCU.IsEnabled = $true }) - $script:uiState.Controls.chkPreviewCU.Add_Checked({ $script:uiState.Controls.chkLatestCU.IsEnabled = $false }) - $script:uiState.Controls.chkPreviewCU.Add_Unchecked({ $script:uiState.Controls.chkLatestCU.IsEnabled = $true }) + $script:uiState.Controls.chkLatestCU.Add_Checked({ + $script:uiState.Controls.chkPreviewCU.IsEnabled = $false + }) + $script:uiState.Controls.chkLatestCU.Add_Unchecked({ + $script:uiState.Controls.chkPreviewCU.IsEnabled = $true + }) + $script:uiState.Controls.chkPreviewCU.Add_Checked({ + $script:uiState.Controls.chkLatestCU.IsEnabled = $false + }) + $script:uiState.Controls.chkPreviewCU.Add_Unchecked({ + $script:uiState.Controls.chkLatestCU.IsEnabled = $true + }) # Set initial state based on defaults $script:uiState.Controls.chkPreviewCU.IsEnabled = -not $script:uiState.Controls.chkLatestCU.IsChecked $script:uiState.Controls.chkLatestCU.IsEnabled = -not $script:uiState.Controls.chkPreviewCU.IsChecked @@ -727,14 +757,18 @@ $window.Add_Loaded({ $script:uiState.Controls.lstUSBDrives.Items.Clear() $script:uiState.Controls.chkSelectAllUSBDrives.IsChecked = $false }) - $script:uiState.Controls.chkSelectSpecificUSBDrives.Add_Checked({ $script:uiState.Controls.usbSelectionPanel.Visibility = 'Visible' }) + $script:uiState.Controls.chkSelectSpecificUSBDrives.Add_Checked({ + $script:uiState.Controls.usbSelectionPanel.Visibility = 'Visible' + }) $script:uiState.Controls.chkSelectSpecificUSBDrives.Add_Unchecked({ $script:uiState.Controls.usbSelectionPanel.Visibility = 'Collapsed' $script:uiState.Controls.lstUSBDrives.Items.Clear() $script:uiState.Controls.chkSelectAllUSBDrives.IsChecked = $false }) $script:uiState.Controls.chkSelectSpecificUSBDrives.IsEnabled = $script:uiState.Controls.chkBuildUSBDriveEnable.IsChecked - $script:uiState.Controls.chkAllowExternalHardDiskMedia.Add_Checked({ $script:uiState.Controls.chkPromptExternalHardDiskMedia.IsEnabled = $true }) + $script:uiState.Controls.chkAllowExternalHardDiskMedia.Add_Checked({ + $script:uiState.Controls.chkPromptExternalHardDiskMedia.IsEnabled = $true + }) $script:uiState.Controls.chkAllowExternalHardDiskMedia.Add_Unchecked({ $script:uiState.Controls.chkPromptExternalHardDiskMedia.IsEnabled = $false $script:uiState.Controls.chkPromptExternalHardDiskMedia.IsChecked = $false @@ -785,7 +819,9 @@ $window.Add_Loaded({ $ofd.CheckFileExists = $false if ($ofd.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) { $script:uiState.Controls.txtAppListJsonPath.Text = $ofd.FileName } }) - $script:uiState.Controls.chkBringYourOwnApps.Add_Checked({ $script:uiState.Controls.byoApplicationPanel.Visibility = 'Visible' }) + $script:uiState.Controls.chkBringYourOwnApps.Add_Checked({ + $script:uiState.Controls.byoApplicationPanel.Visibility = 'Visible' + }) $script:uiState.Controls.chkBringYourOwnApps.Add_Unchecked({ $script:uiState.Controls.byoApplicationPanel.Visibility = 'Collapsed' # Clear fields when hiding @@ -794,7 +830,9 @@ $window.Add_Loaded({ $script:uiState.Controls.txtAppArguments.Text = '' $script:uiState.Controls.txtAppSource.Text = '' }) - $script:uiState.Controls.chkInstallWingetApps.Add_Checked({ $script:uiState.Controls.wingetPanel.Visibility = 'Visible' }) + $script:uiState.Controls.chkInstallWingetApps.Add_Checked({ + $script:uiState.Controls.wingetPanel.Visibility = 'Visible' + }) $script:uiState.Controls.chkInstallWingetApps.Add_Unchecked({ $script:uiState.Controls.wingetPanel.Visibility = 'Collapsed' $script:uiState.Controls.wingetSearchPanel.Visibility = 'Collapsed' # Hide search when unchecked @@ -846,17 +884,27 @@ $window.Add_Loaded({ $window.Cursor = $null } }) - $script:uiState.Controls.btnWingetSearch.Add_Click({ Search-WingetApps -State $script:uiState }) + $script:uiState.Controls.btnWingetSearch.Add_Click({ + Search-WingetApps -State $script:uiState + }) $script:uiState.Controls.txtWingetSearch.Add_KeyDown({ param($eventSrc, $keyEvent) - if ($keyEvent.Key -eq 'Return') { Search-WingetApps -State $script:uiState; $keyEvent.Handled = $true } + if ($keyEvent.Key -eq 'Return') { + Search-WingetApps -State $script:uiState; $keyEvent.Handled = $true + } }) - $script:uiState.Controls.btnSaveWingetList.Add_Click({ Save-WingetList -State $script:uiState }) - $script:uiState.Controls.btnImportWingetList.Add_Click({ Import-WingetList -State $script:uiState }) + $script:uiState.Controls.btnSaveWingetList.Add_Click({ + Save-WingetList -State $script:uiState + }) + $script:uiState.Controls.btnImportWingetList.Add_Click({ + Import-WingetList -State $script:uiState + }) $script:uiState.Controls.btnClearWingetList.Add_Click({ $script:uiState.Controls.lstWingetResults.ItemsSource = @() # Set ItemsSource to an empty array $script:uiState.Controls.txtWingetSearch.Text = "" - if ($script:uiState.Controls.txtStatus) { $script:uiState.Controls.txtStatus.Text = "Cleared all applications from the list" } + if ($script:uiState.Controls.txtStatus) { + $script:uiState.Controls.txtStatus.Text = "Cleared all applications from the list" + } }) $script:uiState.Controls.btnDownloadSelected.Add_Click({ @@ -1002,10 +1050,18 @@ $window.Add_Loaded({ $script:uiState.Controls.pbOverallProgress.Visibility = 'Collapsed' $buttonSender.IsEnabled = $true }) - $script:uiState.Controls.btnMoveTop.Add_Click({ Move-ListViewItemTop -ListView $script:uiState.Controls.lstApplications }) - $script:uiState.Controls.btnMoveUp.Add_Click({ Move-ListViewItemUp -ListView $script:uiState.Controls.lstApplications }) - $script:uiState.Controls.btnMoveDown.Add_Click({ Move-ListViewItemDown -ListView $script:uiState.Controls.lstApplications }) - $script:uiState.Controls.btnMoveBottom.Add_Click({ Move-ListViewItemBottom -ListView $script:uiState.Controls.lstApplications }) + $script:uiState.Controls.btnMoveTop.Add_Click({ + Move-ListViewItemTop -ListView $script:uiState.Controls.lstApplications + }) + $script:uiState.Controls.btnMoveUp.Add_Click({ + Move-ListViewItemUp -ListView $script:uiState.Controls.lstApplications + }) + $script:uiState.Controls.btnMoveDown.Add_Click({ + Move-ListViewItemDown -ListView $script:uiState.Controls.lstApplications + }) + $script:uiState.Controls.btnMoveBottom.Add_Click({ + Move-ListViewItemBottom -ListView $script:uiState.Controls.lstApplications + }) # BYO Apps ListView setup (Keep existing logic, ensure CopyStatus column is handled) $byoGridView = $script:uiState.Controls.lstApplications.View @@ -1100,8 +1156,12 @@ $window.Add_Loaded({ }) $script:uiState.Controls.chkInstallDrivers.Add_Unchecked({ # Only re-enable if the other checkboxes are not checked - if (-not $script:uiState.Controls.chkCopyDrivers.IsChecked) { $script:uiState.Controls.chkCopyDrivers.IsEnabled = $true } - if (-not $script:uiState.Controls.chkCompressDriversToWIM.IsChecked) { $script:uiState.Controls.chkCompressDriversToWIM.IsEnabled = $true } + if (-not $script:uiState.Controls.chkCopyDrivers.IsChecked) { + $script:uiState.Controls.chkCopyDrivers.IsEnabled = $true + } + if (-not $script:uiState.Controls.chkCompressDriversToWIM.IsChecked) { + $script:uiState.Controls.chkCompressDriversToWIM.IsEnabled = $true + } }) $script:uiState.Controls.chkCopyDrivers.Add_Checked({ $script:uiState.Controls.chkInstallDrivers.IsEnabled = $false diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.psm1 index 4254f02..a1102f2 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.Drivers.psm1 @@ -112,7 +112,7 @@ function ConvertTo-StandardizedDriverModel { } # Function to filter the driver model list based on text input -function Filter-DriverModels { +function Search-DriverModels { param( [string]$filterText, [Parameter(Mandatory = $true)] @@ -120,7 +120,7 @@ function Filter-DriverModels { ) # Check if UI elements and the full list are available if ($null -eq $State.Controls.lstDriverModels -or $null -eq $State.Data.allDriverModels) { - WriteLog "Filter-DriverModels: ListView or full model list not available." + WriteLog "Search-DriverModels: ListView or full model list not available." return } @@ -371,7 +371,7 @@ function Import-DriversJson { $State.Data.allDriverModels = $State.Data.allDriverModels | Sort-Object @{Expression = { $_.IsSelected }; Descending = $true }, Make, Model - Filter-DriverModels -filterText $State.Controls.txtModelFilter.Text -State $script:uiState + Search-DriverModels -filterText $State.Controls.txtModelFilter.Text -State $script:uiState $message = "Driver import complete.`nNew models added: $newModelsAdded`nExisting models updated: $existingModelsUpdated" [System.Windows.MessageBox]::Show($message, "Import Successful", [System.Windows.MessageBoxButton]::OK, [System.Windows.MessageBoxImage]::Information) diff --git a/FFUDevelopment/FFUUI.Core/FFUUI.Core.WindowsSettings.psm1 b/FFUDevelopment/FFUUI.Core/FFUUI.Core.WindowsSettings.psm1 index aee156a..e2633e8 100644 --- a/FFUDevelopment/FFUUI.Core/FFUUI.Core.WindowsSettings.psm1 +++ b/FFUDevelopment/FFUUI.Core/FFUUI.Core.WindowsSettings.psm1 @@ -463,8 +463,8 @@ function Update-WindowsSkuCombo { } } -# Combined function to refresh both Release and Version combos -function Refresh-WindowsSettingsCombos { +# Combined function to initialize the Release, Version, and SKU combos +function Initialize-WindowsSettingsCombos { param( [string]$isoPath, [Parameter(Mandatory = $true)] @@ -568,4 +568,4 @@ function BuildFeaturesGrid { # SECTION: Module Export # -------------------------------------------------------------------------- -Export-ModuleMember -Function Get-WindowsSettingsDefaults, Get-AvailableWindowsReleases, Get-AvailableWindowsVersions, Get-AvailableSkusForRelease, Update-WindowsReleaseCombo, Update-WindowsVersionCombo, Update-WindowsSkuCombo, Refresh-WindowsSettingsCombos, UpdateOptionalFeaturesString, BuildFeaturesGrid \ No newline at end of file +Export-ModuleMember -Function Get-WindowsSettingsDefaults, Get-AvailableWindowsReleases, Get-AvailableWindowsVersions, Get-AvailableSkusForRelease, Update-WindowsReleaseCombo, Update-WindowsVersionCombo, Update-WindowsSkuCombo, Initialize-WindowsSettingsCombos, UpdateOptionalFeaturesString, BuildFeaturesGrid \ No newline at end of file