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 } } }) } |