mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2024-11-14 22:55:52 -06:00
Replace Category Label with ToggleButton, Fix Search Bugs
This commit is contained in:
parent
2d0e68c90f
commit
7b273d5634
@ -3,7 +3,9 @@ function Toggle-CategoryVisibility {
|
|||||||
[Parameter(Mandatory=$true)]
|
[Parameter(Mandatory=$true)]
|
||||||
[string]$Category,
|
[string]$Category,
|
||||||
[Parameter(Mandatory=$true)]
|
[Parameter(Mandatory=$true)]
|
||||||
[System.Windows.Controls.ItemsControl]$ItemsControl
|
[System.Windows.Controls.ItemsControl]$ItemsControl,
|
||||||
|
[Parameter(Mandatory=$true)]
|
||||||
|
[bool]$isChecked
|
||||||
)
|
)
|
||||||
|
|
||||||
$appsInCategory = $ItemsControl.Items | Where-Object {
|
$appsInCategory = $ItemsControl.Items | Where-Object {
|
||||||
@ -11,16 +13,14 @@ function Toggle-CategoryVisibility {
|
|||||||
$sync.configs.applicationsHashtable.$($_.Tag).Category -eq $Category
|
$sync.configs.applicationsHashtable.$($_.Tag).Category -eq $Category
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$isCollapsed = $appsInCategory[0].Visibility -eq [Windows.Visibility]::Visible
|
|
||||||
foreach ($appEntry in $appsInCategory) {
|
foreach ($appEntry in $appsInCategory) {
|
||||||
$appEntry.Visibility = if ($isCollapsed) {
|
$appEntry.Visibility = if ($isChecked) {
|
||||||
[Windows.Visibility]::Collapsed
|
|
||||||
} else {
|
|
||||||
[Windows.Visibility]::Visible
|
[Windows.Visibility]::Visible
|
||||||
|
} else {
|
||||||
|
[Windows.Visibility]::Collapsed
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$categoryPanel = $ItemsControl.Items | Where-Object { $_ -is [System.Windows.Controls.StackPanel] -and $_.Children[1].Text -eq $Category } | Select-Object -First 1
|
|
||||||
$categoryPanel.Children[0].Text = if ($isCollapsed) { "[+] " } else { "[-] " }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Search-AppsByNameOrDescription {
|
function Search-AppsByNameOrDescription {
|
||||||
@ -34,7 +34,11 @@ function Search-AppsByNameOrDescription {
|
|||||||
|
|
||||||
if ([string]::IsNullOrWhiteSpace($SearchString)) {
|
if ([string]::IsNullOrWhiteSpace($SearchString)) {
|
||||||
$Apps | ForEach-Object {
|
$Apps | ForEach-Object {
|
||||||
$_.Visibility = 'Visible'
|
if ($null -ne $_.Tag) {
|
||||||
|
$_.Visibility = 'Collapsed'
|
||||||
|
} else {
|
||||||
|
$_.Visibility = 'Visible'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$Apps | ForEach-Object {
|
$Apps | ForEach-Object {
|
||||||
@ -188,36 +192,24 @@ function Invoke-WPFUIApps {
|
|||||||
return $itemsControl
|
return $itemsControl
|
||||||
}
|
}
|
||||||
|
|
||||||
function Add-CategoryLabel {
|
function Add-Category {
|
||||||
param(
|
param(
|
||||||
[string]$Category,
|
[string]$Category,
|
||||||
$ItemsControl
|
$ItemsControl
|
||||||
)
|
)
|
||||||
|
|
||||||
$categoryPanel = New-Object Windows.Controls.StackPanel
|
$toggleButton = New-Object Windows.Controls.Primitives.ToggleButton
|
||||||
$categoryPanel.Orientation = [Windows.Controls.Orientation]::Horizontal
|
$toggleButton.Content = "$Category"
|
||||||
|
$toggleButton.Cursor = [System.Windows.Input.Cursors]::Hand
|
||||||
|
$toggleButton.Style = $window.FindResource("CategoryToggleButtonStyle")
|
||||||
|
|
||||||
$expanderIcon = New-Object Windows.Controls.TextBlock
|
|
||||||
$expanderIcon.Text = "[+] "
|
|
||||||
$expanderIcon.SetResourceReference([Windows.Controls.Control]::FontSizeProperty, "FontSizeHeading")
|
|
||||||
$expanderIcon.SetResourceReference([Windows.Controls.Control]::FontFamilyProperty, "HeaderFontFamily")
|
|
||||||
$expanderIcon.VerticalAlignment = "Center"
|
|
||||||
$null = $categoryPanel.Children.Add($expanderIcon)
|
|
||||||
|
|
||||||
$categoryLabel = New-Object Windows.Controls.TextBlock
|
$toggleButton.Add_Click({
|
||||||
$categoryLabel.Text = $Category
|
|
||||||
$categoryLabel.SetResourceReference([Windows.Controls.Control]::FontSizeProperty, "FontSizeHeading")
|
|
||||||
$categoryLabel.SetResourceReference([Windows.Controls.Control]::FontFamilyProperty, "HeaderFontFamily")
|
|
||||||
$categoryLabel.VerticalAlignment = "Center"
|
|
||||||
$null = $categoryPanel.Children.Add($categoryLabel)
|
|
||||||
$categoryPanel.Cursor = [System.Windows.Input.Cursors]::Hand
|
|
||||||
|
|
||||||
$categoryPanel.Add_MouseUp({
|
|
||||||
# Clear the search bar when a category is clicked
|
# Clear the search bar when a category is clicked
|
||||||
$sync.SearchBar.Text = ""
|
$sync.SearchBar.Text = ""
|
||||||
Toggle-CategoryVisibility -Category $this.Children[1].Text -ItemsControl $this.Parent
|
Toggle-CategoryVisibility -Category $this.Content -ItemsControl $this.Parent -isChecked $this.IsChecked
|
||||||
})
|
})
|
||||||
$null = $ItemsControl.Items.Add($categoryPanel)
|
$null = $ItemsControl.Items.Add($toggleButton)
|
||||||
}
|
}
|
||||||
|
|
||||||
function New-CategoryAppList {
|
function New-CategoryAppList {
|
||||||
@ -242,7 +234,7 @@ function Invoke-WPFUIApps {
|
|||||||
|
|
||||||
$categories = $Apps.Values | Select-Object -ExpandProperty category -Unique | Sort-Object
|
$categories = $Apps.Values | Select-Object -ExpandProperty category -Unique | Sort-Object
|
||||||
foreach ($category in $categories) {
|
foreach ($category in $categories) {
|
||||||
Add-CategoryLabel -Category $category -ItemsControl $itemsControl
|
Add-Category -Category $category -ItemsControl $itemsControl
|
||||||
$Apps.Keys | Where-Object { $Apps.$_.Category -eq $category } | Sort-Object | ForEach-Object {
|
$Apps.Keys | Where-Object { $Apps.$_.Category -eq $category } | Sort-Object | ForEach-Object {
|
||||||
New-AppEntry -ItemsControl $itemsControl -AppKey $_ -Hidden $true
|
New-AppEntry -ItemsControl $itemsControl -AppKey $_ -Hidden $true
|
||||||
}
|
}
|
||||||
@ -266,6 +258,7 @@ function Invoke-WPFUIApps {
|
|||||||
$border.HorizontalAlignment = "Stretch"
|
$border.HorizontalAlignment = "Stretch"
|
||||||
$border.VerticalAlignment = "Top"
|
$border.VerticalAlignment = "Top"
|
||||||
$border.Margin = New-Object Windows.Thickness(0, 10, 0, 0)
|
$border.Margin = New-Object Windows.Thickness(0, 10, 0, 0)
|
||||||
|
$border.Cursor = [System.Windows.Input.Cursors]::Hand
|
||||||
$border.SetResourceReference([Windows.Controls.Control]::BackgroundProperty, "AppInstallUnselectedColor")
|
$border.SetResourceReference([Windows.Controls.Control]::BackgroundProperty, "AppInstallUnselectedColor")
|
||||||
$border.Tag = $Appkey
|
$border.Tag = $Appkey
|
||||||
$border.ToolTip = $App.description
|
$border.ToolTip = $App.description
|
||||||
|
@ -197,6 +197,45 @@
|
|||||||
<Setter Property="Background" Value="{DynamicResource LabelBackgroundColor}"/>
|
<Setter Property="Background" Value="{DynamicResource LabelBackgroundColor}"/>
|
||||||
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
<Setter Property="FontFamily" Value="{DynamicResource FontFamily}"/>
|
||||||
</Style>
|
</Style>
|
||||||
|
<!-- Category Toggle Button Style for the Apps Window-->
|
||||||
|
<Style x:Key="CategoryToggleButtonStyle" TargetType="ToggleButton">
|
||||||
|
<Setter Property="Foreground" Value="{DynamicResource LabelboxForegroundColor}"/>
|
||||||
|
<Setter Property="Background" Value="{DynamicResource MainBackgroundColor}"/>
|
||||||
|
<Setter Property="FontFamily" Value="{DynamicResource HeaderFontFamily}"/>
|
||||||
|
<Setter Property="FontSize" Value="{DynamicResource FontSizeHeading}"/>
|
||||||
|
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||||
|
<Setter Property="VerticalAlignment" Value="Center"/>
|
||||||
|
<Setter Property="HorizontalContentAlignment" Value="Left"/>
|
||||||
|
<Setter Property="Padding" Value="10,2,10,2"/>
|
||||||
|
<Setter Property="Template">
|
||||||
|
<Setter.Value>
|
||||||
|
<ControlTemplate TargetType="ToggleButton">
|
||||||
|
<Border Background="{TemplateBinding Background}"
|
||||||
|
BorderBrush="{DynamicResource BorderColor}"
|
||||||
|
BorderThickness="{DynamicResource ButtonBorderThickness}"
|
||||||
|
CornerRadius="{DynamicResource ButtonCornerRadius}">
|
||||||
|
<StackPanel Orientation="Horizontal" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" Margin="{TemplateBinding Padding}">
|
||||||
|
<TextBlock x:Name="PrefixTextBlock"/>
|
||||||
|
<ContentPresenter Content="{TemplateBinding Content}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<ControlTemplate.Triggers>
|
||||||
|
<Trigger Property="IsChecked" Value="True">
|
||||||
|
<Setter TargetName="PrefixTextBlock" Property="Text" Value="[-] "/>
|
||||||
|
</Trigger>
|
||||||
|
<Trigger Property="IsChecked" Value="False">
|
||||||
|
<Setter TargetName="PrefixTextBlock" Property="Text" Value="[+] "/>
|
||||||
|
</Trigger>
|
||||||
|
</ControlTemplate.Triggers>
|
||||||
|
</ControlTemplate>
|
||||||
|
</Setter.Value>
|
||||||
|
</Setter>
|
||||||
|
<Style.Triggers>
|
||||||
|
<Trigger Property="IsMouseOver" Value="True">
|
||||||
|
<Setter Property="Background" Value="{DynamicResource ButtonBackgroundMouseoverColor}"/>
|
||||||
|
</Trigger>
|
||||||
|
</Style.Triggers>
|
||||||
|
</Style>
|
||||||
|
|
||||||
<!-- TextBlock template -->
|
<!-- TextBlock template -->
|
||||||
<Style TargetType="TextBlock">
|
<Style TargetType="TextBlock">
|
||||||
|
Loading…
Reference in New Issue
Block a user