Skip to content

Commit 81c43fd

Browse files
authored
Merge branch 'main' into MultiWindowSnackbarFix
2 parents 51b3041 + fbfd456 commit 81c43fd

File tree

14 files changed

+1062
-88
lines changed

14 files changed

+1062
-88
lines changed

.github/workflows/benchmarks.yml

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
name: Benchmarks
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
tags:
8+
- '*'
9+
paths-ignore:
10+
- README.md
11+
pull_request:
12+
branches:
13+
- '*'
14+
15+
env:
16+
LATEST_NET_VERSION: '9.0.x'
17+
PathToCommunityToolkitAnalyzersBenchmarkCsproj: 'src/CommunityToolkit.Maui.Analyzers.Benchmarks/CommunityToolkit.Maui.Analyzers.Benchmarks.csproj'
18+
19+
jobs:
20+
run_benchmarks:
21+
name: Run Benchmarks
22+
runs-on: ${{ matrix.os }}
23+
strategy:
24+
matrix:
25+
os: [windows-latest, macos-15]
26+
27+
steps:
28+
- name: Checkout code
29+
uses: actions/checkout@main
30+
31+
- uses: maxim-lobanov/setup-xcode@v1
32+
if: runner.os == 'macOS'
33+
with:
34+
xcode-version: latest-stable
35+
36+
- name: Install Latest Version of .NET, v${{ env.LATEST_NET_VERSION }}
37+
uses: actions/setup-dotnet@v4
38+
with:
39+
dotnet-version: ${{ env.LATEST_NET_VERSION }}
40+
dotnet-quality: 'ga'
41+
42+
- name: Install .NET MAUI Workload
43+
run: |
44+
dotnet workload install maui
45+
dotnet workload update
46+
47+
- name: Install Tizen Workload
48+
run: |
49+
Invoke-WebRequest 'https://raw.githubusercontent.com/Samsung/Tizen.NET/main/workload/scripts/workload-install.ps1' -OutFile 'workload-install.ps1'
50+
.\workload-install.ps1
51+
shell: pwsh
52+
53+
- name: Display dotnet info
54+
run: dotnet --info
55+
56+
- name: Run Benchmarks
57+
run: dotnet run --project ${{ env.PathToCommunityToolkitAnalyzersBenchmarkCsproj }} -c Release -- -a ${{ runner.temp }}
58+
59+
- name: Publish Benchmarks
60+
if: runner.os == 'Windows'
61+
uses: actions/upload-artifact@v4
62+
with:
63+
name: Benchmarks
64+
path: |
65+
${{ runner.temp }}/**/*.md

.github/workflows/dotnet-build.yml

Lines changed: 65 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: .NET
1+
name: Build
22

33
on:
44
push:
@@ -42,7 +42,7 @@ env:
4242
PathToCommunityToolkitCameraAnalyzersCodeFixCsproj: 'src/CommunityToolkit.Maui.Camera.Analyzers.CodeFixes/CommunityToolkit.Maui.Camera.Analyzers.CodeFixes.csproj'
4343
PathToCommunityToolkitMediaElementAnalyzersCodeFixCsproj: 'src/CommunityToolkit.Maui.MediaElement.Analyzers.CodeFixes/CommunityToolkit.Maui.MediaElement.Analyzers.CodeFixes.csproj'
4444
PathToCommunityToolkitAnalyzersUnitTestCsproj: 'src/CommunityToolkit.Maui.Analyzers.UnitTests/CommunityToolkit.Maui.Analyzers.UnitTests.csproj'
45-
DotNetMauiRollbackFile: 'https://maui.blob.core.windows.net/metadata/rollbacks/8.0.6.json'
45+
PathToCommunityToolkitAnalyzersBenchmarkCsproj: 'src/CommunityToolkit.Maui.Analyzers.Benchmarks/CommunityToolkit.Maui.Analyzers.Benchmarks.csproj'
4646
CommunityToolkitSampleApp_Xcode_Version: '16.2'
4747
CommunityToolkitLibrary_Xcode_Version: '16.2'
4848

@@ -60,15 +60,20 @@ jobs:
6060
- name: Set Xcode version
6161
if: runner.os == 'macOS'
6262
run: |
63+
echo Installed Xcode Versions:
64+
ls -al /Applications | grep Xcode
6365
sudo xcode-select --switch /Applications/Xcode_${{ env.CommunityToolkitSampleApp_Xcode_Version }}.app/Contents/Developer
6466
65-
- name: Install Latest .NET SDK
66-
uses: actions/setup-dotnet@v3
67+
- name: Install Latest .NET SDK, v${{ env.LATEST_NET_VERSION }}
68+
uses: actions/setup-dotnet@v4
6769
with:
6870
dotnet-version: ${{ env.LATEST_NET_VERSION }}
71+
dotnet-quality: 'ga'
6972

7073
- name: Install .NET MAUI Workload
71-
run: dotnet workload install maui
74+
run: |
75+
dotnet workload install maui
76+
dotnet workload update
7277
7378
- name: Install Tizen Workload
7479
run: |
@@ -85,6 +90,8 @@ jobs:
8590
build_library:
8691
name: Build Library
8792
runs-on: ${{ matrix.os }}
93+
env:
94+
VSTEST_TESTHOST_SHUTDOWN_TIMEOUT: 1100 # Fixes "The active test run was aborted. Reason: Test host process crashed"
8895
strategy:
8996
matrix:
9097
os: [windows-latest, macos-15]
@@ -119,15 +126,20 @@ jobs:
119126
- name: Set Xcode version
120127
if: runner.os == 'macOS'
121128
run: |
129+
echo Installed Xcode Versions:
130+
ls -al /Applications | grep Xcode
122131
sudo xcode-select --switch /Applications/Xcode_${{ env.CommunityToolkitLibrary_Xcode_Version }}.app/Contents/Developer
123132
124-
- name: Install .NET SDK
125-
uses: actions/setup-dotnet@v3
133+
- name: Install .NET SDK v${{ env.TOOLKIT_NET_VERSION }}
134+
uses: actions/setup-dotnet@v4
126135
with:
127136
dotnet-version: ${{ env.TOOLKIT_NET_VERSION }}
137+
dotnet-quality: 'ga'
128138

129139
- name: Install .NET MAUI Workload
130-
run: dotnet workload install maui --skip-sign-check --source https://api.nuget.org/v3/index.json
140+
run: |
141+
dotnet workload install maui
142+
dotnet workload update
131143
132144
- name: Install Tizen Workload
133145
run: |
@@ -138,10 +150,46 @@ jobs:
138150
- name: Display dotnet info
139151
run: dotnet --info
140152

141-
- name: Build CommunityToolkit.Maui
142-
run: dotnet build -c Release ${{ env.PathToLibrarySolution }}
153+
- name: 'Build CommunityToolkit.Maui.Analyzers'
154+
run: dotnet build ${{ env.PathToCommunityToolkitAnalyzersCsproj }} -c Release
155+
156+
- name: 'Build CommunityToolkit.Maui.Analyzers.CodeFixes'
157+
run: dotnet build ${{ env.PathToCommunityToolkitAnalyzersCodeFixCsproj }} -c Release
158+
159+
- name: 'Build CommunityToolkit.Maui.Camera.Analyzers'
160+
run: dotnet build ${{ env.PathToCommunityToolkitCameraAnalyzersCsproj }} -c Release
161+
162+
- name: 'Build CommunityToolkit.Maui.Camera.Analyzers.CodeFixes'
163+
run: dotnet build ${{ env.PathToCommunityToolkitCameraAnalyzersCodeFixCsproj }} -c Release
164+
165+
- name: 'Build CommunityToolkit.Maui.MediaElement.Analyzers'
166+
run: dotnet build ${{ env.PathToCommunityToolkitMediaElementAnalyzersCsproj }} -c Release
167+
168+
- name: 'Build CommunityToolkit.Maui.MediaElement.Analyzers.CodeFixes'
169+
run: dotnet build ${{ env.PathToCommunityToolkitMediaElementAnalyzersCodeFixCsproj }} -c Release
143170

144-
- name: Run CommunityToolkit.Maui.UnitTests
171+
- name: 'Build CommunityToolkit.Maui.SourceGenerators'
172+
run: dotnet build ${{ env.PathToCommunityToolkitSourceGeneratorsCsproj }} -c Release
173+
174+
- name: 'Build CommunityToolkit.SourceGenerators.Internal'
175+
run: dotnet build ${{ env.PathToCommunityToolkitSourceGeneratorsInternalCsproj }} -c Release
176+
177+
- name: 'Build CommunityToolkit.Maui.Camera'
178+
run: dotnet build ${{ env.PathToCommunityToolkitCameraCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersionCamera }} -p:Version=${{ env.NugetPackageVersion }}
179+
180+
- name: 'Build CommunityToolkit.Maui.MediaElement'
181+
run: dotnet build ${{ env.PathToCommunityToolkitMediaElementCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersionMediaElement }} -p:Version=${{ env.NugetPackageVersion }}
182+
183+
- name: 'Build CommunityToolkit.Maui.Maps'
184+
run: dotnet build ${{ env.PathToCommunityToolkitMapsCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersionMaps }} -p:Version=${{ env.NugetPackageVersion }}
185+
186+
- name: 'Build CommunityToolkit.Maui.Core'
187+
run: dotnet build ${{ env.PathToCommunityToolkitCoreCsproj }} -c Release -p:PackageVersion=${{ env.NugetPackageVersion }} -p:Version=${{ env.NugetPackageVersion }}
188+
189+
- name: 'Build CommunityToolkit.Maui'
190+
run: dotnet build ${{ env.PathToLibrarySolution }} -c Release -p:PackageVersion=${{ env.NugetPackageVersion }} -p:Version=${{ env.NugetPackageVersion }}
191+
192+
- name: Run All Unit Tests
145193
run: dotnet test -c Release ${{ env.PathToLibrarySolution }} --settings ".runsettings" --collect "XPlat code coverage" --logger trx --results-directory ${{ runner.temp }}
146194

147195
- name: Publish Test Results
@@ -198,10 +246,11 @@ jobs:
198246
id-token: write # Required for requesting the JWT
199247

200248
steps:
201-
- name: Install .NET SDK
202-
uses: actions/setup-dotnet@v3
249+
- name: Install .NET SDK v${{ env.TOOLKIT_NET_VERSION }}
250+
uses: actions/setup-dotnet@v4
203251
with:
204252
dotnet-version: ${{ env.TOOLKIT_NET_VERSION }}
253+
dotnet-quality: 'ga'
205254

206255
- name: Download NuGet List
207256
uses: actions/download-artifact@v4
@@ -251,9 +300,10 @@ jobs:
251300

252301
steps:
253302
- name: Install .NET SDK
254-
uses: actions/setup-dotnet@v3
303+
uses: actions/setup-dotnet@v4
255304
with:
256305
dotnet-version: ${{ env.TOOLKIT_NET_VERSION }}
306+
dotnet-quality: 'ga'
257307

258308
- name: Download signed packages for ${{ matrix.platform }}
259309
uses: actions/download-artifact@v4
@@ -267,4 +317,4 @@ jobs:
267317
**/*.nupkg
268318
--source https://api.nuget.org/v3/index.json
269319
--api-key ${{ secrets.NUGET_PACKAGE_PUSH_TOKEN }}
270-
--skip-duplicate
320+
--skip-duplicate

Directory.Build.props

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,7 @@
190190
</PropertyGroup>
191191

192192
<ItemGroup>
193+
<SupportedPlatform Include="Tizen" />
193194
<InternalsVisibleTo Include="CommunityToolkit.Maui.UnitTests"/>
194195
<InternalsVisibleTo Include="CommunityToolkit.Maui.Analyzers.UnitTests"/>
195196
</ItemGroup>

src/CommunityToolkit.Maui.Analyzers.UnitTests/CommunityToolkit.Maui.Analyzers.UnitTests.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
</PropertyGroup>
1111

1212
<ItemGroup>
13-
<PackageReference Include="FluentAssertions" Version="8.0.0" />
13+
<PackageReference Include="FluentAssertions" Version="8.0.1" />
1414
<PackageReference Include="FluentAssertions.Analyzers" Version="0.34.1" />
1515
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Analyzer.Testing.XUnit" Version="1.1.2" />
1616
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.CodeFix.Testing.XUnit" Version="1.1.2" />
1717
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
1818
<PackageReference Include="xunit" Version="2.9.3" />
1919
<PackageReference Include="xunit.runner.visualstudio" Version="3.0.1" PrivateAssets="All" />
20-
<PackageReference Include="coverlet.collector" Version="6.0.3" PrivateAssets="All" />
20+
<PackageReference Include="coverlet.collector" Version="6.0.4" PrivateAssets="All" />
2121
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.12.0" />
2222
<PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiPackageVersion)" />
2323
</ItemGroup>

src/CommunityToolkit.Maui.Camera/CameraManager.android.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -172,7 +172,7 @@ protected virtual async partial Task PlatformConnectCamera(CancellationToken tok
172172

173173
protected async Task StartUseCase(CancellationToken token)
174174
{
175-
if (resolutionSelector is null)
175+
if (resolutionSelector is null || cameraExecutor is null)
176176
{
177177
return;
178178
}
@@ -183,7 +183,7 @@ protected async Task StartUseCase(CancellationToken token)
183183
imageCapture?.Dispose();
184184

185185
cameraPreview = new Preview.Builder().SetResolutionSelector(resolutionSelector).Build();
186-
cameraPreview.SetSurfaceProvider(previewView?.SurfaceProvider);
186+
cameraPreview.SetSurfaceProvider(cameraExecutor, previewView?.SurfaceProvider);
187187

188188
imageCapture = new ImageCapture.Builder()
189189
.SetCaptureMode(ImageCapture.CaptureModeMaximizeQuality)

src/CommunityToolkit.Maui.Camera/CommunityToolkit.Maui.Camera.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@
5151
</ItemGroup>
5252

5353
<ItemGroup Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">
54-
<PackageReference Include="Xamarin.AndroidX.Camera.Camera2" Version="1.3.1.1" />
55-
<PackageReference Include="Xamarin.AndroidX.Camera.View" Version="1.3.1.1" />
54+
<PackageReference Include="Xamarin.AndroidX.Camera.Camera2" Version="1.4.1" />
55+
<PackageReference Include="Xamarin.AndroidX.Camera.View" Version="1.4.1" />
5656

5757
<!-- Ensure Linker does not remove required libraries -->
5858
<None Include="linker.xml" Pack="true" PackagePath="build\$(PackageId).LinkerConfigurationFile.xml" />

src/CommunityToolkit.Maui.MediaElement/CommunityToolkit.Maui.MediaElement.csproj

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,4 +81,9 @@
8181
<PackageReference Include="Microsoft.SourceLink.GitHub" Version="8.0.0" Condition=" '$(Configuration)'=='Release' " PrivateAssets="All" />
8282
</ItemGroup>
8383

84+
<ItemGroup>
85+
<EmbeddedResource Include="ResourceDictionary.windows.xaml">
86+
<LogicalName>ResourceDictionary.windows.xaml</LogicalName>
87+
</EmbeddedResource>
88+
</ItemGroup>
8489
</Project>
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
using Microsoft.UI.Xaml;
2+
using Microsoft.UI.Xaml.Controls;
3+
namespace CommunityToolkit.Maui.Primitives;
4+
5+
sealed partial class CustomTransportControls : MediaTransportControls
6+
{
7+
public event EventHandler<EventArgs>? OnTemplateLoaded;
8+
public AppBarButton FullScreenButton = new();
9+
bool isFullScreen = false;
10+
11+
public CustomTransportControls()
12+
{
13+
this.DefaultStyleKey = typeof(CustomTransportControls);
14+
}
15+
16+
protected override void OnApplyTemplate()
17+
{
18+
base.OnApplyTemplate();
19+
20+
var temp = GetTemplateChild("FullWindowButton") as AppBarButton;
21+
if(temp is not null)
22+
{
23+
FullScreenButton = temp;
24+
FullScreenButton.Visibility = Microsoft.UI.Xaml.Visibility.Visible;
25+
OnTemplateLoaded?.Invoke(this, EventArgs.Empty);
26+
FullScreenButton.Click += FullScreenButton_Click;
27+
}
28+
}
29+
30+
void FullScreenButton_Click(object sender, RoutedEventArgs e)
31+
{
32+
if (isFullScreen)
33+
{
34+
FullScreenButton.Icon = new FontIcon { Glyph = "\uE740" };
35+
isFullScreen = false;
36+
}
37+
else
38+
{
39+
FullScreenButton.Icon = new SymbolIcon(Symbol.BackToWindow);
40+
isFullScreen = true;
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)