Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add OnPlatformExtension. #7812

Merged
merged 44 commits into from
Nov 11, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
6d3ce0a
Add service for runtime platform information.
danwalmsley Mar 15, 2022
3d53bd6
Merge branch 'master' into feature/onplatform-xaml-compiler-support
maxkatz6 Jun 1, 2022
9479baa
Add object-based OnPlatformExtension impl
maxkatz6 Jun 1, 2022
30447ac
Add tests for OnPlatform extensions
maxkatz6 Jun 1, 2022
f39fa92
Merge branch 'master' into feature/onplatform-xaml-compiler-support
maxkatz6 Oct 15, 2022
0dfc280
WIP
maxkatz6 Oct 18, 2022
12608c5
redirect submodule
maxkatz6 Oct 18, 2022
8f9c08d
Merge remote-tracking branch 'origin/master' into feature/onplatform-…
danwalmsley Oct 18, 2022
a8ac68b
skip failing test for now.
danwalmsley Oct 18, 2022
be4a669
implement BrowserRuntimePlatform that can distinguish between desktop…
danwalmsley Oct 19, 2022
aa09803
add a platform info page to control catalog that tells user where ava…
danwalmsley Oct 19, 2022
288cfed
Merge remote-tracking branch 'origin/master' into feature/onplatform-…
danwalmsley Oct 19, 2022
81dca34
tmp
danwalmsley Oct 19, 2022
59e12e4
add OnFormFactor extension.
danwalmsley Oct 19, 2022
0966f63
fix onplatform extension bug.
danwalmsley Oct 19, 2022
4d48f9e
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Oct 20, 2022
9e41a88
Reimplement OnPlatform to inject IL code instead of markup extension
maxkatz6 Oct 21, 2022
725105f
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Oct 22, 2022
06a6875
Move IsOnPlatform method to the xaml helpers class
maxkatz6 Oct 23, 2022
caf2b30
Update xamlx
maxkatz6 Oct 23, 2022
8172173
Extract code into a AvaloniaXamlIlConditionalNode
maxkatz6 Oct 23, 2022
3d4b0ae
Reenable form factor markup extension with some tests
maxkatz6 Oct 23, 2022
b50e187
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Oct 23, 2022
9b4fc3d
Fix tests
maxkatz6 Oct 23, 2022
8daf6d0
Switch back to original XamlX repo
maxkatz6 Oct 24, 2022
be0b414
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Oct 24, 2022
94049a1
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Oct 26, 2022
1e3556b
update xamlx
danwalmsley Oct 27, 2022
5a64c84
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Oct 27, 2022
9c60fe8
Merge branch 'master' into feature/onplatform-xaml-compiler-support
maxkatz6 Oct 29, 2022
12921c1
Refactor extension to use a custom xaml method
maxkatz6 Nov 10, 2022
5484bf4
Merge remote-tracking branch 'origin/master' into feature/onplatform-…
maxkatz6 Nov 10, 2022
523c87d
Browser: use JS side mobile checks
maxkatz6 Nov 10, 2022
a2b939a
Merge remote-tracking branch 'origin/master' into feature/onplatform-…
maxkatz6 Nov 10, 2022
bfc349e
Update XamlX and remove unused methods
maxkatz6 Nov 10, 2022
f8ace85
Merge remote-tracking branch 'origin/master' into feature/onplatform-…
danwalmsley Nov 10, 2022
3593803
browser runtime platform is much simpler.
danwalmsley Nov 10, 2022
60ef705
move constant.
danwalmsley Nov 10, 2022
9be00c0
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Nov 10, 2022
8a6bb0f
Move OnExtensionType and fix netstandard error
maxkatz6 Nov 10, 2022
f489a33
Fix onplatform generics crash on macOS
maxkatz6 Nov 10, 2022
769a51b
Merge branch 'master' into feature/onplatform-xaml-compiler-support
Nov 10, 2022
6bd6e9f
Reuse PlatformFact on some onplatform tests
maxkatz6 Nov 10, 2022
9883a96
Merge branch 'feature/onplatform-xaml-compiler-support' of https://gi…
maxkatz6 Nov 10, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
<Compile Include="MarkupExtensions\CompiledBindings\StrongTypeCastNode.cs" />
<Compile Include="MarkupExtensions\CompiledBindings\TaskStreamPlugin.cs" />
<Compile Include="MarkupExtensions\DynamicResourceExtension.cs" />
<Compile Include="MarkupExtensions\OnPlatformExtension.cs" />
<Compile Include="MarkupExtensions\ResolveByNameExtension.cs" />
<Compile Include="MarkupExtensions\ResourceInclude.cs" />
<Compile Include="MarkupExtensions\StaticResourceExtension.cs" />
Expand All @@ -50,6 +51,7 @@
<Compile Include="Templates\TreeDataTemplate.cs" />
<Compile Include="XamlIl\Runtime\IAvaloniaXamlIlParentStackProvider.cs" />
<Compile Include="XamlIl\Runtime\IAvaloniaXamlIlXmlNamespaceInfoProviderV1.cs" />
<Compile Include="XamlIl\Runtime\RuntimePlatformInfo.cs" />
<Compile Include="XamlIl\Runtime\XamlIlRuntimeHelpers.cs" />
<Compile Include="XamlLoadException.cs" />
<Compile Include="..\Avalonia.Markup\Markup\Parsers\BindingExpressionGrammar.cs" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
using System;
using System.Runtime.InteropServices;


namespace Avalonia.Markup.Xaml.XamlIl.Runtime;

public class RuntimePlatformInfo
{
private static OSPlatform IOS { get; } = OSPlatform.Create("IOS");

private static OSPlatform Android { get; } = OSPlatform.Create("ANDROID");

private static OSPlatform Browser { get; } = OSPlatform.Create("BROWSER");
maxkatz6 marked this conversation as resolved.
Show resolved Hide resolved

public static RuntimePlatformInfo Instance { get; } = new();

private RuntimePlatformInfo()
{
}

public bool IsWindows => RuntimeInformation.IsOSPlatform(OSPlatform.Windows);

public bool IsMacOS => RuntimeInformation.IsOSPlatform(OSPlatform.OSX);

public bool IsLinux => RuntimeInformation.IsOSPlatform(OSPlatform.Linux);

public bool IsIOS => RuntimeInformation.IsOSPlatform(IOS);

public bool IsAndroid => RuntimeInformation.IsOSPlatform(Android);

public bool IsBrowser => RuntimeInformation.IsOSPlatform(Browser);

public bool IsDesktop(Size primaryScreenSize) => primaryScreenSize.Width > 1280;
maxkatz6 marked this conversation as resolved.
Show resolved Hide resolved

public bool IsLaptopOrDesktop(Size primaryScreenSize) =>
primaryScreenSize.Width > 1024 && primaryScreenSize.Width <= 1280;

public bool IsTablet(Size primaryScreenSize) =>
primaryScreenSize.Width > 768 && primaryScreenSize.Width <= 1024;

public bool IsMobileLandscape(Size primaryScreenSize) =>
primaryScreenSize.Width > 480 && primaryScreenSize.Width <= 768;

public bool IsMobile(Size primaryScreenSize) =>
primaryScreenSize.Width <= 480;
maxkatz6 marked this conversation as resolved.
Show resolved Hide resolved
}
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,9 @@ public object GetService(Type serviceType)
return _nameScope;
if (serviceType == typeof(IAvaloniaXamlIlParentStackProvider))
return this;
if (serviceType == typeof(RuntimePlatformInfo))
return RuntimePlatformInfo.Instance;

return null;
}

Expand Down