mirror of
https://github.com/rbalsleyMSFT/FFU.git
synced 2026-06-14 02:09:35 -06:00
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:
@@ -169,7 +169,7 @@ $window.Add_Loaded({
|
|||||||
$script:uiState.Controls.spModelFilterSection.Visibility = 'Collapsed'
|
$script:uiState.Controls.spModelFilterSection.Visibility = 'Collapsed'
|
||||||
$script:uiState.Controls.lstDriverModels.Visibility = 'Collapsed'
|
$script:uiState.Controls.lstDriverModels.Visibility = 'Collapsed'
|
||||||
$script:uiState.Controls.spDriverActionButtons.Visibility = 'Collapsed'
|
$script:uiState.Controls.spDriverActionButtons.Visibility = 'Collapsed'
|
||||||
|
|
||||||
# Office interplay (Keep existing logic)
|
# Office interplay (Keep existing logic)
|
||||||
$script:uiState.Flags.installAppsCheckedByOffice = $false
|
$script:uiState.Flags.installAppsCheckedByOffice = $false
|
||||||
if ($script:uiState.Controls.chkInstallOffice.IsChecked) {
|
if ($script:uiState.Controls.chkInstallOffice.IsChecked) {
|
||||||
@@ -187,42 +187,6 @@ $window.Add_Loaded({
|
|||||||
$script:uiState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Collapsed'
|
$script:uiState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Collapsed'
|
||||||
$script:uiState.Controls.OfficeConfigurationXMLFileGrid.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)
|
# Updates/InstallApps interplay (Keep existing logic)
|
||||||
$script:uiState.Flags.installAppsForcedByUpdates = $false
|
$script:uiState.Flags.installAppsForcedByUpdates = $false
|
||||||
|
|||||||
@@ -57,6 +57,60 @@ function Register-EventHandlers {
|
|||||||
if ($ofd.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) { $localState.Controls.txtISOPath.Text = $ofd.FileName }
|
if ($ofd.ShowDialog() -eq [System.Windows.Forms.DialogResult]::OK) { $localState.Controls.txtISOPath.Text = $ofd.FileName }
|
||||||
})
|
})
|
||||||
|
|
||||||
|
# M365 Apps/Office tab Event Handlers
|
||||||
|
$State.Controls.chkInstallOffice.Add_Checked({
|
||||||
|
param($eventSource, $routedEventArgs)
|
||||||
|
$window = [System.Windows.Window]::GetWindow($eventSource)
|
||||||
|
$localState = $window.Tag
|
||||||
|
|
||||||
|
if (-not $localState.Controls.chkInstallApps.IsChecked) {
|
||||||
|
$localState.Controls.chkInstallApps.IsChecked = $true
|
||||||
|
$localState.Flags.installAppsCheckedByOffice = $true
|
||||||
|
}
|
||||||
|
$localState.Controls.chkInstallApps.IsEnabled = $false
|
||||||
|
$localState.Controls.OfficePathStackPanel.Visibility = 'Visible'
|
||||||
|
$localState.Controls.OfficePathGrid.Visibility = 'Visible'
|
||||||
|
$localState.Controls.CopyOfficeConfigXMLStackPanel.Visibility = 'Visible'
|
||||||
|
# Show/hide XML file path based on checkbox state
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = if ($localState.Controls.chkCopyOfficeConfigXML.IsChecked) { 'Visible' } else { 'Collapsed' }
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileGrid.Visibility = if ($localState.Controls.chkCopyOfficeConfigXML.IsChecked) { 'Visible' } else { 'Collapsed' }
|
||||||
|
})
|
||||||
|
$State.Controls.chkInstallOffice.Add_Unchecked({
|
||||||
|
param($eventSource, $routedEventArgs)
|
||||||
|
$window = [System.Windows.Window]::GetWindow($eventSource)
|
||||||
|
$localState = $window.Tag
|
||||||
|
|
||||||
|
if ($localState.Flags.installAppsCheckedByOffice) {
|
||||||
|
$localState.Controls.chkInstallApps.IsChecked = $false
|
||||||
|
$localState.Flags.installAppsCheckedByOffice = $false
|
||||||
|
}
|
||||||
|
# Only re-enable InstallApps if not forced by Updates
|
||||||
|
if (-not $localState.Flags.installAppsForcedByUpdates) {
|
||||||
|
$localState.Controls.chkInstallApps.IsEnabled = $true
|
||||||
|
}
|
||||||
|
$localState.Controls.OfficePathStackPanel.Visibility = 'Collapsed'
|
||||||
|
$localState.Controls.OfficePathGrid.Visibility = 'Collapsed'
|
||||||
|
$localState.Controls.CopyOfficeConfigXMLStackPanel.Visibility = 'Collapsed'
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Collapsed'
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileGrid.Visibility = 'Collapsed'
|
||||||
|
})
|
||||||
|
$State.Controls.chkCopyOfficeConfigXML.Add_Checked({
|
||||||
|
param($eventSource, $routedEventArgs)
|
||||||
|
$window = [System.Windows.Window]::GetWindow($eventSource)
|
||||||
|
$localState = $window.Tag
|
||||||
|
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Visible'
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileGrid.Visibility = 'Visible'
|
||||||
|
})
|
||||||
|
$State.Controls.chkCopyOfficeConfigXML.Add_Unchecked({
|
||||||
|
param($eventSource, $routedEventArgs)
|
||||||
|
$window = [System.Windows.Window]::GetWindow($eventSource)
|
||||||
|
$localState = $window.Tag
|
||||||
|
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileStackPanel.Visibility = 'Collapsed'
|
||||||
|
$localState.Controls.OfficeConfigurationXMLFileGrid.Visibility = 'Collapsed'
|
||||||
|
})
|
||||||
|
|
||||||
# Drivers Tab Event Handlers
|
# Drivers Tab Event Handlers
|
||||||
$State.Controls.chkDownloadDrivers.Add_Checked({
|
$State.Controls.chkDownloadDrivers.Add_Checked({
|
||||||
param($eventSource, $routedEventArgs)
|
param($eventSource, $routedEventArgs)
|
||||||
@@ -308,5 +362,4 @@ function Register-EventHandlers {
|
|||||||
Import-DriversJson -State $localState
|
Import-DriversJson -State $localState
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
Export-ModuleMember -Function *
|
Export-ModuleMember -Function *
|
||||||
Reference in New Issue
Block a user