mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-06-28 09:04:47 -05:00
104
functions/private/Find-TweaksByNameOrDescription.ps1
Normal file
104
functions/private/Find-TweaksByNameOrDescription.ps1
Normal file
@ -0,0 +1,104 @@
|
||||
function Find-TweaksByNameOrDescription {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Searches through the Tweaks on the Tweaks Tab and hides all entries that do not match the search string
|
||||
|
||||
.PARAMETER SearchString
|
||||
The string to be searched for
|
||||
#>
|
||||
param(
|
||||
[Parameter(Mandatory=$false)]
|
||||
[string]$SearchString = ""
|
||||
)
|
||||
|
||||
# Reset the visibility if the search string is empty or the search is cleared
|
||||
if ([string]::IsNullOrWhiteSpace($SearchString)) {
|
||||
# Show all categories
|
||||
$tweakspanel = $sync.Form.FindName("tweakspanel")
|
||||
$tweakspanel.Children | ForEach-Object {
|
||||
$_.Visibility = [Windows.Visibility]::Visible
|
||||
|
||||
# Foreach category section, show all items
|
||||
if ($_ -is [Windows.Controls.Border]) {
|
||||
$_.Visibility = [Windows.Visibility]::Visible
|
||||
|
||||
# Find ItemsControl
|
||||
$dockPanel = $_.Child
|
||||
if ($dockPanel -is [Windows.Controls.DockPanel]) {
|
||||
$itemsControl = $dockPanel.Children | Where-Object { $_ -is [Windows.Controls.ItemsControl] }
|
||||
if ($itemsControl) {
|
||||
# Show items in the category
|
||||
foreach ($item in $itemsControl.Items) {
|
||||
if ($item -is [Windows.Controls.Label]) {
|
||||
$item.Visibility = [Windows.Visibility]::Visible
|
||||
} elseif ($item -is [Windows.Controls.DockPanel] -or
|
||||
$item -is [Windows.Controls.StackPanel]) {
|
||||
$item.Visibility = [Windows.Visibility]::Visible
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
# Search for matching tweaks when search string is not null
|
||||
$tweakspanel = $sync.Form.FindName("tweakspanel")
|
||||
$matchFound = $false
|
||||
|
||||
$tweakspanel.Children | ForEach-Object {
|
||||
$categoryBorder = $_
|
||||
$categoryVisible = $false
|
||||
|
||||
if ($_ -is [Windows.Controls.Border]) {
|
||||
# Find the ItemsControl
|
||||
$dockPanel = $_.Child
|
||||
if ($dockPanel -is [Windows.Controls.DockPanel]) {
|
||||
$itemsControl = $dockPanel.Children | Where-Object { $_ -is [Windows.Controls.ItemsControl] }
|
||||
if ($itemsControl) {
|
||||
$categoryLabel = $null
|
||||
|
||||
# Process all items in the ItemsControl
|
||||
for ($i = 0; $i -lt $itemsControl.Items.Count; $i++) {
|
||||
$item = $itemsControl.Items[$i]
|
||||
|
||||
if ($item -is [Windows.Controls.Label]) {
|
||||
$categoryLabel = $item
|
||||
$item.Visibility = [Windows.Visibility]::Collapsed
|
||||
} elseif ($item -is [Windows.Controls.DockPanel]) {
|
||||
$checkbox = $item.Children | Where-Object { $_ -is [Windows.Controls.CheckBox] } | Select-Object -First 1
|
||||
$label = $item.Children | Where-Object { $_ -is [Windows.Controls.Label] } | Select-Object -First 1
|
||||
|
||||
if ($label -and ($label.Content -like "*$SearchString*" -or $label.ToolTip -like "*$SearchString*")) {
|
||||
$item.Visibility = [Windows.Visibility]::Visible
|
||||
if ($categoryLabel) { $categoryLabel.Visibility = [Windows.Visibility]::Visible }
|
||||
$categoryVisible = $true
|
||||
} else {
|
||||
$item.Visibility = [Windows.Visibility]::Collapsed
|
||||
}
|
||||
} elseif ($item -is [Windows.Controls.StackPanel]) {
|
||||
# StackPanel which contain checkboxes or other elements
|
||||
$checkbox = $item.Children | Where-Object { $_ -is [Windows.Controls.CheckBox] } | Select-Object -First 1
|
||||
|
||||
if ($checkbox -and ($checkbox.Content -like "*$SearchString*" -or $checkbox.ToolTip -like "*$SearchString*")) {
|
||||
$item.Visibility = [Windows.Visibility]::Visible
|
||||
if ($categoryLabel) { $categoryLabel.Visibility = [Windows.Visibility]::Visible }
|
||||
$categoryVisible = $true
|
||||
} else {
|
||||
$item.Visibility = [Windows.Visibility]::Collapsed
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Set the visibility based on if any item matched
|
||||
$categoryBorder.Visibility = if ($categoryVisible) { [Windows.Visibility]::Visible } else { [Windows.Visibility]::Collapsed }
|
||||
|
||||
if ($categoryVisible) {
|
||||
$matchFound = $true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user