mirror of
https://github.com/ChrisTitusTech/winutil.git
synced 2025-07-01 18:42:35 -05:00
rework
- add overlay presets - rework image saving & converting - removed popup after uninstalling applications
This commit is contained in:
@ -4,20 +4,32 @@ function Set-WinUtilTaskbaritem {
|
||||
.SYNOPSIS
|
||||
Modifies the Taskbaritem of the WPF Form
|
||||
|
||||
.PARAMETER state & value
|
||||
.PARAMETER value
|
||||
Value can be between 0 and 1, 0 being no progress done yet and 1 being fully completed
|
||||
State can be 'None' > No progress, 'Indeterminate' > Without value, 'Normal' > when using value, 'Error' > Red (when using value), 'Paused' > Yellow (when using value)
|
||||
Value does not affect item without setting the state to 'Normal', 'Error' or 'Paused'
|
||||
Set-WinUtilTaskbaritem -value 0.5
|
||||
.PARAMETER state
|
||||
State can be 'None' > No progress, 'Indeterminate' > inf. loading gray, 'Normal' > Gray, 'Error' > Red, 'Paused' > Yellow
|
||||
no value needed:
|
||||
- Set-WinUtilTaskbaritem -state "None"
|
||||
- Set-WinUtilTaskbaritem -state "Indeterminate"
|
||||
value needed:
|
||||
- Set-WinUtilTaskbaritem -state "Error"
|
||||
- Set-WinUtilTaskbaritem -state "Normal"
|
||||
- Set-WinUtilTaskbaritem -state "Paused"
|
||||
|
||||
.PARAMETER overlay
|
||||
Overlay icon to display on the taskbar item
|
||||
|
||||
.EXAMPLE
|
||||
Set-WinUtilTaskbaritem -value 0.5 -state "Normal"
|
||||
Set-WinUtilTaskbaritem -state "Error"
|
||||
Set-WinUtilTaskbaritem -state "Indeterminate"
|
||||
Overlay icon to display on the taskbar item, there are the presets 'logo' and 'checkmark' or you can specify a path/link to an image file.
|
||||
CTT logo preset:
|
||||
- Set-WinUtilTaskbaritem -overlay "logo"
|
||||
Checkmark preset:
|
||||
- Set-WinUtilTaskbaritem -overlay "checkmark"
|
||||
Custom icon:
|
||||
- Set-WinUtilTaskbaritem -overlay "C:\path\to\icon.png"
|
||||
|
||||
.PARAMETER description
|
||||
Description to display on the taskbar item preview
|
||||
Set-WinUtilTaskbaritem -description "This is a description"
|
||||
Set-WinUtilTaskbaritem -overlay "C:\path\to\icon.png"
|
||||
|
||||
#>
|
||||
param (
|
||||
[double]$value,
|
||||
@ -32,37 +44,29 @@ function Set-WinUtilTaskbaritem {
|
||||
|
||||
if ($state) {
|
||||
switch ($state) {
|
||||
'None' { $sync["Form"].taskbarItemInfo.ProgressState = "None" }
|
||||
'Indeterminate' { $sync["Form"].taskbarItemInfo.ProgressState = "Indeterminate" }
|
||||
'Normal' { $sync["Form"].taskbarItemInfo.ProgressState = "Normal" }
|
||||
'Error' { $sync["Form"].taskbarItemInfo.ProgressState = "Error" }
|
||||
'Paused' { $sync["Form"].taskbarItemInfo.ProgressState = "Paused" }
|
||||
default { $sync["Form"].taskbarItemInfo.ProgressState = "None" }
|
||||
default { write-host "Invalid state" }
|
||||
}
|
||||
}
|
||||
|
||||
if ($overlay -and (Test-Path $overlay)) {
|
||||
# Read the image file as a byte array
|
||||
$imageBytes = [System.IO.File]::ReadAllBytes($overlay)
|
||||
|
||||
# Convert the byte array to a Base64 string
|
||||
[System.Convert]::ToBase64String($imageBytes)
|
||||
|
||||
# Load the image file as a bitmap
|
||||
$bitmap = [System.Drawing.Bitmap]::new($overlay)
|
||||
|
||||
# Create a streaming image by streaming the bitmap to a memory stream
|
||||
$memoryStream = [System.IO.MemoryStream]::new()
|
||||
$bitmap.Save($memoryStream, [System.Drawing.Imaging.ImageFormat]::Png)
|
||||
$memoryStream.Position = 0
|
||||
|
||||
# Create a bitmap image from the memory stream
|
||||
$bitmapImage = [System.Windows.Media.Imaging.BitmapImage]::new()
|
||||
$bitmapImage.BeginInit()
|
||||
$bitmapImage.StreamSource = $memoryStream
|
||||
$bitmapImage.EndInit()
|
||||
$bitmapImage.Freeze()
|
||||
|
||||
$sync["Form"].taskbarItemInfo.Overlay = $bitmapImage
|
||||
if ($overlay) {
|
||||
switch ($overlay) {
|
||||
'logo' {
|
||||
$sync["Form"].taskbarItemInfo.Overlay = (ConvertTo-Bitmap -image "$env:LOCALAPPDATA\winutil\cttlogo.png")
|
||||
}
|
||||
'checkmark' {
|
||||
$sync["Form"].taskbarItemInfo.Overlay = (ConvertTo-Bitmap -image "$env:LOCALAPPDATA\winutil\cttcheckmark.png")
|
||||
}
|
||||
default {
|
||||
if (Test-Path $overlay) {
|
||||
$sync["Form"].taskbarItemInfo.Overlay = (ConvertTo-Bitmap -image $overlay)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($description) {
|
||||
|
31
functions/private/convertTo-Bitmap.ps1
Normal file
31
functions/private/convertTo-Bitmap.ps1
Normal file
@ -0,0 +1,31 @@
|
||||
function ConvertTo-Bitmap {
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Converts an image file to a Bitmap object
|
||||
|
||||
.PARAMETER image
|
||||
The path to the image file to convert
|
||||
|
||||
.EXAMPLE
|
||||
ConvertTo-Bitmap -image "C:\path\to\image.png"
|
||||
#>
|
||||
param (
|
||||
$image
|
||||
)
|
||||
|
||||
# Read the image file as a byte array
|
||||
$imageBytes = [System.IO.File]::ReadAllBytes($image)
|
||||
|
||||
# Convert the byte array to a Base64 string
|
||||
$base64String = [System.Convert]::ToBase64String($imageBytes)
|
||||
|
||||
# Create a streaming image by streaming the base64 string to a bitmap streamsource
|
||||
$bitmap = New-Object System.Windows.Media.Imaging.BitmapImage
|
||||
$bitmap.BeginInit()
|
||||
$bitmap.StreamSource = [System.IO.MemoryStream][System.Convert]::FromBase64String($base64String)
|
||||
$bitmap.EndInit()
|
||||
$bitmap.Freeze()
|
||||
|
||||
# Return the bitmap object
|
||||
return $bitmap
|
||||
}
|
Reference in New Issue
Block a user