Private/Options/_OptionsUIEvents.ps1

function _OptionsUIEvents {

    $Script:SettingsSaved = $false

    $Options.Add_SourceInitialized({
            _OnOptionsSourceInitialized
        })

    $Options.Add_Closing({
            if ($SettingsSaved = $false) {
                $MessageSplat = @{
                    MessageText  = 'Would you like to save the settings before closing this window?'
                    MessageIcon  = 'Question'
                    ButtonType   = 'YesNo'
                    MessageTitle = 'Save Settings'
                }
                $Response = _ShowMessageBox @MessageSplat
                if ($Response -eq 'Yes') {
                    $SettingsSaved = $true
                    _SaveSettings -Path "$env:APPDATA\LoganShell\"
                }
            }
            if ($HomeWindow) {
                $_.Cancel = $true
                $Options.hide()
            }
            else {
                $Options.close()
            }
        })

    $Options_EntraIDCheckBox.Add_Click({
            if ($Options_EntraIDCheckBox.IsChecked) {
                $Options_EntraTenantURLTextBlock.Visibility = 'Visible'
                $Options_EntraConnectServerTextBlock.Visibility = 'Visible'
                $Options_EntraTenantTextBox.Visibility = 'Visible'
                $Options_ConnectServerTextBox.Visibility = 'Visible'
            }
            else {
                $Options_EntraTenantURLTextBlock.Visibility = 'Collapsed'
                $Options_EntraConnectServerTextBlock.Visibility = 'Collapsed'
                $Options_EntraTenantTextBox.Visibility = 'Collapsed'
                $Options_ConnectServerTextBox.Visibility = 'Collapsed'
            }
        })

    $Options_SCCMIntegrationCheckBox.Add_Click({
            if ($Options_SCCMIntegrationCheckBox.IsChecked) {
                $Options_SCCMServerTextBox.Visibility = 'Visible'
                $Options_SCCMCollectionComboBox.Visibility = 'Visible'
                $Options_SCCMServerTextBlock.Visibility = 'Visible'
                $Options_DefaultCollectionTextBlock.Visibility = 'Visible'
            }
            else {
                $Options_SCCMServerTextBox.Visibility = 'Collapsed'
                $Options_SCCMCollectionComboBox.Visibility = 'Collapsed'
                $Options_SCCMServerTextBlock.Visibility = 'Collapsed'
                $Options_DefaultCollectionTextBlock.Visibility = 'Collapsed'
            }
        })

    $Options_CredentialsAlternateCheckBox.Add_Click({
            if ($Options_CredentialsAlternateCheckBox.IsChecked) {
                $Options_UsernameTextBlock.Visibility = 'Visible'
                $Options_CredentialsUsernameTextBox.Visibility = 'Visible'
                $Options_PasswordTextBlock.Visibility = 'Visible'
                $Options_CredentialsPasswordPasswordBox.Visibility = 'Visible'
            }
            else {
                $Options_UsernameTextBlock.Visibility = 'Collapsed'
                $Options_CredentialsUsernameTextBox.Visibility = 'Collapsed'
                $Options_PasswordTextBlock.Visibility = 'Collapsed'
                $Options_CredentialsPasswordPasswordBox.Visibility = 'Collapsed'
            }
        })

    $Options_WUGIntegrationCheckBox.Add_Click({
            if ($Options_WUGIntegrationCheckBox.IsChecked) {
                $Options_WUGServerTextBlock.Visibility = 'Visible'
                $Options_WUGServerTextBox.Visibility = 'Visible'
                $Options_WUGUsernameTextBlock.Visibility = 'Visible'
                $Options_WUGCredentialsUsernameTextBox.Visibility = 'Visible'
                $Options_WUGPasswordTextBlock.Visibility = 'Visible'
                $Options_WUGCredentialsPasswordPasswordBox.Visibility = 'Visible'
            }
            else {
                $Options_WUGServerTextBlock.Visibility = 'Collapsed'
                $Options_WUGServerTextBox.Visibility = 'Collapsed'
                $Options_WUGUsernameTextBlock.Visibility = 'Collapsed'
                $Options_WUGCredentialsUsernameTextBox.Visibility = 'Collapsed'
                $Options_WUGPasswordTextBlock.Visibility = 'Collapsed'
                $Options_WUGCredentialsPasswordPasswordBox.Visibility = 'Collapsed'
            }
        })

    $Options_SaveSettingsButton.Add_Click({
            # TODO add further validation for the username and password text box's containing data.
            # TODO validation needed for entra and sccm.

            _ADValidationAndSave
            _WUGValidationAndSave

            _SaveSettings -Path "$env:APPDATA\LoganShell\"
            $SettingsSaved = $true
        })

    $Options_SelectFolderButton.Add_Click({
            $FolderBrowserDialog = New-Object System.Windows.Forms.FolderBrowserDialog
            $FolderBrowserDialog.RootFolder = 'MyComputer'
            $FolderBrowserDialog.Description = 'Select default storage location'
            $Output = $FolderBrowserDialog.ShowDialog()

            if ($Output -eq 'OK') {
                $Options_ObjectCacheTextBox.Text = $FolderBrowserDialog.SelectedPath
            }
        })

    $Options_ClearDataButton.Add_Click({
            $PathToClean = $Options_ObjectCacheTextBox.Text
            $MessageOutput = _ShowMessageBox -MessageText "Are you sure you want to delete all items in $PathToClean" -MessageIcon Question -ButtonType YesNo -MessageTitle 'Delete all stored files'
            switch ($MessageOutput) {
                'Yes' {
                    $Options.Cursor = [System.Windows.Input.Cursors]::Wait
                    # This excludes the settings file in case the location it is still appdata.
                    Get-ChildItem -Path $PathToClean -Recurse -Exclude 'Settings.json' | Remove-Item -Force -Recurse
                    $Options_SavingTextBlock.Text = 'Items deleted.'
                    $Options.Cursor = $null
                }
                'No' {
                    # Go on about your day
                }
            }
        })
}