mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-05-24 08:17:25 -05:00

* initial visual implementation - remove idiotic border logic from Invoke-WPFUIElements - add "application" type & style - add "radiobutton" type & style - remove prefer choco checkbox (did not modify logic outside of xaml, so i currently get errors due to that) * add image support via choco db - add image support via choco db - backup image should be taken from unigetui db - backup backup image is some random package one rn * add compatibility for every app * performance improvements - move get logo to runspace (not working rn) - readd choco checkbox to mute errors * add border name * fix scrollviewer & reimplement logo logic into ui elements * noimage fix * add notes * cleanup & remove nav from search effects * add button action * rename buttons * add sort by options * move scrollviewer & app buttons into uielements logic * format logic for app action buttons * fix app action button logic & move get & clear to sidepanel * change category of new buttons * add virtualisation & layouting fixes - commented out prefer choco logic - add virtualisation - layouting improvements * fix radiobuttons * LETS GOOO (#12) * Add Selected Apps Label, Reshuffel the nesting of the checkbox and the label to be able to reference the name from the actual checkbox * Add visual selection and allow click on the whole app section * Fix Theme definition to work with theme change * Fix Highlight on if label or icon is clicked * change applications.json to powershell object list and refactor UI Creation logic * Optimization and Add Collapsable Categories * Add Button functionality for install, uninstall, info, install selected, uninstall selected, clear and implement search * Rest application.json to Main * Reset Compile to main * Pretty much revamp_apps but without changes to applications.json * Small fixes * Add Get-Installed Loading Indicator + small fixes * Re-Add Choco Preference * Remove Logic from Invoke-WPFUIElements that is Moved to Invoke-WPFUIApps * Remove Alphabetical List, Sort Apps inside Category Alphabetically * Small fixes to the Get-Installed function and formatting stuff * Style for Hidden Checkbox but visible Content * Hotfix for Category Expansion during search * Replace Category Label with ToggleButton, Fix Search Bugs * First Try at implementing a Compact Mode for the App page * Fix Whitespace when using Search * Keep the search status when switching between compact and full view * Fix weird buggy behaviour in regards to switching the Display Mode and using Show-SelectedOnly * Improve Togglebutton - add initial implementation of togglebutton style - add togglebuttons to appnavigation.json - refractor UI element creation for Togglebutton - commit preprocessing changes * Togglebutton fixes - move dot to the right in style - cleanup code - fix arrangement of content * Add logic to the new ToggleButtons in the sidebar of the install tab and remove old buttons * reorder buttons & fix Togglebutton toggling if action not possible - reorder getinstalled and clearselection - set togglebutton back if no app is selected * Slight modificatoin to togglebutton style & fix sidebar width * Add hover effect for the app tiles * ToggleButtonStyle animation - add hover animation to white dot - remove IsPressed trigger - improve some comments * disable show selected filter on clear selection * Add a Popup Dropdown for Selected Apps with the ability to deselect them * Split up the functions to seperate files like the rest of the repo * Fix Bug where Scrollviewer dosnt work * disable autofallback checkbox * run preprocessing * remove installation scope - remove all 3 radiobuttons from appnavigation.json * remove scrollviewer from WPFUIElements * toggle showselected on GetInstalled * remove unused autofallback --------- Co-authored-by: Martin Wiethan <47688561+Marterich@users.noreply.github.com> Co-authored-by: Chris Titus <contact@christitus.com>
73 lines
3.6 KiB
PowerShell
73 lines
3.6 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.Primitives.ToggleButton
|
|
$toggleButton.Content = "$Category"
|
|
$toggleButton.Tag = "CategoryToggleButton"
|
|
$toggleButton.Cursor = [System.Windows.Input.Cursors]::Hand
|
|
$toggleButton.SetResourceReference([Windows.Controls.Control]::StyleProperty, "CategoryToggleButtonStyle")
|
|
$sync.Buttons.Add($toggleButton)
|
|
$toggleButton.Add_Checked({
|
|
# Clear the search bar when a category is clicked
|
|
$sync.SearchBar.Text = ""
|
|
Set-CategoryVisibility -Category $this.Content -overrideState Expand
|
|
})
|
|
$toggleButton.Add_Unchecked({
|
|
Set-CategoryVisibility -Category $this.Content -overrideState Collapse
|
|
})
|
|
$null = $TargetElement.Items.Add($toggleButton)
|
|
}
|
|
|
|
$loadingLabel = New-Object Windows.Controls.Label
|
|
$loadingLabel.Content = "Loading, please wait..."
|
|
$loadingLabel.HorizontalAlignment = "Center"
|
|
$loadingLabel.VerticalAlignment = "Center"
|
|
$loadingLabel.SetResourceReference([Windows.Controls.Control]::FontSizeProperty, "FontSizeHeading")
|
|
$loadingLabel.FontWeight = [Windows.FontWeights]::Bold
|
|
$loadingLabel.Foreground = [Windows.Media.Brushes]::Gray
|
|
$sync.LoadingLabel = $loadingLabel
|
|
|
|
$TargetElement.Items.Clear()
|
|
$null = $TargetElement.Items.Add($sync.LoadingLabel)
|
|
# Use the Dispatcher to make sure the Loading message is shown before the logic loading the apps starts, and only is removed when the loading is complete and the apps are added to the UI
|
|
$TargetElement.Dispatcher.Invoke([System.Windows.Threading.DispatcherPriority]::Background, [action]{
|
|
|
|
$TargetElement.Items.Clear() # Remove the loading message
|
|
$categories = $Apps.Values | Select-Object -ExpandProperty category -Unique | Sort-Object
|
|
foreach ($category in $categories) {
|
|
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]::Collapsed
|
|
$wrapPanel.Tag = "CategoryWrapPanel_$category"
|
|
$null = $TargetElement.Items.Add($wrapPanel)
|
|
$Apps.Keys | Where-Object { $Apps.$_.Category -eq $category } | Sort-Object | ForEach-Object {
|
|
Initialize-InstallAppEntry -TargetElement $wrapPanel -AppKey $_
|
|
}
|
|
}
|
|
})
|
|
}
|