mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-05-23 15:57:24 -05:00

* Initial Remove Expanded View * more cleanup * Add word wrapping for Tooltips * Update tooltip colors in themes and XAML styles * Rename Properties for consistency * More Cleanup, and simplification. Also added support for screenreaders * Remove unused variables and shorten window naming * Rename Invoke-WPFUIApps to Initialize-WPFUI and update function calls for consistency * Rename Invoke-WPFUIApps.ps1 to Initialize-WPFUI.ps1 * Add TODO comments for sidebar UI generation in Initialize-WPFUI function
57 lines
2.2 KiB
PowerShell
57 lines
2.2 KiB
PowerShell
function Initialize-InstallCategoryAppList {
|
|
<#
|
|
.SYNOPSIS
|
|
Clears the Target Element and sets up a "Loading" message. This is done, because loading of all apps can take a bit of time in some scenarios
|
|
Iterates through all Categories and Apps and adds them to the UI
|
|
Used to as part of the Install Tab UI generation
|
|
.PARAMETER TargetElement
|
|
The Element into which the Categories and Apps should be placed
|
|
.PARAMETER Apps
|
|
The Hashtable of Apps to be added to the UI
|
|
The Categories are also extracted from the Apps Hashtable
|
|
|
|
#>
|
|
param(
|
|
$TargetElement,
|
|
$Apps
|
|
)
|
|
function Add-Category {
|
|
param(
|
|
[string]$Category,
|
|
[Windows.Controls.ItemsControl]$TargetElement
|
|
)
|
|
|
|
$toggleButton = New-Object Windows.Controls.Label
|
|
$toggleButton.Content = "$Category"
|
|
$toggleButton.Tag = "CategoryToggleButton"
|
|
$sync.$Category = $Category
|
|
|
|
$null = $TargetElement.Items.Add($toggleButton)
|
|
}
|
|
|
|
|
|
# Pre-group apps by category
|
|
$appsByCategory = @{}
|
|
foreach ($appKey in $Apps.Keys) {
|
|
$category = $Apps.$appKey.Category
|
|
if (-not $appsByCategory.ContainsKey($category)) {
|
|
$appsByCategory[$category] = @()
|
|
}
|
|
$appsByCategory[$category] += $appKey
|
|
}
|
|
foreach ($category in $($appsByCategory.Keys | Sort-Object)) {
|
|
Add-Category -Category $category -TargetElement $TargetElement
|
|
$wrapPanel = New-Object Windows.Controls.WrapPanel
|
|
$wrapPanel.Orientation = "Horizontal"
|
|
$wrapPanel.HorizontalAlignment = "Stretch"
|
|
$wrapPanel.VerticalAlignment = "Center"
|
|
$wrapPanel.Margin = New-Object Windows.Thickness(0, 0, 0, 20)
|
|
$wrapPanel.Visibility = [Windows.Visibility]::Visible
|
|
$wrapPanel.Tag = "CategoryWrapPanel_$category"
|
|
$null = $TargetElement.Items.Add($wrapPanel)
|
|
$appsByCategory[$category] |Sort-Object | ForEach-Object {
|
|
$sync.$_ = $(Initialize-InstallAppEntry -TargetElement $wrapPanel -AppKey $_)
|
|
}
|
|
}
|
|
}
|