diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 3a7ca0d08..da534e1d5 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -21,15 +21,16 @@ jobs:
runs-on: windows-latest
strategy:
matrix:
- configuration: [Release] # No need to distribute Debug builds
+ configuration: [Debug] # No need to distribute Debug builds
platform: [x64]
- framework: [net8.0-windows10.0.22621.0]
+ framework: [net9.0-windows10.0.22621.0]
env:
Configuration: ${{ matrix.configuration }}
Platform: ${{ matrix.platform }}
DOTNET_INSTALL_DIR: '.\.dotnet'
- DOTNET_VERSION: '8.x'
+ DOTNET_VERSION: '9.x'
+ DOTNET_QUALITY: 'preview'
NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
steps:
@@ -42,6 +43,48 @@ jobs:
uses: actions/setup-dotnet@v4
with:
dotnet-version: ${{ env.DOTNET_VERSION }}
+ dotnet-quality: ${{ env.DOTNET_QUALITY }}
+ cache: true
+ cache-dependency-path: CollapseLauncher/packages.lock.json
+
+ - name: Build
+ run: |
+ dotnet publish CollapseLauncher -p:PublishProfile=Publish-DebugCIRelease -p:PublishDir=".\debug-build\"
+
+ - name: Upload Artifact
+ uses: actions/upload-artifact@v4.3.1
+ with:
+ name: collapse_${{ matrix.platform }}-${{ matrix.configuration }}_${{ matrix.framework }}_${{ github.sha }}
+ path: ./CollapseLauncher/debug-build/
+ compression-level: 9
+
+ build-nativeaot:
+ runs-on: windows-latest
+ strategy:
+ matrix:
+ configuration: [Debug]
+ platform: [x64]
+ framework: [net9.0-windows10.0.22621.0]
+
+ env:
+ Configuration: ${{ matrix.configuration }}
+ Platform: ${{ matrix.platform }}
+ DOTNET_INSTALL_DIR: '.\.dotnet'
+ DOTNET_VERSION: '9.x'
+ DOTNET_QUALITY: 'preview'
+ NUGET_PACKAGES: ${{ github.workspace }}/.nuget/packages
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4.1.5
+ with:
+ submodules: recursive
+
+ - name: Install .NET
+ uses: actions/setup-dotnet@v4
+ with:
+ dotnet-version: ${{ env.DOTNET_VERSION }}
+ dotnet-quality: ${{ env.DOTNET_QUALITY }}
cache: true
cache-dependency-path: CollapseLauncher/packages.lock.json
@@ -51,16 +94,20 @@ jobs:
- name: Build
run: |
- dotnet publish CollapseLauncher -p:PublishProfile=Publish-PreviewRelease -p:PublishDir=".\preview-build\"
+ dotnet publish CollapseLauncher -p:PublishProfile=Publish-DebugCIReleaseAOT -p:PublishDir=".\debug-aot-build\"
- - name: Upload Artifact (Release)
+ - name: Upload Artifact
uses: actions/upload-artifact@v4.3.1
- if: ${{ matrix.configuration == 'Release' }}
with:
- name: collapse_${{ matrix.platform }}-${{ matrix.configuration }}_${{ matrix.framework }}_${{ github.sha }}
- path: ./CollapseLauncher/preview-build/
+ name: aot-experimental_collapse_${{ matrix.platform }}-${{ matrix.configuration }}_${{ matrix.framework }}_${{ github.sha }}
+ path: ./CollapseLauncher/debug-aot-build/
compression-level: 9
+ notify-discord:
+ runs-on: ubuntu-latest
+ if: always()
+ needs: [build, build-nativeaot]
+ steps:
- name: Notify Discord
uses: sarisia/actions-status-discord@v1.13.0
if: always()
diff --git a/.gitignore b/.gitignore
index 7fe060537..b2fcd1f69 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,5 @@
-*/bin/*
-*/obj/*
+**/bin/*
+**/obj/*
*build/*
.vs/*
*.user
@@ -7,7 +7,7 @@ packages/*
CollapseLauncher/Deps/*
CollapseLauncher/Invoker/*
-CollapseLauncher/Generated Files/**
+**/Generated Files/**
*.psd
InstallerProp/Output/*
InstallerProp/temp/**
diff --git a/.gitmodules b/.gitmodules
index 8c68a51a8..bd0331340 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -22,3 +22,6 @@
[submodule "SevenZipExtractor"]
path = SevenZipExtractor
url = https://github.com/CollapseLauncher/SevenZipExtractor
+[submodule "H.NotifyIcon"]
+ path = H.NotifyIcon
+ url = https://github.com/CollapseLauncher/H.NotifyIcon
diff --git a/Backup/CommunityToolkit.WinUI.Controls.ImageCropper.csproj b/Backup/CommunityToolkit.WinUI.Controls.ImageCropper.csproj
new file mode 100644
index 000000000..0e97ae7dd
--- /dev/null
+++ b/Backup/CommunityToolkit.WinUI.Controls.ImageCropper.csproj
@@ -0,0 +1,30 @@
+
+
+
+
+ ImageCropper
+ The ImageCropper control allows the user to freely crop an image.
+
+
+ CommunityToolkit.WinUI.Controls.ImageCropperRns
+ ReadMe.md
+
+
+
+
+
+
+
+
+
+
+
+ True
+ \
+
+
+
+
+ $(PackageIdPrefix).$(PackageIdVariant).Controls.$(ToolkitComponentName)
+
+
diff --git a/Backup/ReadMe.md b/Backup/ReadMe.md
new file mode 100644
index 000000000..07942198d
--- /dev/null
+++ b/Backup/ReadMe.md
@@ -0,0 +1,38 @@
+
+# Windows Community Toolkit - ImageCropper
+
+This package is part of the [Windows Community Toolkit](https://aka.ms/toolkit/windows) from the [.NET Foundation](https://dotnetfoundation.org).
+
+## Package Contents
+
+This package contains the following controls in the `CommunityToolkit.WinUI.Controls` namespace:
+
+- ImageCropper
+
+## Which Package is for me?
+
+If you're developing with _UWP/WinUI 2 or Uno.UI_ you should be using the `CommunityToolkit.Uwp.Controls.ImageCropper` package.
+
+If you're developing with _WindowsAppSDK/WinUI 3 or Uno.WinUI_ you should be using the `CommunityToolkit.WinUI.Controls.ImageCropper` package.
+
+## WinUI Resources (UWP)
+
+For UWP projects, the WinUI 2 reference requires you include the WinUI XAML Resources in your App.xaml file:
+
+```xml
+
+
+
+```
+
+See [Getting Started in WinUI 2](https://learn.microsoft.com/windows/apps/winui/winui2/getting-started) for more information.
+
+## Documentation
+
+Further documentation about these components can be found at: https://aka.ms/windowstoolkitdocs
+
+## License
+
+MIT
+
+See License.md in package for more details.
diff --git a/ClearCache.bat b/ClearCache.bat
index 50a691b8b..c42722760 100644
--- a/ClearCache.bat
+++ b/ClearCache.bat
@@ -3,6 +3,10 @@ echo Clearing Collapse cache
rmdir /S /Q CollapseLauncher\bin && rmdir /S /Q CollapseLauncher\obj
echo Clearing ColorThief cache
rmdir /S /Q ColorThief\ColorThief\bin && rmdir /S /Q ColorThief\ColorThief\obj
+echo Clearing CommunityToolkit.ImageCropper cache
+rmdir /S /Q Hi3Helper.CommunityToolkit\ImageCropper\bin && rmdir /S /Q Hi3Helper.CommunityToolkit\ImageCropper\obj
+echo Clearing CommunityToolkit.SettingsControls cache
+rmdir /S /Q Hi3Helper.CommunityToolkit\SettingsControls\bin && rmdir /S /Q Hi3Helper.CommunityToolkit\SettingsControls\obj
echo Clearing Core cache
rmdir /S /Q Hi3Helper.Core\bin && rmdir /S /Q Hi3Helper.Core\obj
echo Clearing EncTool cache
@@ -13,12 +17,16 @@ echo Clearing Http cache
rmdir /S /Q Hi3Helper.Http\bin && rmdir /S /Q Hi3Helper.Http\obj
echo Clearing Http tester cache
rmdir /S /Q Hi3Helper.Http\Test\bin && rmdir /S /Q Hi3Helper.Http\Test\obj
+echo Clearing TaskScheduler cache
+rmdir /S /Q Hi3Helper.TaskScheduler\bin && rmdir /S /Q Hi3Helper.TaskScheduler\obj
echo Clearing HDiff cache
rmdir /S /Q Hi3Helper.SharpHDiffPatch\Hi3Helper.SharpHDiffPatch\bin && rmdir /S /Q Hi3Helper.SharpHDiffPatch\Hi3Helper.SharpHDiffPatch\obj
echo Clearing 2nd HDiff cache
rmdir /S /Q Hi3Helper.SharpHDiffPatch\SharpHDiffPatch\bin && rmdir /S /Q Hi3Helper.SharpHDiffPatch\SharpHDiffPatch\obj
echo Clearing InnoSetupHelper cache
rmdir /S /Q InnoSetupHelper\bin && rmdir /S /Q InnoSetupHelper\obj
+echo Clearing ImageEx cache
+rmdir /S /Q ImageEx\ImageEx\bin && rmdir /S /Q ImageEx\ImageEx\obj
echo Clearing 7z cache
rmdir /S /Q Hi3Helper.Core\Classes\Data\Tools\SevenZipTool\SevenZipExtractor\SevenZipExtractor\bin && rmdir /S /Q Hi3Helper.Core\Classes\Data\Tools\SevenZipTool\SevenZipExtractor\SevenZipExtractor\obj
echo Clearing SharpDiscordRPC cache
diff --git a/CollapseLauncher.sln b/CollapseLauncher.sln
index aa68aa993..c6045a5c1 100644
--- a/CollapseLauncher.sln
+++ b/CollapseLauncher.sln
@@ -24,6 +24,18 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Hi3Helper.Sophon", "Hi3Help
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageEx", "ImageEx\ImageEx\ImageEx.csproj", "{A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hi3Helper.TaskScheduler", "Hi3Helper.TaskScheduler\Hi3Helper.TaskScheduler.csproj", "{C9CBAF52-49C7-4B72-A03B-130F596E24CB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hi3Helper.CommunityToolkit.WinUI.Controls.ImageCropper", "Hi3Helper.CommunityToolkit\ImageCropper\Hi3Helper.CommunityToolkit.WinUI.Controls.ImageCropper.csproj", "{558A1D17-BEB4-49DF-A200-15ABE283BDED}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Hi3Helper.CommunityToolkit.WinUI.Controls.SettingsControls", "Hi3Helper.CommunityToolkit\SettingsControls\Hi3Helper.CommunityToolkit.WinUI.Controls.SettingsControls.csproj", "{5A1243EC-EFD9-4B55-8F29-D1A91A9B027D}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "H.NotifyIcon.WinUI", "H.NotifyIcon\src\libs\H.NotifyIcon.WinUI\H.NotifyIcon.WinUI.csproj", "{141083CC-A924-4E19-904C-AF91361405A5}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "H.NotifyIcon", "H.NotifyIcon\src\libs\H.NotifyIcon\H.NotifyIcon.csproj", "{6C8A25FA-BA1C-4EE4-8A9D-2FB4918077FB}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "H.GeneratedIcons.System.Drawing", "H.NotifyIcon\src\libs\H.GeneratedIcons.System.Drawing\H.GeneratedIcons.System.Drawing.csproj", "{911C98FD-C64D-4BAC-8EF5-0616F8EFF7B9}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|x64 = Debug|x64
@@ -92,10 +104,44 @@ Global
{3F87DCD0-39B7-4F8C-8F34-A0FC7C6E65A0}.Release|x64.Build.0 = Release|x64
{A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Debug|x64.ActiveCfg = Debug|x64
{A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Debug|x64.Build.0 = Debug|x64
- {A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Publish|x64.ActiveCfg = Debug|x64
- {A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Publish|x64.Build.0 = Debug|x64
+ {A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Publish|x64.ActiveCfg = Release|x64
+ {A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Publish|x64.Build.0 = Release|x64
{A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Release|x64.ActiveCfg = Release|x64
{A6AF9DE9-1A18-4C2D-B106-B68A0A7CD07D}.Release|x64.Build.0 = Release|x64
+ {C9CBAF52-49C7-4B72-A03B-130F596E24CB}.Debug|x64.ActiveCfg = Debug|x64
+ {C9CBAF52-49C7-4B72-A03B-130F596E24CB}.Debug|x64.Build.0 = Debug|x64
+ {C9CBAF52-49C7-4B72-A03B-130F596E24CB}.Publish|x64.ActiveCfg = Release|x64
+ {C9CBAF52-49C7-4B72-A03B-130F596E24CB}.Release|x64.ActiveCfg = Release|x64
+ {558A1D17-BEB4-49DF-A200-15ABE283BDED}.Debug|x64.ActiveCfg = Debug|x64
+ {558A1D17-BEB4-49DF-A200-15ABE283BDED}.Debug|x64.Build.0 = Debug|x64
+ {558A1D17-BEB4-49DF-A200-15ABE283BDED}.Publish|x64.ActiveCfg = Release|x64
+ {558A1D17-BEB4-49DF-A200-15ABE283BDED}.Publish|x64.Build.0 = Release|x64
+ {558A1D17-BEB4-49DF-A200-15ABE283BDED}.Release|x64.ActiveCfg = Release|x64
+ {558A1D17-BEB4-49DF-A200-15ABE283BDED}.Release|x64.Build.0 = Release|x64
+ {5A1243EC-EFD9-4B55-8F29-D1A91A9B027D}.Debug|x64.ActiveCfg = Debug|x64
+ {5A1243EC-EFD9-4B55-8F29-D1A91A9B027D}.Debug|x64.Build.0 = Debug|x64
+ {5A1243EC-EFD9-4B55-8F29-D1A91A9B027D}.Publish|x64.ActiveCfg = Release|x64
+ {5A1243EC-EFD9-4B55-8F29-D1A91A9B027D}.Publish|x64.Build.0 = Release|x64
+ {5A1243EC-EFD9-4B55-8F29-D1A91A9B027D}.Release|x64.ActiveCfg = Release|x64
+ {5A1243EC-EFD9-4B55-8F29-D1A91A9B027D}.Release|x64.Build.0 = Release|x64
+ {141083CC-A924-4E19-904C-AF91361405A5}.Debug|x64.ActiveCfg = Debug|x64
+ {141083CC-A924-4E19-904C-AF91361405A5}.Debug|x64.Build.0 = Debug|x64
+ {141083CC-A924-4E19-904C-AF91361405A5}.Publish|x64.ActiveCfg = Release|x64
+ {141083CC-A924-4E19-904C-AF91361405A5}.Publish|x64.Build.0 = Release|x64
+ {141083CC-A924-4E19-904C-AF91361405A5}.Release|x64.ActiveCfg = Release|x64
+ {141083CC-A924-4E19-904C-AF91361405A5}.Release|x64.Build.0 = Release|x64
+ {6C8A25FA-BA1C-4EE4-8A9D-2FB4918077FB}.Debug|x64.ActiveCfg = Debug|x64
+ {6C8A25FA-BA1C-4EE4-8A9D-2FB4918077FB}.Debug|x64.Build.0 = Debug|x64
+ {6C8A25FA-BA1C-4EE4-8A9D-2FB4918077FB}.Publish|x64.ActiveCfg = Release|x64
+ {6C8A25FA-BA1C-4EE4-8A9D-2FB4918077FB}.Publish|x64.Build.0 = Release|x64
+ {6C8A25FA-BA1C-4EE4-8A9D-2FB4918077FB}.Release|x64.ActiveCfg = Release|x64
+ {6C8A25FA-BA1C-4EE4-8A9D-2FB4918077FB}.Release|x64.Build.0 = Release|x64
+ {911C98FD-C64D-4BAC-8EF5-0616F8EFF7B9}.Debug|x64.ActiveCfg = Debug|x64
+ {911C98FD-C64D-4BAC-8EF5-0616F8EFF7B9}.Debug|x64.Build.0 = Debug|x64
+ {911C98FD-C64D-4BAC-8EF5-0616F8EFF7B9}.Publish|x64.ActiveCfg = Release|x64
+ {911C98FD-C64D-4BAC-8EF5-0616F8EFF7B9}.Publish|x64.Build.0 = Release|x64
+ {911C98FD-C64D-4BAC-8EF5-0616F8EFF7B9}.Release|x64.ActiveCfg = Release|x64
+ {911C98FD-C64D-4BAC-8EF5-0616F8EFF7B9}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/CollapseLauncher/App.xaml b/CollapseLauncher/App.xaml
index 03ea596c7..29062f0d2 100644
--- a/CollapseLauncher/App.xaml
+++ b/CollapseLauncher/App.xaml
@@ -1,4 +1,4 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -28,345 +41,359 @@
#ffd52a
#ffd52a
#ffd52a
-
-
-
-
-
+
+
+
+
+
+ FallbackColor="{ThemeResource SystemAccentColor}"
+ Opacity="0.8"
+ TintColor="{ThemeResource SystemAccentColor}"
+ TintLuminosityOpacity="0.8"
+ TintOpacity="0.2" />
+ Color="{ThemeResource SystemAccentColorLight2}" />
+ Color="#FFFFFF" />
+ Color="#000000" />
-
-
-
-
+ Color="#242424" />
+
+
+
+
#ffd52a
+ Color="{ThemeResource DialogTitleColor}" />
-
-
-
+ TintOpacity="0.0" />
+
+
+
+ TintOpacity="0.0" />
+ TintOpacity="0" />
+ TintOpacity="0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="1" />
+ TintOpacity="0.6" />
+ TintOpacity="0.0" />
+ TintOpacity="0.75" />
+ TintOpacity="0.0" />
+ TintLuminosityOpacity="0.2"
+ TintOpacity="0.2" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="1" />
-
+
+ TintOpacity="0.0" />
+ TintLuminosityOpacity="0.5"
+ TintOpacity="0.0" />
-
-
-
+ TintOpacity="0.0" />
+
+
+
+
+ Color="#00000000" />
+ Color="#22000000" />
+ Color="#11000000" />
+ Color="#0A000000" />
+
+ Color="#22000000" />
+ Color="#11000000" />
+ Color="#0A000000" />
+ Color="#44000000" />
+ Color="#55000000" />
+ Color="#33000000" />
+ Color="#22000000" />
-
-
-
+
+
+
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
-
+ TintOpacity="0.0" />
+
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
-
+ TintOpacity="0.0" />
+
+ TintOpacity="0" />
+ Opacity="0.9"
+ TintColor="{ThemeResource SystemAccentColor}" />
+ Opacity="0.75"
+ TintColor="{ThemeResource SystemAccentColor}" />
+ FallbackColor="{ThemeResource SystemAccentColor}"
+ TintColor="{ThemeResource SystemAccentColor}" />
+ Opacity="0.75"
+ Color="#DDFFFFFF" />
+ Color="#EE000000" />
+ Color="#CC000000" />
+ Color="#FF111111" />
+ TintOpacity="0" />
+ TintOpacity="0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
-
+ TintOpacity="0.0" />
+
+
+ Color="#00000000" />
+ Color="#00000000" />
+
+
+ Color="#A0C00000" />
+
+
@@ -378,338 +405,350 @@
#693758
#693758
#693758
-
-
-
-
-
+
+
+
+
+
+ FallbackColor="{ThemeResource SystemAccentColor}"
+ Opacity="0.8"
+ TintColor="{ThemeResource SystemAccentColor}"
+ TintLuminosityOpacity="0.8"
+ TintOpacity="0.2" />
+ Color="{ThemeResource SystemAccentColor}" />
+ Color="#000000" />
+ Color="#FFFFFF" />
-
-
-
-
+ Color="#ECECEC" />
+
+
+
+
#693758
+ Color="{ThemeResource DialogTitleColor}" />
-
-
-
+ TintOpacity="0.0" />
+
+
+
+ TintOpacity="0.0" />
+ TintOpacity="1" />
+ TintOpacity="0" />
+ TintOpacity="0" />
+ TintLuminosityOpacity="0.9"
+ TintOpacity="0.4" />
+ TintOpacity="0.25" />
+ TintOpacity="0.25" />
+ TintOpacity="0" />
+ TintOpacity="0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.75" />
+ TintOpacity="0.7" />
+ TintOpacity="0" />
+ TintOpacity="0" />
+ TintOpacity="0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
-
+ TintOpacity="1" />
+
+ TintOpacity="0.0" />
+ TintLuminosityOpacity="0.9"
+ TintOpacity="0.0" />
+
-
-
-
+ TintOpacity="0.0" />
+
+
+
+ Color="#00FFFFFF" />
+ Color="#66FFFFFF" />
+ Color="#44FFFFFF" />
+ Color="#22FFFFFF" />
+ Color="#66FFFFFF" />
+ Color="#44FFFFFF" />
+ Color="#22FFFFFF" />
+ Color="#88FFFFFF" />
+ Color="#55FFFFFF" />
+ Color="#44FFFFFF" />
-
-
-
-
+ Color="#22FFFFFF" />
+
+
+
+
-
+
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
-
+ TintOpacity="0.0" />
+
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
-
+ TintOpacity="0.0" />
+
+ FallbackColor="#88FFFFFF"
+ TintColor="#88FFFFFF" />
+ Opacity="0.9"
+ TintColor="{ThemeResource SystemAccentColor}" />
+ Opacity="0.8"
+ TintColor="{ThemeResource SystemAccentColor}" />
+ FallbackColor="{ThemeResource SystemAccentColor}"
+ TintColor="{ThemeResource SystemAccentColor}" />
+ Color="#88000000" />
+ Color="#DDFFFFFF" />
+ Color="#CCFFFFFF" />
+ Color="#FFFFFF" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
+ TintOpacity="0.0" />
-
+ TintOpacity="0.0" />
+
+
+ Color="#00FFFFFF" />
+ Color="#00FFFFFF" />
+
+
+ Color="#90FF6666" />
+
+
@@ -718,38 +757,28 @@
+
-
+
+ TargetType="ComboBox" />
2
-
-
-
-
-
-
-
-
-
-
-
-
ms-appx:///Assets/Fonts/FontAwesomeBrand6.otf#Font Awesome 6 Brands
diff --git a/CollapseLauncher/App.xaml.cs b/CollapseLauncher/App.xaml.cs
index 7159fa386..d6cf12ce2 100644
--- a/CollapseLauncher/App.xaml.cs
+++ b/CollapseLauncher/App.xaml.cs
@@ -8,7 +8,6 @@
using PhotoSauce.MagicScaler;
using PhotoSauce.NativeCodecs.Libwebp;
using System;
-using System.Collections.Generic;
using System.Linq;
using Windows.UI;
using static CollapseLauncher.InnerLauncherConfig;
@@ -134,7 +133,8 @@ protected override void OnLaunched(LaunchActivatedEventArgs args)
{
LogWriteLine($"FATAL ERROR ON APP INITIALIZER LEVEL!!!\r\n{ex}", LogType.Error, true);
LogWriteLine("\r\nIf this is not intended, please report it to: https://github.com/CollapseLauncher/Collapse/issues\r\nPress any key to exit...");
- Console.ReadLine();
+ //Console.ReadLine();
+ throw;
}
}
@@ -147,14 +147,12 @@ public static void ToggleBlurBackdrop(bool useBackdrop = true)
// then select the value, get the type of ResourceDictionary, then enumerate it
foreach (ResourceDictionary list in resource!
.ThemeDictionaries!
- .OfType>()
.Select(x => x.Value)
.OfType())
{
// Parse the dictionary as type of KeyValuePair
diff --git a/Hi3Helper.CommunityToolkit/SettingsControls/SettingsCard/SettingsCardAutomationPeer.cs b/Hi3Helper.CommunityToolkit/SettingsControls/SettingsCard/SettingsCardAutomationPeer.cs
new file mode 100644
index 000000000..f59bf8308
--- /dev/null
+++ b/Hi3Helper.CommunityToolkit/SettingsControls/SettingsCard/SettingsCardAutomationPeer.cs
@@ -0,0 +1,70 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+// ReSharper disable RedundantExtendsListEntry
+// ReSharper disable PartialTypeWithSinglePart
+namespace Hi3Helper.CommunityToolkit.WinUI.Controls;
+
+///
+/// AutomationPeer for SettingsCard
+///
+public partial class SettingsCardAutomationPeer : FrameworkElementAutomationPeer
+{
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ /// SettingsCard
+ public SettingsCardAutomationPeer(SettingsCard owner)
+ : base(owner)
+ {
+ }
+
+ ///
+ /// Gets the control type for the element that is associated with the UI Automation peer.
+ ///
+ /// The control type.
+ protected override AutomationControlType GetAutomationControlTypeCore()
+ {
+ if (Owner is SettingsCard settingsCard && settingsCard.IsClickEnabled)
+ {
+ return AutomationControlType.Button;
+ }
+ else
+ {
+ return AutomationControlType.Group;
+ }
+ }
+
+ ///
+ /// Called by GetClassName that gets a human readable name that, in addition to AutomationControlType,
+ /// differentiates the control represented by this AutomationPeer.
+ ///
+ /// The string that contains the name.
+ protected override string GetClassNameCore()
+ {
+ return Owner.GetType().Name;
+ }
+
+ protected override string GetNameCore()
+ {
+ // We only want to announce the button card name if it is clickable, else it's just a regular card that does not receive focus
+ if (Owner is SettingsCard owner && owner.IsClickEnabled)
+ {
+ string name = AutomationProperties.GetName(owner);
+ if (!string.IsNullOrEmpty(name))
+ {
+ return name;
+ }
+ else
+ {
+ if (owner.Header is string headerString && !string.IsNullOrEmpty(headerString))
+ {
+ return headerString;
+ }
+ }
+ }
+
+ return base.GetNameCore();
+ }
+}
diff --git a/Hi3Helper.CommunityToolkit/SettingsControls/SettingsExpander/SettingsExpander.Events.cs b/Hi3Helper.CommunityToolkit/SettingsControls/SettingsExpander/SettingsExpander.Events.cs
new file mode 100644
index 000000000..d1a50dbad
--- /dev/null
+++ b/Hi3Helper.CommunityToolkit/SettingsControls/SettingsExpander/SettingsExpander.Events.cs
@@ -0,0 +1,19 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+#nullable enable
+namespace Hi3Helper.CommunityToolkit.WinUI.Controls;
+
+public partial class SettingsExpander
+{
+ ///
+ /// Fires when the SettingsExpander is opened
+ ///
+ public event EventHandler? Expanded;
+
+ ///
+ /// Fires when the expander is closed
+ ///
+ public event EventHandler? Collapsed;
+}
diff --git a/Hi3Helper.CommunityToolkit/SettingsControls/SettingsExpander/SettingsExpander.ItemsControl.cs b/Hi3Helper.CommunityToolkit/SettingsControls/SettingsExpander/SettingsExpander.ItemsControl.cs
new file mode 100644
index 000000000..1eab5c08f
--- /dev/null
+++ b/Hi3Helper.CommunityToolkit/SettingsControls/SettingsExpander/SettingsExpander.ItemsControl.cs
@@ -0,0 +1,68 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace Hi3Helper.CommunityToolkit.WinUI.Controls;
+
+//// Implement properties for ItemsControl like behavior.
+public partial class SettingsExpander
+{
+ public IList