2024-10-28 16:53:03 -05:00
function Add-SelectedAppsMenuItem {
<#
2024-11-02 07:51:48 -05:00
. SYNOPSIS
2024-10-28 16:53:03 -05:00
This is a helper function that generates and adds the Menu Items to the Selected Apps Popup .
2024-11-02 07:51:48 -05:00
2024-10-28 16:53:03 -05:00
. Parameter name
The actual Name of an App like " Chrome " or " Brave "
This name is contained in the " Content " property inside the applications . json
. PARAMETER key
2024-11-02 07:51:48 -05:00
The key which identifies an app object in applications . json
For Chrome this would be " WPFInstallchrome " because " WPFInstall " is prepended automatically for each key in applications . json
2024-10-28 16:53:03 -05:00
#>
param ( [ string ] $name , [ string ] $key )
2024-11-02 07:51:48 -05:00
2024-10-28 16:53:03 -05:00
$selectedAppGrid = New-Object Windows . Controls . Grid
$selectedAppGrid . ColumnDefinitions . Add ( ( New-Object System . Windows . Controls . ColumnDefinition -Property @ { Width = " * " } ) )
$selectedAppGrid . ColumnDefinitions . Add ( ( New-Object System . Windows . Controls . ColumnDefinition -Property @ { Width = " 30 " } ) )
2024-11-02 07:51:48 -05:00
2024-10-28 16:53:03 -05:00
# Sets the name to the Content as well as the Tooltip, because the parent Popup Border has a fixed width and text could "overflow".
# With the tooltip, you can still read the whole entry on hover
$selectedAppLabel = New-Object Windows . Controls . Label
$selectedAppLabel . Content = $name
$selectedAppLabel . ToolTip = $name
$selectedAppLabel . HorizontalAlignment = " Left "
$selectedAppLabel . SetResourceReference ( [ Windows.Controls.Control ] :: ForegroundProperty , " MainForegroundColor " )
[ System.Windows.Controls.Grid ] :: SetColumn ( $selectedAppLabel , 0 )
$selectedAppGrid . Children . Add ( $selectedAppLabel )
$selectedAppRemoveButton = New-Object Windows . Controls . Button
$selectedAppRemoveButton . FontFamily = " Segoe MDL2 Assets "
2024-11-02 07:51:48 -05:00
$selectedAppRemoveButton . Content = [ string ] ( [ char ] 0xE711 )
2024-10-28 16:53:03 -05:00
$selectedAppRemoveButton . HorizontalAlignment = " Center "
$selectedAppRemoveButton . Tag = $key
$selectedAppRemoveButton . ToolTip = " Remove the App from Selection "
$selectedAppRemoveButton . SetResourceReference ( [ Windows.Controls.Control ] :: ForegroundProperty , " MainForegroundColor " )
$selectedAppRemoveButton . SetResourceReference ( [ Windows.Controls.Control ] :: StyleProperty , " HoverButtonStyle " )
2024-11-02 07:51:48 -05:00
2024-10-28 16:53:03 -05:00
# Highlight the Remove icon on Hover
$selectedAppRemoveButton . Add_MouseEnter ( { $this . Foreground = " Red " } )
$selectedAppRemoveButton . Add_MouseLeave ( { $this . SetResourceReference ( [ Windows.Controls.Control ] :: ForegroundProperty , " MainForegroundColor " ) } )
$selectedAppRemoveButton . Add_Click ( {
$sync . ( $this . Tag ) . isChecked = $false # On click of the remove button, we only have to uncheck the corresponding checkbox. This will kick of all neccessary changes to update the UI
} )
[ System.Windows.Controls.Grid ] :: SetColumn ( $selectedAppRemoveButton , 1 )
$selectedAppGrid . Children . Add ( $selectedAppRemoveButton )
# Add new Element to Popup
2024-11-02 07:51:48 -05:00
$sync . selectedAppsstackPanel . Children . Add ( $selectedAppGrid )
}