Refactors Office UI event handlers into core module

Moves the event handling logic for the M365 Apps/Office options from the main UI script into the `FFUUI.Core.Handlers` module.

This change centralizes UI event handling, improving code organization and maintainability. It also decouples the handlers from the main script by using a local state object instead of a global script variable.
This commit is contained in:
rbalsleyMSFT
2025-06-17 22:55:42 -07:00
parent de0e014e50
commit af5d5206f8
2 changed files with 55 additions and 38 deletions
+1 -37
View File
@@ -169,7 +169,7 @@ $window.Add_Loaded({
$script:uiState.Controls.spModelFilterSection.Visibility = 'Collapsed'
$script:uiState.Controls.lstDriverModels.Visibility = 'Collapsed'
$script:uiState.Controls.spDriverActionButtons.Visibility = 'Collapsed'
# Office interplay (Keep existing logic)
$script:uiState.Flags.installAppsCheckedByOffice = $false
if ($script:uiState.Controls.chkInstallOffice.IsChecked) {
@@ -187,42 +187,6 @@ $window.Add_Loaded({
$script:uiState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Collapsed'
$script:uiState.Controls.OfficeConfigurationXMLFileGrid.Visibility = 'Collapsed'
}
$script:uiState.Controls.chkInstallOffice.Add_Checked({
if (-not $script:uiState.Controls.chkInstallApps.IsChecked) {
$script:uiState.Controls.chkInstallApps.IsChecked = $true
$script:uiState.Flags.installAppsCheckedByOffice = $true
}
$script:uiState.Controls.chkInstallApps.IsEnabled = $false
$script:uiState.Controls.OfficePathStackPanel.Visibility = 'Visible'
$script:uiState.Controls.OfficePathGrid.Visibility = 'Visible'
$script:uiState.Controls.CopyOfficeConfigXMLStackPanel.Visibility = 'Visible'
# Show/hide XML file path based on checkbox state
$script:uiState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = if ($script:uiState.Controls.chkCopyOfficeConfigXML.IsChecked) { 'Visible' } else { 'Collapsed' }
$script:uiState.Controls.OfficeConfigurationXMLFileGrid.Visibility = if ($script:uiState.Controls.chkCopyOfficeConfigXML.IsChecked) { 'Visible' } else { 'Collapsed' }
})
$script:uiState.Controls.chkInstallOffice.Add_Unchecked({
if ($script:uiState.Flags.installAppsCheckedByOffice) {
$script:uiState.Controls.chkInstallApps.IsChecked = $false
$script:uiState.Flags.installAppsCheckedByOffice = $false
}
# Only re-enable InstallApps if not forced by Updates
if (-not $script:uiState.Flags.installAppsForcedByUpdates) {
$script:uiState.Controls.chkInstallApps.IsEnabled = $true
}
$script:uiState.Controls.OfficePathStackPanel.Visibility = 'Collapsed'
$script:uiState.Controls.OfficePathGrid.Visibility = 'Collapsed'
$script:uiState.Controls.CopyOfficeConfigXMLStackPanel.Visibility = 'Collapsed'
$script:uiState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Collapsed'
$script:uiState.Controls.OfficeConfigurationXMLFileGrid.Visibility = 'Collapsed'
})
$script:uiState.Controls.chkCopyOfficeConfigXML.Add_Checked({
$script:uiState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Visible'
$script:uiState.Controls.OfficeConfigurationXMLFileGrid.Visibility = 'Visible'
})
$script:uiState.Controls.chkCopyOfficeConfigXML.Add_Unchecked({
$script:uiState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Collapsed'
$script:uiState.Controls.OfficeConfigurationXMLFileGrid.Visibility = 'Collapsed'
})
# Updates/InstallApps interplay (Keep existing logic)
$script:uiState.Flags.installAppsForcedByUpdates = $false