Added initial Uno Platform frontend project.
This commit is contained in:
parent
1296f363af
commit
b2aba31264
3
FrontendPlatformUno/.gitignore
vendored
Normal file
3
FrontendPlatformUno/.gitignore
vendored
Normal file
@ -0,0 +1,3 @@
|
||||
**/bin
|
||||
**/obj
|
||||
.vs
|
38
FrontendPlatformUno/.vsconfig
Normal file
38
FrontendPlatformUno/.vsconfig
Normal file
@ -0,0 +1,38 @@
|
||||
{
|
||||
"version": "1.0",
|
||||
"components": [
|
||||
"Microsoft.VisualStudio.Component.CoreEditor",
|
||||
"Microsoft.VisualStudio.Workload.CoreEditor",
|
||||
"Microsoft.NetCore.Component.SDK",
|
||||
"Microsoft.NetCore.Component.DevelopmentTools",
|
||||
"Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions",
|
||||
"Microsoft.NetCore.Component.Web",
|
||||
"Microsoft.Net.ComponentGroup.DevelopmentPrerequisites",
|
||||
"Microsoft.VisualStudio.Component.TextTemplating",
|
||||
"Microsoft.VisualStudio.Component.IISExpress",
|
||||
"Component.Microsoft.Web.LibraryManager",
|
||||
"Microsoft.VisualStudio.ComponentGroup.Web",
|
||||
"Microsoft.VisualStudio.Component.Web",
|
||||
"Microsoft.VisualStudio.ComponentGroup.Web.Client",
|
||||
"Microsoft.VisualStudio.Workload.NetWeb",
|
||||
"Microsoft.VisualStudio.ComponentGroup.Azure.Prerequisites",
|
||||
"Microsoft.VisualStudio.Workload.Azure",
|
||||
"Microsoft.VisualStudio.Component.Windows10SDK.19041",
|
||||
"Microsoft.VisualStudio.Component.ManagedDesktop.Prerequisites",
|
||||
"Microsoft.VisualStudio.Component.Debugger.JustInTime",
|
||||
"Microsoft.VisualStudio.ComponentGroup.MSIX.Packaging",
|
||||
"Microsoft.VisualStudio.Workload.ManagedDesktop",
|
||||
"Microsoft.Component.NetFX.Native",
|
||||
"Microsoft.VisualStudio.Component.Graphics",
|
||||
"Component.OpenJDK",
|
||||
"Microsoft.VisualStudio.Component.MonoDebugger",
|
||||
"Microsoft.VisualStudio.Component.Merq",
|
||||
"Component.Xamarin.RemotedSimulator",
|
||||
"Microsoft.VisualStudio.ComponentGroup.WebToolsExtensions.TemplateEngine",
|
||||
"Component.Xamarin",
|
||||
"Component.Android.SDK32",
|
||||
"Microsoft.VisualStudio.Workload.NetCrossPlat",
|
||||
"Microsoft.VisualStudio.Workload.NetCoreTools",
|
||||
"Microsoft.VisualStudio.ComponentGroup.Maui.All"
|
||||
]
|
||||
}
|
59
FrontendPlatformUno/Directory.Build.props
Normal file
59
FrontendPlatformUno/Directory.Build.props
Normal file
@ -0,0 +1,59 @@
|
||||
<Project ToolsVersion="15.0">
|
||||
<PropertyGroup>
|
||||
<LangVersion>11</LangVersion>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<DebugType>portable</DebugType>
|
||||
<DebugSymbols>True</DebugSymbols>
|
||||
<SynthesizeLinkMetadata>true</SynthesizeLinkMetadata>
|
||||
|
||||
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
|
||||
<NoWarn>$(NoWarn);Uno0001;CS1998;CA1416;NU1507</NoWarn>
|
||||
|
||||
<DefaultLanguage>en</DefaultLanguage>
|
||||
|
||||
<IsAndroid>false</IsAndroid>
|
||||
<IsIOS>false</IsIOS>
|
||||
<IsMac>false</IsMac>
|
||||
<IsMacCatalyst>false</IsMacCatalyst>
|
||||
<IsWinAppSdk>false</IsWinAppSdk>
|
||||
</PropertyGroup>
|
||||
|
||||
<Choose>
|
||||
<When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'android'">
|
||||
<PropertyGroup>
|
||||
<IsAndroid>true</IsAndroid>
|
||||
<SupportedOSPlatformVersion>21.0</SupportedOSPlatformVersion>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'ios'">
|
||||
<PropertyGroup>
|
||||
<IsIOS>true</IsIOS>
|
||||
<SupportedOSPlatformVersion>14.2</SupportedOSPlatformVersion>
|
||||
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)'==''">iossimulator-x64</RuntimeIdentifier>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'macos'">
|
||||
<PropertyGroup>
|
||||
<IsMac>true</IsMac>
|
||||
<SupportedOSPlatformVersion>10.14</SupportedOSPlatformVersion>
|
||||
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)'==''">osx-x64</RuntimeIdentifier>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">
|
||||
<PropertyGroup>
|
||||
<IsMacCatalyst>true</IsMacCatalyst>
|
||||
<SupportedOSPlatformVersion>14.0</SupportedOSPlatformVersion>
|
||||
<RuntimeIdentifier Condition="'$(RuntimeIdentifier)'==''">maccatalyst-x64</RuntimeIdentifier>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$(TargetFramework.Contains('windows10'))">
|
||||
<PropertyGroup>
|
||||
<IsWinAppSdk>true</IsWinAppSdk>
|
||||
<SupportedOSPlatformVersion>10.0.18362.0</SupportedOSPlatformVersion>
|
||||
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
</Project>
|
2
FrontendPlatformUno/Directory.Build.targets
Normal file
2
FrontendPlatformUno/Directory.Build.targets
Normal file
@ -0,0 +1,2 @@
|
||||
<Project ToolsVersion="15.0">
|
||||
</Project>
|
17
FrontendPlatformUno/FrontendPlatformUno.Base/AppHead.xaml
Normal file
17
FrontendPlatformUno/FrontendPlatformUno.Base/AppHead.xaml
Normal file
@ -0,0 +1,17 @@
|
||||
<local:App x:Class="FrontendPlatformUno.AppHead"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:wasm="http://platform.uno/wasm"
|
||||
xmlns:local="using:FrontendPlatformUno"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
mc:Ignorable="wasm">
|
||||
|
||||
<local:App.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<ResourceDictionary Source="ms-appx:///FrontendPlatformUno/AppResources.xaml" />
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
</ResourceDictionary>
|
||||
</local:App.Resources>
|
||||
|
||||
</local:App>
|
14
FrontendPlatformUno/FrontendPlatformUno.Base/AppHead.xaml.cs
Normal file
14
FrontendPlatformUno/FrontendPlatformUno.Base/AppHead.xaml.cs
Normal file
@ -0,0 +1,14 @@
|
||||
namespace FrontendPlatformUno
|
||||
{
|
||||
public sealed partial class AppHead : App
|
||||
{
|
||||
/// <summary>
|
||||
/// Initializes the singleton application object. This is the first line of authored code
|
||||
/// executed, and as such is the logical equivalent of main() or WinMain().
|
||||
/// </summary>
|
||||
public AppHead()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
137
FrontendPlatformUno/FrontendPlatformUno.Base/Icons/appconfig.svg
Normal file
137
FrontendPlatformUno/FrontendPlatformUno.Base/Icons/appconfig.svg
Normal file
@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="450"
|
||||
height="450"
|
||||
viewBox="0 0 50.369617 49.826836"
|
||||
version="1.1"
|
||||
id="svg151"
|
||||
sodipodi:docname="appconfig.svg"
|
||||
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview153"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.250876"
|
||||
inkscape:cx="218.64677"
|
||||
inkscape:cy="175.87674"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g149" />
|
||||
<defs
|
||||
id="defs105">
|
||||
<path
|
||||
id="aj28a0fd1a"
|
||||
d="M 1.738,0.156 3.927,2.323 2.347,3.919 0.101,1.81 Z" />
|
||||
<path
|
||||
id="fdje57jgic"
|
||||
d="M 2.201,0.066 3.855,1.703 1.69,3.894 0.093,2.311 Z" />
|
||||
<path
|
||||
id="6bg72xwlze"
|
||||
d="M 2.398,0.044 3.994,1.624 1.886,3.869 0.232,2.232 Z" />
|
||||
<path
|
||||
id="eaqjnja8wg"
|
||||
d="M 1.736,0.023 3.981,2.132 2.344,3.786 0.156,1.619 Z" />
|
||||
</defs>
|
||||
<g
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="g149"
|
||||
transform="translate(-2.9304427e-4,-1.6465461e-4)">
|
||||
<g
|
||||
id="g147">
|
||||
<g
|
||||
id="g145">
|
||||
<path
|
||||
fill="#7a67f8"
|
||||
d="M 34.758,38.865 H 34.746 C 31.892,38.86 29.342,36.882 26.152,33.692 l -6.93,-6.873 2.166,-2.188 6.937,6.88 c 3.075,3.074 4.876,4.272 6.427,4.275 h 0.005 c 1.567,0 3.467,-1.262 6.558,-4.353 l 3.541,-3.587 c 1.784,-1.784 2.57,-3.34 2.408,-4.762 -0.13,-1.156 -0.894,-2.397 -2.401,-3.904 L 44.83,19.146 C 43.202,17.414 41.211,15.483 39.131,14.414 38.745,12.437 37.48,10.881 37.3,10.596 c 3.803,0.559 7.197,3.703 9.758,6.424 2.788,2.794 5.803,7.176 -0.018,12.996 l -3.54,3.588 c -3.251,3.25 -5.844,5.261 -8.742,5.261"
|
||||
id="path107" />
|
||||
<path
|
||||
fill="#f85977"
|
||||
d="m 25.399,28.608 6.492,-6.562 c 3.076,-3.076 4.274,-4.877 4.276,-6.428 0.004,-1.567 -1.257,-3.469 -4.352,-6.563 L 28.228,5.515 C 24.58,1.867 22.369,2.699 19.561,5.507 L 19.528,5.54 c -1.54,1.448 -3.237,3.182 -4.346,5.01 -1.031,0.073 -2.361,0.424 -3.997,1.518 0.906,-3.397 3.737,-6.422 6.216,-8.755 2.794,-2.789 7.177,-5.804 12.997,0.017 l 3.588,3.54 c 3.255,3.256 5.266,5.851 5.26,8.754 -0.005,2.854 -1.982,5.404 -5.172,8.594 l -6.489,6.559 z"
|
||||
id="path109" />
|
||||
<path
|
||||
fill="#159bff"
|
||||
d="M 12.522,38.707 C 8.939,37.946 5.746,34.972 3.308,32.382 2.035,31.106 0.321,29.13 0.042,26.663 c -0.274,-2.414 0.8,-4.795 3.283,-7.278 l 3.542,-3.588 c 3.25,-3.25 5.843,-5.261 8.74,-5.261 h 0.013 c 2.854,0.005 5.404,1.983 8.593,5.172 l 7.046,6.976 -2.165,2.19 -7.053,-6.983 c -3.076,-3.076 -4.876,-4.273 -6.427,-4.276 h -0.006 c -1.566,0 -3.466,1.261 -6.557,4.352 L 5.51,21.555 c -1.784,1.784 -2.57,3.34 -2.409,4.762 0.131,1.156 0.894,2.396 2.402,3.904 l 0.033,0.034 c 1.55,1.649 3.43,3.479 5.401,4.573 0.168,1.739 1.2,3.297 1.585,3.88"
|
||||
id="path111" />
|
||||
<path
|
||||
fill="#67e5ad"
|
||||
d="m 26.32,49.827 c -1.925,0 -4.114,-0.886 -6.557,-3.33 l -3.588,-3.54 C 9.167,35.949 9.151,32.546 16.086,25.61 l 6.802,-6.872 2.193,2.162 -6.812,6.882 c -3.076,3.076 -4.273,4.877 -4.276,6.427 -0.003,1.568 1.258,3.47 4.352,6.563 l 3.588,3.541 c 3.646,3.647 5.858,2.816 8.666,0.008 l 0.034,-0.033 c 1.654,-1.555 3.5,-3.46 4.593,-5.437 1.661,-0.14 2.9,-0.841 3.835,-1.438 -0.8,3.537 -3.738,6.69 -6.302,9.102 -1.62,1.618 -3.777,3.312 -6.439,3.312"
|
||||
id="path113" />
|
||||
<g
|
||||
transform="translate(21.154,18.577)"
|
||||
id="g120">
|
||||
<mask
|
||||
id="8jptpqrneb"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#aj28a0fd1a"
|
||||
id="use115" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 0.101,1.81 1.738,0.156 3.927,2.323 2.347,3.919 Z"
|
||||
mask="url(#8jptpqrneb)"
|
||||
id="path118" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(27.404,20.981)"
|
||||
id="g127">
|
||||
<mask
|
||||
id="b2iljpfwbd"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#fdje57jgic"
|
||||
id="use122" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 2.201,0.066 3.855,1.703 1.69,3.894 0.093,2.311 Z"
|
||||
mask="url(#b2iljpfwbd)"
|
||||
id="path125" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(18.99,24.587)"
|
||||
id="g134">
|
||||
<mask
|
||||
id="gj70tyfpnf"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#6bg72xwlze"
|
||||
id="use129" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 1.886,3.869 0.232,2.232 2.398,0.044 3.994,1.624 Z"
|
||||
mask="url(#gj70tyfpnf)"
|
||||
id="path132" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(25.24,26.99)"
|
||||
id="g141">
|
||||
<mask
|
||||
id="z7vhvduckh"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#eaqjnja8wg"
|
||||
id="use136" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 3.981,2.132 2.344,3.786 0.156,1.619 1.736,0.023 Z"
|
||||
mask="url(#z7vhvduckh)"
|
||||
id="path139" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
@ -0,0 +1,42 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="456"
|
||||
height="456"
|
||||
viewBox="0 0 456 456"
|
||||
version="1.1"
|
||||
id="svg453"
|
||||
sodipodi:docname="iconapp.old.svg"
|
||||
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs457" />
|
||||
<sodipodi:namedview
|
||||
id="namedview455"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.8574561"
|
||||
inkscape:cx="228.26919"
|
||||
inkscape:cy="228.26919"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg453" />
|
||||
<rect
|
||||
x="0"
|
||||
y="0"
|
||||
width="456"
|
||||
height="456"
|
||||
fill="#FFFFFF"
|
||||
id="rect451" />
|
||||
</svg>
|
After Width: | Height: | Size: 1.1 KiB |
@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
width="450"
|
||||
height="450"
|
||||
viewBox="0 0 50.369617 49.826836"
|
||||
version="1.1"
|
||||
id="svg151"
|
||||
sodipodi:docname="appconfig.svg"
|
||||
inkscape:version="1.2 (dc2aedaf03, 2022-05-15)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<sodipodi:namedview
|
||||
id="namedview153"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#000000"
|
||||
borderopacity="0.25"
|
||||
inkscape:showpageshadow="2"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#d1d1d1"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.250876"
|
||||
inkscape:cx="218.64677"
|
||||
inkscape:cy="175.87674"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1027"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="g149" />
|
||||
<defs
|
||||
id="defs105">
|
||||
<path
|
||||
id="aj28a0fd1a"
|
||||
d="M 1.738,0.156 3.927,2.323 2.347,3.919 0.101,1.81 Z" />
|
||||
<path
|
||||
id="fdje57jgic"
|
||||
d="M 2.201,0.066 3.855,1.703 1.69,3.894 0.093,2.311 Z" />
|
||||
<path
|
||||
id="6bg72xwlze"
|
||||
d="M 2.398,0.044 3.994,1.624 1.886,3.869 0.232,2.232 Z" />
|
||||
<path
|
||||
id="eaqjnja8wg"
|
||||
d="M 1.736,0.023 3.981,2.132 2.344,3.786 0.156,1.619 Z" />
|
||||
</defs>
|
||||
<g
|
||||
fill="none"
|
||||
fill-rule="evenodd"
|
||||
id="g149"
|
||||
transform="translate(-2.9304427e-4,-1.6465461e-4)">
|
||||
<g
|
||||
id="g147">
|
||||
<g
|
||||
id="g145">
|
||||
<path
|
||||
fill="#7a67f8"
|
||||
d="M 34.758,38.865 H 34.746 C 31.892,38.86 29.342,36.882 26.152,33.692 l -6.93,-6.873 2.166,-2.188 6.937,6.88 c 3.075,3.074 4.876,4.272 6.427,4.275 h 0.005 c 1.567,0 3.467,-1.262 6.558,-4.353 l 3.541,-3.587 c 1.784,-1.784 2.57,-3.34 2.408,-4.762 -0.13,-1.156 -0.894,-2.397 -2.401,-3.904 L 44.83,19.146 C 43.202,17.414 41.211,15.483 39.131,14.414 38.745,12.437 37.48,10.881 37.3,10.596 c 3.803,0.559 7.197,3.703 9.758,6.424 2.788,2.794 5.803,7.176 -0.018,12.996 l -3.54,3.588 c -3.251,3.25 -5.844,5.261 -8.742,5.261"
|
||||
id="path107" />
|
||||
<path
|
||||
fill="#f85977"
|
||||
d="m 25.399,28.608 6.492,-6.562 c 3.076,-3.076 4.274,-4.877 4.276,-6.428 0.004,-1.567 -1.257,-3.469 -4.352,-6.563 L 28.228,5.515 C 24.58,1.867 22.369,2.699 19.561,5.507 L 19.528,5.54 c -1.54,1.448 -3.237,3.182 -4.346,5.01 -1.031,0.073 -2.361,0.424 -3.997,1.518 0.906,-3.397 3.737,-6.422 6.216,-8.755 2.794,-2.789 7.177,-5.804 12.997,0.017 l 3.588,3.54 c 3.255,3.256 5.266,5.851 5.26,8.754 -0.005,2.854 -1.982,5.404 -5.172,8.594 l -6.489,6.559 z"
|
||||
id="path109" />
|
||||
<path
|
||||
fill="#159bff"
|
||||
d="M 12.522,38.707 C 8.939,37.946 5.746,34.972 3.308,32.382 2.035,31.106 0.321,29.13 0.042,26.663 c -0.274,-2.414 0.8,-4.795 3.283,-7.278 l 3.542,-3.588 c 3.25,-3.25 5.843,-5.261 8.74,-5.261 h 0.013 c 2.854,0.005 5.404,1.983 8.593,5.172 l 7.046,6.976 -2.165,2.19 -7.053,-6.983 c -3.076,-3.076 -4.876,-4.273 -6.427,-4.276 h -0.006 c -1.566,0 -3.466,1.261 -6.557,4.352 L 5.51,21.555 c -1.784,1.784 -2.57,3.34 -2.409,4.762 0.131,1.156 0.894,2.396 2.402,3.904 l 0.033,0.034 c 1.55,1.649 3.43,3.479 5.401,4.573 0.168,1.739 1.2,3.297 1.585,3.88"
|
||||
id="path111" />
|
||||
<path
|
||||
fill="#67e5ad"
|
||||
d="m 26.32,49.827 c -1.925,0 -4.114,-0.886 -6.557,-3.33 l -3.588,-3.54 C 9.167,35.949 9.151,32.546 16.086,25.61 l 6.802,-6.872 2.193,2.162 -6.812,6.882 c -3.076,3.076 -4.273,4.877 -4.276,6.427 -0.003,1.568 1.258,3.47 4.352,6.563 l 3.588,3.541 c 3.646,3.647 5.858,2.816 8.666,0.008 l 0.034,-0.033 c 1.654,-1.555 3.5,-3.46 4.593,-5.437 1.661,-0.14 2.9,-0.841 3.835,-1.438 -0.8,3.537 -3.738,6.69 -6.302,9.102 -1.62,1.618 -3.777,3.312 -6.439,3.312"
|
||||
id="path113" />
|
||||
<g
|
||||
transform="translate(21.154,18.577)"
|
||||
id="g120">
|
||||
<mask
|
||||
id="8jptpqrneb"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#aj28a0fd1a"
|
||||
id="use115" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 0.101,1.81 1.738,0.156 3.927,2.323 2.347,3.919 Z"
|
||||
mask="url(#8jptpqrneb)"
|
||||
id="path118" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(27.404,20.981)"
|
||||
id="g127">
|
||||
<mask
|
||||
id="b2iljpfwbd"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#fdje57jgic"
|
||||
id="use122" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 2.201,0.066 3.855,1.703 1.69,3.894 0.093,2.311 Z"
|
||||
mask="url(#b2iljpfwbd)"
|
||||
id="path125" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(18.99,24.587)"
|
||||
id="g134">
|
||||
<mask
|
||||
id="gj70tyfpnf"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#6bg72xwlze"
|
||||
id="use129" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 1.886,3.869 0.232,2.232 2.398,0.044 3.994,1.624 Z"
|
||||
mask="url(#gj70tyfpnf)"
|
||||
id="path132" />
|
||||
</g>
|
||||
<g
|
||||
transform="translate(25.24,26.99)"
|
||||
id="g141">
|
||||
<mask
|
||||
id="z7vhvduckh"
|
||||
fill="#ffffff">
|
||||
<use
|
||||
xlink:href="#eaqjnja8wg"
|
||||
id="use136" />
|
||||
</mask>
|
||||
<path
|
||||
d="M 3.981,2.132 2.344,3.786 0.156,1.619 1.736,0.023 Z"
|
||||
mask="url(#z7vhvduckh)"
|
||||
id="path139" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 5.5 KiB |
25
FrontendPlatformUno/FrontendPlatformUno.Base/base.props
Normal file
25
FrontendPlatformUno/FrontendPlatformUno.Base/base.props
Normal file
@ -0,0 +1,25 @@
|
||||
<Project>
|
||||
<ItemGroup>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Include="$(MSBuildThisFileDirectory)AppHead.xaml" />
|
||||
<ApplicationDefinition Include="$(MSBuildThisFileDirectory)AppHead.xaml"
|
||||
SubType="Designer"
|
||||
XamlRuntime="WinUI"
|
||||
Generator="MSBuild:Compile"
|
||||
Link="AppHead.xaml" />
|
||||
<Compile Include="$(MSBuildThisFileDirectory)AppHead.xaml.cs"
|
||||
XamlRuntime="WinUI"
|
||||
DependentUpon="AppHead.xaml"
|
||||
Link="AppHead.xaml.cs" />
|
||||
<UnoIcon Include="$(MSBuildThisFileDirectory)Icons\iconapp.svg"
|
||||
ForegroundFile="$(MSBuildThisFileDirectory)Icons\appconfig.svg"
|
||||
ForegroundScale="0.65"
|
||||
Color="#00000000" />
|
||||
<UnoSplashScreen
|
||||
Include="$(MSBuildThisFileDirectory)Splash\splash_screen.svg"
|
||||
BaseSize="128,128"
|
||||
Color="#086AD1" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,8 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<GenerateDocumentationFile>true</GenerateDocumentationFile>
|
||||
<!-- Suppress Compiler warnings for elements without XML Docs -->
|
||||
<NoWarn>$(NoWarn);CS1591</NoWarn>
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -0,0 +1,22 @@
|
||||
using System.Collections.Immutable;
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace FrontendPlatformUno.DataContracts.Serialization
|
||||
{
|
||||
/*
|
||||
* When using the JsonSerializerContext you must add the JsonSerializableAttribute
|
||||
* for each type that you may need to serialize / deserialize including both the
|
||||
* concrete type and any interface that the concrete type implements.
|
||||
* For more information on the JsonSerializerContext see:
|
||||
* https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/source-generation?WT.mc_id=DT-MVP-5002924
|
||||
*/
|
||||
[JsonSerializable(typeof(WeatherForecast))]
|
||||
[JsonSerializable(typeof(WeatherForecast[]))]
|
||||
[JsonSerializable(typeof(IEnumerable<WeatherForecast>))]
|
||||
[JsonSerializable(typeof(IImmutableList<WeatherForecast>))]
|
||||
[JsonSerializable(typeof(ImmutableList<WeatherForecast>))]
|
||||
[JsonSourceGenerationOptions(PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
|
||||
public partial class WeatherForecastContext : JsonSerializerContext
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
namespace FrontendPlatformUno.DataContracts
|
||||
{
|
||||
/// <summary>
|
||||
/// A Weather Forecast for a specific date
|
||||
/// </summary>
|
||||
/// <param name="Date">Gets the Date of the Forecast.</param>
|
||||
/// <param name="TemperatureC">Gets the Forecast Temperature in Celsius.</param>
|
||||
/// <param name="Summary">Get a description of how the weather will feel.</param>
|
||||
public record WeatherForecast(DateOnly Date, int TemperatureC, string? Summary)
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the Forecast Temperature in Fahrenheit
|
||||
/// </summary>
|
||||
public int TemperatureF => 32 + (int)(TemperatureC / 0.5556);
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<application android:allowBackup="true" android:supportsRtl="true"></application>
|
||||
</manifest>
|
@ -0,0 +1,22 @@
|
||||
To add cross-platform image assets for your Uno Platform app, use the Assets folder
|
||||
in the shared project instead. Assets in this folder are Android-only assets.
|
||||
|
||||
Any raw assets you want to be deployed with your application can be placed in
|
||||
this directory (and child directories) and given a Build Action of "AndroidAsset".
|
||||
|
||||
These files will be deployed with you package and will be accessible using Android's
|
||||
AssetManager, like this:
|
||||
|
||||
public class ReadAsset : Activity
|
||||
{
|
||||
protected override void OnCreate (Bundle bundle)
|
||||
{
|
||||
base.OnCreate (bundle);
|
||||
|
||||
InputStream input = Assets.Open ("my_asset.txt");
|
||||
}
|
||||
}
|
||||
|
||||
Additionally, some Android functions will automatically load asset files:
|
||||
|
||||
Typeface tf = Typeface.CreateFromAsset (Context.Assets, "fonts/samplefont.ttf");
|
@ -0,0 +1,43 @@
|
||||
using Android.App;
|
||||
using Android.Content;
|
||||
using Android.OS;
|
||||
using Android.Runtime;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
using Com.Nostra13.Universalimageloader.Core;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace FrontendPlatformUno.Droid
|
||||
{
|
||||
[global::Android.App.ApplicationAttribute(
|
||||
Label = "@string/ApplicationName",
|
||||
Icon = "@mipmap/iconapp",
|
||||
LargeHeap = true,
|
||||
HardwareAccelerated = true,
|
||||
Theme = "@style/AppTheme"
|
||||
)]
|
||||
public class Application : Microsoft.UI.Xaml.NativeApplication
|
||||
{
|
||||
public Application(IntPtr javaReference, JniHandleOwnership transfer)
|
||||
: base(() => new AppHead(), javaReference, transfer)
|
||||
{
|
||||
ConfigureUniversalImageLoader();
|
||||
}
|
||||
|
||||
private static void ConfigureUniversalImageLoader()
|
||||
{
|
||||
// Create global configuration and initialize ImageLoader with this config
|
||||
ImageLoaderConfiguration config = new ImageLoaderConfiguration
|
||||
.Builder(Context)
|
||||
.Build();
|
||||
|
||||
ImageLoader.Instance.Init(config);
|
||||
|
||||
ImageSource.DefaultImageLoader = ImageLoader.Instance.LoadImageAsync;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
using Android.App;
|
||||
using Android.Content.PM;
|
||||
using Android.OS;
|
||||
using Android.Views;
|
||||
using Android.Widget;
|
||||
|
||||
namespace FrontendPlatformUno.Droid
|
||||
{
|
||||
[Activity(
|
||||
MainLauncher = true,
|
||||
ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges,
|
||||
WindowSoftInputMode = SoftInput.AdjustNothing | SoftInput.StateHidden
|
||||
)]
|
||||
public class MainActivity : Microsoft.UI.Xaml.ApplicationActivity
|
||||
{
|
||||
}
|
||||
}
|
@ -0,0 +1,47 @@
|
||||
To add cross-platform image assets for your Uno Platform app, use the Assets folder
|
||||
in the shared project instead. Resources in this folder are Android-only.
|
||||
|
||||
Images, layout descriptions, binary blobs and string dictionaries can be included
|
||||
in your application as resource files. Various Android APIs are designed to
|
||||
operate on the resource IDs instead of dealing with images, strings or binary blobs
|
||||
directly.
|
||||
|
||||
For example, a sample Android app that contains a user interface layout (main.axml),
|
||||
an internationalization string table (strings.xml) and some icons (drawable-XXX/icon.png)
|
||||
would keep its resources in the "Resources" directory of the application:
|
||||
|
||||
Resources/
|
||||
drawable/
|
||||
icon.png
|
||||
|
||||
layout/
|
||||
main.axml
|
||||
|
||||
values/
|
||||
strings.xml
|
||||
|
||||
In order to get the build system to recognize Android resources, set the build action to
|
||||
"AndroidResource". The native Android APIs do not operate directly with filenames, but
|
||||
instead operate on resource IDs. When you compile an Android application that uses resources,
|
||||
the build system will package the resources for distribution and generate a class called "R"
|
||||
(this is an Android convention) that contains the tokens for each one of the resources
|
||||
included. For example, for the above Resources layout, this is what the R class would expose:
|
||||
|
||||
public class R {
|
||||
public class drawable {
|
||||
public const int icon = 0x123;
|
||||
}
|
||||
|
||||
public class layout {
|
||||
public const int main = 0x456;
|
||||
}
|
||||
|
||||
public class strings {
|
||||
public const int first_string = 0xabc;
|
||||
public const int second_string = 0xbcd;
|
||||
}
|
||||
}
|
||||
|
||||
You would then use R.drawable.icon to reference the drawable/icon.png file, or R.layout.main
|
||||
to reference the layout/main.axml file, or R.strings.first_string to reference the first
|
||||
string in the dictionary file values/strings.xml.
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="Hello">Hello World, Click Me!</string>
|
||||
<string name="ApplicationName">FrontendPlatformUno</string>
|
||||
</resources>
|
@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<resources>
|
||||
<style name="AppTheme" parent="Theme.AppCompat.Light">
|
||||
|
||||
<!-- This removes the ActionBar -->
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
|
||||
<!-- This property is used for the splash screen -->
|
||||
<item name="android:windowSplashScreenBackground">#FFFFFF</item>
|
||||
<item name="android:windowBackground">@drawable/splash_screen</item>
|
||||
<item name="android:windowSplashScreenAnimatedIcon">@drawable/splash_screen</item>
|
||||
<!--<item name="android:windowSplashScreenBehavior">1</item>-->
|
||||
|
||||
</style>
|
||||
<style name="Theme.AppCompat.Translucent">
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowAnimationStyle">@android:style/Animation</item>
|
||||
</style>
|
||||
|
||||
</resources>
|
@ -0,0 +1,2 @@
|
||||
# See this for more details: http://developer.xamarin.com/guides/android/advanced_topics/garbage_collection/
|
||||
MONO_GC_PARAMS=bridge-implementation=tarjan,nursery-size=32m,soft-heap-limit=256m
|
@ -0,0 +1,84 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks>net7.0-ios;net7.0-android;net7.0-maccatalyst</TargetFrameworks>
|
||||
<SingleProject>true</SingleProject>
|
||||
<OutputType>Exe</OutputType>
|
||||
<!-- Display name -->
|
||||
<ApplicationTitle>FrontendPlatformUno</ApplicationTitle>
|
||||
<!-- App Identifier -->
|
||||
<ApplicationId>FrontendPlatformUno</ApplicationId>
|
||||
<ApplicationIdGuid>36537AB1-6EE7-4E43-9642-A94BA47355DA</ApplicationIdGuid>
|
||||
<!-- Versions -->
|
||||
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
|
||||
<ApplicationVersion>1</ApplicationVersion>
|
||||
|
||||
<AndroidManifest>Android\AndroidManifest.xml</AndroidManifest>
|
||||
|
||||
<!-- Debugger workaround https://github.com/dotnet/maui-samples/blob/8aa6b8780b12e97b157514c3bdc54bb4a13001cd/HelloMacCatalyst/HelloMacCatalyst.csproj#L7 -->
|
||||
<!-- <MtouchExtraArgs Condition="$([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) == 'maccatalyst'">$(MtouchExtraArgs) -setenv:MONO_THREADS_SUSPEND=preemptive</MtouchExtraArgs> -->
|
||||
<!-- Required for C# Hot Reload -->
|
||||
<UseInterpreter Condition="'$(Configuration)' == 'Debug' and $([MSBuild]::GetTargetPlatformIdentifier('$(TargetFramework)')) != 'maccatalyst'">True</UseInterpreter>
|
||||
<IsUnoHead>true</IsUnoHead>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.Resizetizer" Version="1.0.2" />
|
||||
<PackageReference Include="Uno.WinUI" Version="4.8.24" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
|
||||
<PackageReference Include="Uno.Extensions.Configuration" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Logging.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Material.WinUI" Version="2.5.3" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI.Material" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Extensions.Authentication.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Hosting.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Localization.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.Toolkit.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
<PackageReference Include="Uno.Extensions.Logging.OSLog" Version="1.4.0" />
|
||||
<PackageReference Include="Uno.UI.Adapter.Microsoft.Extensions.Logging" Version="4.8.24" />
|
||||
<PackageReference Include="Uno.WinUI.RemoteControl" Version="4.8.24" Condition="'$(Configuration)'=='Debug'" />
|
||||
</ItemGroup>
|
||||
<Choose>
|
||||
<When Condition="$(IsAndroid)">
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Xamarin.Google.Android.Material" Version="1.8.0" />
|
||||
<PackageReference Include="Uno.UniversalImageLoader" Version="1.9.36" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AndroidEnvironment Include="Android/environment.conf" />
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<When Condition="$(IsIOS)">
|
||||
<PropertyGroup>
|
||||
<MtouchExtraArgs>$(MtouchExtraArgs) --setenv=MONO_GC_PARAMS=soft-heap-limit=512m,nursery-size=64m,evacuation-threshold=66,major=marksweep,concurrent-sweep</MtouchExtraArgs>
|
||||
<!-- See https://github.com/unoplatform/uno/issues/9430 for more details. -->
|
||||
<MtouchExtraArgs>$(MtouchExtraArgs) --registrar:static</MtouchExtraArgs>
|
||||
<!-- https://github.com/xamarin/xamarin-macios/issues/14812 -->
|
||||
<MtouchExtraArgs>$(MtouchExtraArgs) --marshal-objectivec-exceptions:disable</MtouchExtraArgs>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
<When Condition="$(IsMacCatalyst)">
|
||||
<PropertyGroup>
|
||||
<!-- Configure the GC -->
|
||||
<MtouchExtraArgs>$(MtouchExtraArgs) --setenv=MONO_GC_PARAMS=soft-heap-limit=512m,nursery-size=64m,evacuation-threshold=66,major=marksweep,concurrent-sweep</MtouchExtraArgs>
|
||||
<!-- Required for unknown crash as of .NET 6 Mobile Preview 13 -->
|
||||
<MtouchExtraArgs>$(MtouchExtraArgs) --registrar:static</MtouchExtraArgs>
|
||||
<!-- https://github.com/xamarin/xamarin-macios/issues/14812 -->
|
||||
<MtouchExtraArgs>$(MtouchExtraArgs) --marshal-objectivec-exceptions:disable</MtouchExtraArgs>
|
||||
<!-- Full globalization is required for Uno -->
|
||||
<InvariantGlobalization>false</InvariantGlobalization>
|
||||
</PropertyGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FrontendPlatformUno\FrontendPlatformUno.csproj" />
|
||||
<ProjectReference Include="..\FrontendPlatformUno.DataContracts\FrontendPlatformUno.DataContracts.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\FrontendPlatformUno.Base\base.props" />
|
||||
</Project>
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<IsFirstTimeProjectOpen>False</IsFirstTimeProjectOpen>
|
||||
<ActiveDebugFramework>net7.0-ios</ActiveDebugFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Update="C:\Users\dbren\source\repos\FrontendPlatformUno\FrontendPlatformUno.Base\AppHead.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,29 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>2</integer>
|
||||
</array>
|
||||
<key>LSApplicationCategoryType</key>
|
||||
<string>public.app-category.utilities</string>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>XSAppIconAssets</key>
|
||||
<string>Media.xcassets/iconapp.appiconset</string>
|
||||
|
||||
<!--
|
||||
Adjust this to your application's encryption usage.
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
-->
|
||||
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,15 @@
|
||||
using UIKit;
|
||||
|
||||
namespace FrontendPlatformUno.MacCatalyst
|
||||
{
|
||||
public class EntryPoint
|
||||
{
|
||||
// This is the main entry point of the application.
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
// if you want to use a different Application Delegate class from "AppDelegate"
|
||||
// you can specify it here.
|
||||
UIApplication.Main(args, null, typeof(AppHead));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
{
|
||||
"images": [
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "2x",
|
||||
"size": "640x960",
|
||||
"idiom": "iphone"
|
||||
},
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"subtype": "retina4",
|
||||
"scale": "2x",
|
||||
"size": "640x1136",
|
||||
"idiom": "iphone"
|
||||
},
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "1x",
|
||||
"size": "768x1024",
|
||||
"idiom": "ipad"
|
||||
},
|
||||
{
|
||||
"orientation": "landscape",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "1x",
|
||||
"size": "1024x768",
|
||||
"idiom": "ipad"
|
||||
},
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "2x",
|
||||
"size": "1536x2048",
|
||||
"idiom": "ipad"
|
||||
},
|
||||
{
|
||||
"orientation": "landscape",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "2x",
|
||||
"size": "2048x1536",
|
||||
"idiom": "ipad"
|
||||
}
|
||||
],
|
||||
"properties": {},
|
||||
"info": {
|
||||
"version": 1,
|
||||
"author": ""
|
||||
}
|
||||
}
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,51 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>UIDeviceFamily</key>
|
||||
<array>
|
||||
<integer>1</integer>
|
||||
<integer>2</integer>
|
||||
</array>
|
||||
<key>UILaunchStoryboardName</key>
|
||||
<string>LaunchScreen</string>
|
||||
<key>UIRequiredDeviceCapabilities</key>
|
||||
<array>
|
||||
<string>armv7</string>
|
||||
<string>arm64</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UISupportedInterfaceOrientations~ipad</key>
|
||||
<array>
|
||||
<string>UIInterfaceOrientationPortrait</string>
|
||||
<string>UIInterfaceOrientationPortraitUpsideDown</string>
|
||||
<string>UIInterfaceOrientationLandscapeLeft</string>
|
||||
<string>UIInterfaceOrientationLandscapeRight</string>
|
||||
</array>
|
||||
<key>UIViewControllerBasedStatusBarAppearance</key>
|
||||
<false/>
|
||||
<key>UILaunchImageMinimumOSVersion</key>
|
||||
<string>9.0</string>
|
||||
<key>UILaunchImageOrientation</key>
|
||||
<string>Portrait</string>
|
||||
<key>UILaunchImageSize</key>
|
||||
<string>{320, 568}</string>
|
||||
<key>XSAppIconAssets</key>
|
||||
<string>Media.xcassets/iconapp.appiconset</string>
|
||||
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||
<true/>
|
||||
|
||||
<!--
|
||||
Adjust this to your application's encryption usage.
|
||||
<key>ITSAppUsesNonExemptEncryption</key>
|
||||
<false/>
|
||||
-->
|
||||
</dict>
|
||||
</plist>
|
@ -0,0 +1,15 @@
|
||||
using UIKit;
|
||||
|
||||
namespace FrontendPlatformUno.iOS
|
||||
{
|
||||
public class EntryPoint
|
||||
{
|
||||
// This is the main entry point of the application.
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
// if you want to use a different Application Delegate class from "AppDelegate"
|
||||
// you can specify it here.
|
||||
UIApplication.Main(args, null, typeof(AppHead));
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,58 @@
|
||||
{
|
||||
"images": [
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "2x",
|
||||
"size": "640x960",
|
||||
"idiom": "iphone"
|
||||
},
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"subtype": "retina4",
|
||||
"scale": "2x",
|
||||
"size": "640x1136",
|
||||
"idiom": "iphone"
|
||||
},
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "1x",
|
||||
"size": "768x1024",
|
||||
"idiom": "ipad"
|
||||
},
|
||||
{
|
||||
"orientation": "landscape",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "1x",
|
||||
"size": "1024x768",
|
||||
"idiom": "ipad"
|
||||
},
|
||||
{
|
||||
"orientation": "portrait",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "2x",
|
||||
"size": "1536x2048",
|
||||
"idiom": "ipad"
|
||||
},
|
||||
{
|
||||
"orientation": "landscape",
|
||||
"extent": "full-screen",
|
||||
"minimum-system-version": "7.0",
|
||||
"scale": "2x",
|
||||
"size": "2048x1536",
|
||||
"idiom": "ipad"
|
||||
}
|
||||
],
|
||||
"properties": {},
|
||||
"info": {
|
||||
"version": 1,
|
||||
"author": ""
|
||||
}
|
||||
}
|
@ -0,0 +1,40 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType Condition="'$(Configuration)'=='Release'">WinExe</OutputType>
|
||||
<OutputType Condition="'$(Configuration)'=='Debug'">Exe</OutputType>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Package.appxmanifest" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.Resizetizer" Version="1.0.2" />
|
||||
<PackageReference Include="Uno.WinUI.Skia.Gtk" Version="4.8.24" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
|
||||
<PackageReference Include="Uno.Extensions.Configuration" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Logging.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Material.WinUI" Version="2.5.3" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI.Material" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Extensions.Authentication.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Hosting.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Localization.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.Toolkit.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
<PackageReference Include="SkiaSharp.Views.Uno.WinUI" Version="2.88.3" />
|
||||
<PackageReference Include="SkiaSharp.Skottie" Version="2.88.3" />
|
||||
<PackageReference Include="Uno.WinUI.RemoteControl" Version="4.8.24" Condition="'$(Configuration)'=='Debug'" />
|
||||
<PackageReference Include="Uno.UI.Adapter.Microsoft.Extensions.Logging" Version="4.8.24" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FrontendPlatformUno\FrontendPlatformUno.csproj" />
|
||||
<ProjectReference Include="..\FrontendPlatformUno.DataContracts\FrontendPlatformUno.DataContracts.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\FrontendPlatformUno.Base\base.props" />
|
||||
</Project>
|
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
|
||||
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ActiveDebugProfile>FrontendPlatformUno.Skia.Gtk</ActiveDebugProfile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Update="Package.appxmanifest">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Update="C:\Users\dbren\source\repos\FrontendPlatformUno\FrontendPlatformUno.Base\AppHead.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<Package
|
||||
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
|
||||
IgnorableNamespaces="uap rescap">
|
||||
|
||||
<Identity
|
||||
Name="AD86FCB5-C937-4374-872D-E0A1DF919E74"
|
||||
Publisher="O=FrontendPlatformUno"
|
||||
Version="1.0.0.0" />
|
||||
|
||||
<Properties>
|
||||
<DisplayName>FrontendPlatformUno</DisplayName>
|
||||
<PublisherDisplayName>FrontendPlatformUno</PublisherDisplayName>
|
||||
</Properties>
|
||||
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
|
||||
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
|
||||
</Dependencies>
|
||||
|
||||
<Resources>
|
||||
<Resource Language="x-generate"/>
|
||||
</Resources>
|
||||
|
||||
<Applications>
|
||||
<Application Id="App"
|
||||
Executable="$targetnametoken$.exe"
|
||||
EntryPoint="$targetentrypoint$">
|
||||
<uap:VisualElements
|
||||
DisplayName="FrontendPlatformUno"
|
||||
Description="FrontendPlatformUno">
|
||||
<uap:SplashScreen BackgroundColor="#086AD1"/>
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
|
||||
<Capabilities>
|
||||
<rescap:Capability Name="runFullTrust" />
|
||||
</Capabilities>
|
||||
</Package>
|
22
FrontendPlatformUno/FrontendPlatformUno.Skia.Gtk/Program.cs
Normal file
22
FrontendPlatformUno/FrontendPlatformUno.Skia.Gtk/Program.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using GLib;
|
||||
using System;
|
||||
using Uno.UI.Runtime.Skia;
|
||||
|
||||
namespace FrontendPlatformUno.Skia.Gtk
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
ExceptionManager.UnhandledException += delegate (UnhandledExceptionArgs expArgs)
|
||||
{
|
||||
Console.WriteLine("GLIB UNHANDLED EXCEPTION" + expArgs.ExceptionObject.ToString());
|
||||
expArgs.ExitApplication = true;
|
||||
};
|
||||
|
||||
var host = new GtkHost(() => new AppHead(), args);
|
||||
|
||||
host.Run();
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
{
|
||||
"profiles": {
|
||||
"FrontendPlatformUno.Skia.Gtk": {
|
||||
"commandName": "Project"
|
||||
},
|
||||
"WSL": {
|
||||
"commandName": "WSL2",
|
||||
"distributionName": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,77 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="FrontendPlatformUno.Gtk"/>
|
||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
|
||||
<security>
|
||||
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<!-- UAC Manifest Options
|
||||
If you want to change the Windows User Account Control level replace the
|
||||
requestedExecutionLevel node with one of the following.
|
||||
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
|
||||
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
|
||||
|
||||
Specifying requestedExecutionLevel element will disable file and registry virtualization.
|
||||
Remove this element if your application requires this virtualization for backwards
|
||||
compatibility.
|
||||
-->
|
||||
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
|
||||
</requestedPrivileges>
|
||||
</security>
|
||||
</trustInfo>
|
||||
|
||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||
<application>
|
||||
<!-- A list of the Windows versions that this application has been tested on
|
||||
and is designed to work with. Uncomment the appropriate elements
|
||||
and Windows will automatically select the most compatible environment. -->
|
||||
|
||||
<!-- Windows Vista -->
|
||||
<!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />-->
|
||||
|
||||
<!-- Windows 7 -->
|
||||
<!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />-->
|
||||
|
||||
<!-- Windows 8 -->
|
||||
<!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />-->
|
||||
|
||||
<!-- Windows 8.1 -->
|
||||
<!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />-->
|
||||
|
||||
<!-- Windows 10 -->
|
||||
<!--<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />-->
|
||||
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
|
||||
DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
|
||||
to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
|
||||
also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->
|
||||
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitor</dpiAwareness>
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
|
||||
|
||||
<!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
|
||||
<!--
|
||||
<dependency>
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity
|
||||
type="win32"
|
||||
name="Microsoft.Windows.Common-Controls"
|
||||
version="6.0.0.0"
|
||||
processorArchitecture="*"
|
||||
publicKeyToken="6595b64144ccf1df"
|
||||
language="*"
|
||||
/>
|
||||
</dependentAssembly>
|
||||
</dependency>
|
||||
-->
|
||||
|
||||
</assembly>
|
@ -0,0 +1,19 @@
|
||||
namespace FrontendPlatformUno.Tests
|
||||
{
|
||||
public class AppInfoTests
|
||||
{
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AppInfoCreation()
|
||||
{
|
||||
var appInfo = new AppConfig { Title = "Test" };
|
||||
|
||||
appInfo.Should().NotBeNull();
|
||||
appInfo.Title.Should().Be("Test");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<IsPackable>false</IsPackable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentAssertions" Version="6.10.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
|
||||
<PackageReference Include="coverlet.collector" Version="3.2.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FrontendPlatformUno\FrontendPlatformUno.csproj" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,3 @@
|
||||
global using FluentAssertions;
|
||||
global using FrontendPlatformUno.Business.Models;
|
||||
global using NUnit.Framework;
|
12
FrontendPlatformUno/FrontendPlatformUno.UITests/Constants.cs
Normal file
12
FrontendPlatformUno/FrontendPlatformUno.UITests/Constants.cs
Normal file
@ -0,0 +1,12 @@
|
||||
namespace FrontendPlatformUno.UITests
|
||||
{
|
||||
public class Constants
|
||||
{
|
||||
public readonly static string WebAssemblyDefaultUri = "http://localhost:5000/";
|
||||
public readonly static string iOSAppName = "FrontendPlatformUno";
|
||||
public readonly static string AndroidAppName = "FrontendPlatformUno";
|
||||
public readonly static string iOSDeviceNameOrId = "iPad Pro (12.9-inch) (3rd generation)";
|
||||
|
||||
public readonly static Platform CurrentPlatform = Platform.Browser;
|
||||
}
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net48</TargetFramework>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="FluentAssertions" Version="6.10.0" />
|
||||
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.5.0" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="NUnit" Version="3.13.3" />
|
||||
<PackageReference Include="NUnit3TestAdapter" Version="4.4.2" />
|
||||
<PackageReference Include="Uno.UITest.Helpers" Version="1.1.0-dev.32" />
|
||||
<PackageReference Include="Xamarin.UITest" Version="4.1.2" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,22 @@
|
||||
namespace FrontendPlatformUno.UITests
|
||||
{
|
||||
public class Given_MainPage : TestBase
|
||||
{
|
||||
[Test]
|
||||
public void When_SmokeTest()
|
||||
{
|
||||
// NOTICE
|
||||
// To run UITests, Run the WASM target without debugger. Note
|
||||
// the port that is being used and update the Constants.cs file
|
||||
// in the UITests project with the correct port number.
|
||||
|
||||
// Query for the SecondPageButton and then tap it
|
||||
Query xamlButton = q => q.All().Marked("SecondPageButton");
|
||||
App.WaitForElement(xamlButton);
|
||||
App.Tap(xamlButton);
|
||||
|
||||
// Take a screenshot and add it to the test results
|
||||
TakeScreenshot("After tapped");
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
|
||||
global using NUnit.Framework;
|
||||
global using Uno.UITest;
|
||||
global using Uno.UITest.Helpers.Queries;
|
||||
global using Uno.UITests.Helpers;
|
||||
global using Query = System.Func<Uno.UITest.IAppQuery, Uno.UITest.IAppQuery>;
|
||||
|
82
FrontendPlatformUno/FrontendPlatformUno.UITests/TestBase.cs
Normal file
82
FrontendPlatformUno/FrontendPlatformUno.UITests/TestBase.cs
Normal file
@ -0,0 +1,82 @@
|
||||
|
||||
namespace FrontendPlatformUno.UITests
|
||||
{
|
||||
public class TestBase
|
||||
{
|
||||
private IApp? _app;
|
||||
|
||||
static TestBase()
|
||||
{
|
||||
AppInitializer.TestEnvironment.AndroidAppName = Constants.AndroidAppName;
|
||||
AppInitializer.TestEnvironment.WebAssemblyDefaultUri = Constants.WebAssemblyDefaultUri;
|
||||
AppInitializer.TestEnvironment.iOSAppName = Constants.iOSAppName;
|
||||
AppInitializer.TestEnvironment.AndroidAppName = Constants.AndroidAppName;
|
||||
AppInitializer.TestEnvironment.iOSDeviceNameOrId = Constants.iOSDeviceNameOrId;
|
||||
AppInitializer.TestEnvironment.CurrentPlatform = Constants.CurrentPlatform;
|
||||
|
||||
#if DEBUG
|
||||
AppInitializer.TestEnvironment.WebAssemblyHeadless = false;
|
||||
#endif
|
||||
|
||||
// Start the app only once, so the tests runs don't restart it
|
||||
// and gain some time for the tests.
|
||||
AppInitializer.ColdStartApp();
|
||||
}
|
||||
|
||||
protected IApp App
|
||||
{
|
||||
get => _app!;
|
||||
private set
|
||||
{
|
||||
_app = value;
|
||||
Uno.UITest.Helpers.Queries.Helpers.App = value;
|
||||
}
|
||||
}
|
||||
|
||||
[SetUp]
|
||||
public void SetUpTest()
|
||||
{
|
||||
App = AppInitializer.AttachToApp();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDownTest()
|
||||
{
|
||||
TakeScreenshot("teardown");
|
||||
}
|
||||
|
||||
public FileInfo TakeScreenshot(string stepName)
|
||||
{
|
||||
var title = $"{TestContext.CurrentContext.Test.Name}_{stepName}"
|
||||
.Replace(" ", "_")
|
||||
.Replace(".", "_");
|
||||
|
||||
var fileInfo = App.Screenshot(title);
|
||||
|
||||
var fileNameWithoutExt = Path.GetFileNameWithoutExtension(fileInfo.Name);
|
||||
if (fileNameWithoutExt != title)
|
||||
{
|
||||
var destFileName = Path
|
||||
.Combine(Path.GetDirectoryName(fileInfo.FullName), title + Path.GetExtension(fileInfo.Name));
|
||||
|
||||
if (File.Exists(destFileName))
|
||||
{
|
||||
File.Delete(destFileName);
|
||||
}
|
||||
|
||||
File.Move(fileInfo.FullName, destFileName);
|
||||
|
||||
TestContext.AddTestAttachment(destFileName, stepName);
|
||||
|
||||
fileInfo = new FileInfo(destFileName);
|
||||
}
|
||||
else
|
||||
{
|
||||
TestContext.AddTestAttachment(fileInfo.FullName, stepName);
|
||||
}
|
||||
|
||||
return fileInfo;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,87 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net7.0</TargetFramework>
|
||||
<NoWarn>$(NoWarn);NU1504;NU1505;NU1701</NoWarn>
|
||||
<!-- Disabled due to issue with Central Package Management with implicit using -->
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<WasmPWAManifestFile>manifest.webmanifest</WasmPWAManifestFile>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
|
||||
<MonoRuntimeDebuggerEnabled>true</MonoRuntimeDebuggerEnabled>
|
||||
<DefineConstants>$(DefineConstants);TRACE;DEBUG</DefineConstants>
|
||||
<DebugType>portable</DebugType>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<!--
|
||||
IL Linking is disabled in Debug configuration.
|
||||
When building in Release, see https://platform.uno/docs/articles/features/using-il-linker-WebAssembly.html
|
||||
-->
|
||||
<WasmShellILLinkerEnabled>false</WasmShellILLinkerEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Release'">
|
||||
<!-- XAML Resource trimming https://aka.platform.uno/xaml-trimming -->
|
||||
<!--<UnoXamlResourcesTrimming>true</UnoXamlResourcesTrimming>-->
|
||||
<!-- Improve performance with AOT builds https://aka.platform.uno/wasm-aot -->
|
||||
<!-- <WasmShellMonoRuntimeExecutionMode>InterpreterAndAOT</WasmShellMonoRuntimeExecutionMode> -->
|
||||
<!-- Temporarily uncomment to generate an AOT profile https://aka.platform.uno/wasm-aot-profile -->
|
||||
<!-- <WasmShellGenerateAOTProfile>true</WasmShellGenerateAOTProfile> -->
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)'=='Debug' or '$(IsUiAutomationMappingEnabled)'=='True'">
|
||||
<IsUiAutomationMappingEnabled>True</IsUiAutomationMappingEnabled>
|
||||
<DefineConstants>$(DefineConstants);USE_UITESTS</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="manifest.webmanifest" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="WasmCSS\Fonts.css" />
|
||||
<EmbeddedResource Include="WasmScripts\AppManifest.js" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<LinkerDescriptor Include="LinkerConfig.xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<!--
|
||||
This item group is required by the project template because of the
|
||||
new SDK-Style project, otherwise some files are not added automatically.
|
||||
|
||||
You can safely remove this ItemGroup completely.
|
||||
-->
|
||||
<None Include="Program.cs" />
|
||||
<None Include="LinkerConfig.xml" />
|
||||
<None Include="wwwroot\web.config" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.Resizetizer" Version="1.0.2" />
|
||||
<PackageReference Include="Microsoft.Windows.Compatibility" Version="7.0.0" />
|
||||
<PackageReference Include="Uno.Wasm.Bootstrap" Version="7.0.19" />
|
||||
<PackageReference Include="Uno.Wasm.Bootstrap.DevServer" Version="7.0.19" />
|
||||
<PackageReference Include="Uno.WinUI.WebAssembly" Version="4.8.24" />
|
||||
<PackageReference Include="Uno.WinUI.RemoteControl" Version="4.8.24" Condition="'$(Configuration)'=='Debug'" />
|
||||
<PackageReference Include="Uno.UI.Adapter.Microsoft.Extensions.Logging" Version="4.8.24" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
|
||||
<PackageReference Include="Uno.Extensions.Configuration" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Logging.WebAssembly.Console" Version="1.4.0" />
|
||||
<PackageReference Include="Uno.Extensions.Logging.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Material.WinUI" Version="2.5.3" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI.Material" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Extensions.Authentication.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Hosting.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Localization.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.Toolkit.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FrontendPlatformUno\FrontendPlatformUno.csproj" />
|
||||
<ProjectReference Include="..\FrontendPlatformUno.DataContracts\FrontendPlatformUno.DataContracts.csproj" />
|
||||
</ItemGroup>
|
||||
<Import Project="..\FrontendPlatformUno.Base\base.props" />
|
||||
</Project>
|
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
<ItemGroup>
|
||||
<None Update="C:\Users\dbren\source\repos\FrontendPlatformUno\FrontendPlatformUno.Base\AppHead.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,11 @@
|
||||
<linker>
|
||||
<assembly fullname="FrontendPlatformUno" />
|
||||
<assembly fullname="FrontendPlatformUno.Wasm" />
|
||||
|
||||
<!--
|
||||
Uncomment this section when using JSON.NET
|
||||
<assembly fullname="System.Core">
|
||||
<type fullname="System.Linq.Expressions*" />
|
||||
</assembly>
|
||||
-->
|
||||
</linker>
|
14
FrontendPlatformUno/FrontendPlatformUno.Wasm/Program.cs
Normal file
14
FrontendPlatformUno/FrontendPlatformUno.Wasm/Program.cs
Normal file
@ -0,0 +1,14 @@
|
||||
namespace FrontendPlatformUno.Wasm
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
private static App? _app;
|
||||
|
||||
public static int Main(string[] args)
|
||||
{
|
||||
Microsoft.UI.Xaml.Application.Start(_ => _app = new AppHead());
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
{
|
||||
"iisSettings": {
|
||||
"windowsAuthentication": false,
|
||||
"anonymousAuthentication": true,
|
||||
"iisExpress": {
|
||||
"applicationUrl": "http://localhost:8080",
|
||||
"sslPort": 0
|
||||
}
|
||||
},
|
||||
"profiles": {
|
||||
"FrontendPlatformUno.Wasm": {
|
||||
"commandName": "Project",
|
||||
"dotnetRunMessages": true,
|
||||
"launchBrowser": true,
|
||||
"applicationUrl": "http://localhost:5000",
|
||||
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
},
|
||||
"IIS Express": {
|
||||
"commandName": "IISExpress",
|
||||
"launchBrowser": true,
|
||||
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
|
||||
"environmentVariables": {
|
||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
/**
|
||||
When adding fonts here, make sure to add them using a base64 data uri, otherwise
|
||||
fonts loading are delayed, and text may get displayed incorrectly.
|
||||
*/
|
||||
|
||||
/* https://github.com/unoplatform/uno/issues/3954 */
|
||||
@font-face {
|
||||
font-family: 'Segoe UI';
|
||||
src: local('system-ui'), local('Segoe UI'), local('-apple-system'), local('BlinkMacSystemFont'), local('Inter'), local('Cantarell'), local('Ubuntu'), local('Roboto'), local('Open Sans'), local('Noto Sans'), local('Helvetica Neue'), local('sans-serif');
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url(./Uno.Fonts.Roboto/Fonts/Roboto-Light.ttf) format('truetype');
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url(./Uno.Fonts.Roboto/Fonts/Roboto-Regular.ttf) format('truetype');
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: 'Roboto';
|
||||
src: url(./Uno.Fonts.Roboto/Fonts/Roboto-Medium.ttf) format('truetype');
|
||||
font-weight: 500;
|
||||
}
|
@ -0,0 +1,3 @@
|
||||
var UnoAppManifest = {
|
||||
displayName: "FrontendPlatformUno"
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
{
|
||||
"background_color": "#ffffff",
|
||||
"description": "FrontendPlatformUno",
|
||||
"display": "standalone",
|
||||
"name": "FrontendPlatformUno",
|
||||
"short_name": "FrontendPlatformUno",
|
||||
"start_url": "/index.html",
|
||||
"theme_color": "#ffffff",
|
||||
"scope": "/"
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
{
|
||||
"navigationFallback": {
|
||||
"rewrite": "/index.html",
|
||||
"exclude": [
|
||||
"*.{css,js}",
|
||||
"*.{png}",
|
||||
"*.{c,h,wasm,clr,pdb,dat,txt}"
|
||||
]
|
||||
},
|
||||
"routes": [
|
||||
{
|
||||
"route": "/package_*",
|
||||
"headers": {
|
||||
"cache-control": "public, immutable, max-age=31536000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"route": "/*.ttf",
|
||||
"headers": {
|
||||
"cache-control": "public, immutable, max-age=31536000"
|
||||
}
|
||||
},
|
||||
{
|
||||
"route": "/*",
|
||||
"headers": {
|
||||
"cache-control": "must-revalidate, max-age=3600"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
@ -0,0 +1,78 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<system.web>
|
||||
<customErrors mode="Off"/>
|
||||
</system.web>
|
||||
|
||||
<system.webServer>
|
||||
|
||||
<!-- Disable compression as we're doing it through pre-compressed files -->
|
||||
<urlCompression doStaticCompression="false" doDynamicCompression="false" dynamicCompressionBeforeCache="false" />
|
||||
|
||||
<staticContent>
|
||||
<remove fileExtension=".dll" />
|
||||
<remove fileExtension=".wasm" />
|
||||
<remove fileExtension=".woff" />
|
||||
<remove fileExtension=".woff2" />
|
||||
<mimeMap fileExtension=".wasm" mimeType="application/wasm" />
|
||||
<mimeMap fileExtension=".clr" mimeType="application/octet-stream" />
|
||||
<mimeMap fileExtension=".pdb" mimeType="application/octet-stream" />
|
||||
<mimeMap fileExtension=".woff" mimeType="application/font-woff" />
|
||||
<mimeMap fileExtension=".woff2" mimeType="application/font-woff" />
|
||||
<mimeMap fileExtension=".dat" mimeType="application/octet-stream" />
|
||||
<!-- Required for PWAs -->
|
||||
<mimeMap fileExtension=".json" mimeType="application/octet-stream" />
|
||||
</staticContent>
|
||||
|
||||
<rewrite>
|
||||
<rules>
|
||||
<rule name="Lookup for pre-compressed brotli file" stopProcessing="true">
|
||||
<match url="(.*)$"/>
|
||||
<conditions>
|
||||
<!-- Match brotli requests -->
|
||||
<add input="{HTTP_ACCEPT_ENCODING}" pattern="br" />
|
||||
|
||||
<!-- Match all but pre-compressed files -->
|
||||
<add input="{REQUEST_URI}" pattern="^(?!/_compressed_br/)(.*)$" />
|
||||
|
||||
<!-- Check if the pre-compressed file exists on the disk -->
|
||||
<add input="{DOCUMENT_ROOT}/_compressed_br/{C:0}" matchType="IsFile" negate="false" />
|
||||
</conditions>
|
||||
<action type="Rewrite" url="/_compressed_br{C:0}" />
|
||||
</rule>
|
||||
|
||||
<rule name="Lookup for pre-compressed gzip file" stopProcessing="true">
|
||||
<match url="(.*)$"/>
|
||||
<conditions>
|
||||
<!-- Match gzip requests -->
|
||||
<add input="{HTTP_ACCEPT_ENCODING}" pattern="gzip" />
|
||||
|
||||
<!-- Match all but pre-compressed files -->
|
||||
<add input="{REQUEST_URI}" pattern="^(?!/_compressed_gz/)(.*)$" />
|
||||
|
||||
<!-- Check if the pre-compressed file exists on the disk -->
|
||||
<add input="{DOCUMENT_ROOT}/_compressed_gz/{C:0}" matchType="IsFile" negate="false" />
|
||||
</conditions>
|
||||
<action type="Rewrite" url="/_compressed_gz{C:0}" />
|
||||
</rule>
|
||||
</rules>
|
||||
|
||||
<outboundRules>
|
||||
<rule name="Adjust content encoding for gzip pre-compressed files" enabled="true" stopProcessing="true">
|
||||
<match serverVariable="RESPONSE_CONTENT_ENCODING" pattern="" />
|
||||
<conditions>
|
||||
<add input="{REQUEST_URI}" pattern="/_compressed_gz/.*$" />
|
||||
</conditions>
|
||||
<action type="Rewrite" value="gzip"/>
|
||||
</rule>
|
||||
<rule name="Adjust content encoding for brotli pre-compressed files" enabled="true" stopProcessing="true">
|
||||
<match serverVariable="RESPONSE_CONTENT_ENCODING" pattern="" />
|
||||
<conditions>
|
||||
<add input="{REQUEST_URI}" pattern="/_compressed_br/.*$" />
|
||||
</conditions>
|
||||
<action type="Rewrite" value="br"/>
|
||||
</rule>
|
||||
</outboundRules>
|
||||
</rewrite>
|
||||
</system.webServer>
|
||||
</configuration>
|
@ -0,0 +1,71 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<TargetFramework>net7.0-windows10.0.19041.0</TargetFramework>
|
||||
<TargetPlatformMinVersion>10.0.18362.0</TargetPlatformMinVersion>
|
||||
<RootNamespace>UnoWinUIQuickStart</RootNamespace>
|
||||
<Platforms>x86;x64;arm64</Platforms>
|
||||
<RuntimeIdentifiers>win10-x86;win10-x64;win10-arm64</RuntimeIdentifiers>
|
||||
<PublishProfile>win10-$(Platform).pubxml</PublishProfile>
|
||||
<UseWinUI>true</UseWinUI>
|
||||
<EnableMsixTooling>true</EnableMsixTooling>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<!-- Bundles the WinAppSDK binaries (Uncomment for unpackaged builds) -->
|
||||
<!-- <WindowsAppSDKSelfContained>true</WindowsAppSDKSelfContained> -->
|
||||
<!-- This bundles the .NET Core libraries (Uncomment for packaged builds) -->
|
||||
<SelfContained>true</SelfContained>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Content Include="Images\**" />
|
||||
<Manifest Include="$(ApplicationManifest)" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.Resizetizer" Version="1.0.2" />
|
||||
<PackageReference Include="Uno.WinUI" Version="4.8.24" />
|
||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.2.230313.1" />
|
||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.755" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
|
||||
<PackageReference Include="Uno.Extensions.Configuration" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Logging.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Material.WinUI" Version="2.5.3" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI.Material" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Extensions.Authentication.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Hosting.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Localization.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.Toolkit.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
<PackageReference Include="Uno.Core.Extensions.Logging.Singleton" Version="4.0.1" />
|
||||
<PackageReference Include="Uno.UI.Adapter.Microsoft.Extensions.Logging" Version="4.8.24" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!--
|
||||
If you encounter this error message:
|
||||
|
||||
error NETSDK1148: A referenced assembly was compiled using a newer version of Microsoft.Windows.SDK.NET.dll.
|
||||
Please update to a newer .NET SDK in order to reference this assembly.
|
||||
|
||||
This means that the two packages below must be aligned with the "build" version number of
|
||||
the "Microsoft.Windows.SDK.BuildTools" package above, and the "revision" version number
|
||||
must be the highest found in https://www.nuget.org/packages/Microsoft.Windows.SDK.NET.Ref.
|
||||
-->
|
||||
<!-- <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" RuntimeFrameworkVersion="10.0.22621.28" />
|
||||
<FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.22621.28" /> -->
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FrontendPlatformUno\FrontendPlatformUno.csproj" />
|
||||
<ProjectReference Include="..\FrontendPlatformUno.DataContracts\FrontendPlatformUno.DataContracts.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<Import Project="..\FrontendPlatformUno.Base\base.props" />
|
||||
</Project>
|
@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x86'">
|
||||
<DebuggerFlavor>ProjectDebugger</DebuggerFlavor>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ActiveDebugProfile>FrontendPlatformUno.Windows (Package)</ActiveDebugProfile>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<None Update="C:\Users\dbren\source\repos\FrontendPlatformUno\FrontendPlatformUno.Base\AppHead.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
<None Update="Package.appxmanifest">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,43 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
|
||||
<Package
|
||||
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
|
||||
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
|
||||
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
|
||||
IgnorableNamespaces="uap rescap">
|
||||
|
||||
<Identity
|
||||
Name="AD86FCB5-C937-4374-872D-E0A1DF919E74"
|
||||
Publisher="O=FrontendPlatformUno"
|
||||
Version="1.0.0.0" />
|
||||
|
||||
<Properties>
|
||||
<DisplayName>FrontendPlatformUno</DisplayName>
|
||||
<PublisherDisplayName>FrontendPlatformUno</PublisherDisplayName>
|
||||
</Properties>
|
||||
|
||||
<Dependencies>
|
||||
<TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
|
||||
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17763.0" MaxVersionTested="10.0.19041.0" />
|
||||
</Dependencies>
|
||||
|
||||
<Resources>
|
||||
<Resource Language="x-generate"/>
|
||||
</Resources>
|
||||
|
||||
<Applications>
|
||||
<Application Id="App"
|
||||
Executable="$targetnametoken$.exe"
|
||||
EntryPoint="$targetentrypoint$">
|
||||
<uap:VisualElements
|
||||
DisplayName="FrontendPlatformUno"
|
||||
Description="FrontendPlatformUno">
|
||||
<uap:SplashScreen BackgroundColor="#086AD1"/>
|
||||
</uap:VisualElements>
|
||||
</Application>
|
||||
</Applications>
|
||||
|
||||
<Capabilities>
|
||||
<rescap:Capability Name="runFullTrust" />
|
||||
</Capabilities>
|
||||
</Package>
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishProtocol>FileSystem</PublishProtocol>
|
||||
<Platform>arm64</Platform>
|
||||
<RuntimeIdentifier>win10-arm64</RuntimeIdentifier>
|
||||
<PublishDir>bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\</PublishDir>
|
||||
<SelfContained>true</SelfContained>
|
||||
<PublishSingleFile>False</PublishSingleFile>
|
||||
<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>
|
||||
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
|
||||
<!--
|
||||
See https://github.com/microsoft/CsWinRT/issues/373
|
||||
<PublishTrimmed>True</PublishTrimmed>
|
||||
-->
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishProtocol>FileSystem</PublishProtocol>
|
||||
<Platform>x64</Platform>
|
||||
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
|
||||
<PublishDir>bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\</PublishDir>
|
||||
<SelfContained>true</SelfContained>
|
||||
<PublishSingleFile>False</PublishSingleFile>
|
||||
<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>
|
||||
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
|
||||
<!--
|
||||
See https://github.com/microsoft/CsWinRT/issues/373
|
||||
<PublishTrimmed>True</PublishTrimmed>
|
||||
-->
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
https://go.microsoft.com/fwlink/?LinkID=208121.
|
||||
-->
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishProtocol>FileSystem</PublishProtocol>
|
||||
<Platform>x86</Platform>
|
||||
<RuntimeIdentifier>win10-x86</RuntimeIdentifier>
|
||||
<PublishDir>bin\$(Configuration)\$(TargetFramework)\$(RuntimeIdentifier)\publish\</PublishDir>
|
||||
<SelfContained>true</SelfContained>
|
||||
<PublishSingleFile>False</PublishSingleFile>
|
||||
<PublishReadyToRun Condition="'$(Configuration)' == 'Debug'">False</PublishReadyToRun>
|
||||
<PublishReadyToRun Condition="'$(Configuration)' != 'Debug'">True</PublishReadyToRun>
|
||||
<!--
|
||||
See https://github.com/microsoft/CsWinRT/issues/373
|
||||
<PublishTrimmed>True</PublishTrimmed>
|
||||
-->
|
||||
</PropertyGroup>
|
||||
</Project>
|
@ -0,0 +1,14 @@
|
||||
{
|
||||
"profiles": {
|
||||
"FrontendPlatformUno.Windows (Package)": {
|
||||
"commandName": "MsixPackage"
|
||||
},
|
||||
"FrontendPlatformUno.Windows (Unpackaged)": {
|
||||
"commandName": "Project"
|
||||
},
|
||||
"WSL": {
|
||||
"commandName": "WSL2",
|
||||
"distributionName": ""
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Placeholder" xml:space="preserve">
|
||||
<value>Hello World!</value>
|
||||
</data>
|
||||
</root>
|
15
FrontendPlatformUno/FrontendPlatformUno.Windows/app.manifest
Normal file
15
FrontendPlatformUno/FrontendPlatformUno.Windows/app.manifest
Normal file
@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<assemblyIdentity version="1.0.0.0" name="FrontendPlatformUno.Windows.app"/>
|
||||
|
||||
<application xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||
<windowsSettings>
|
||||
<!-- The combination of below two tags have the following effect:
|
||||
1) Per-Monitor for >= Windows 10 Anniversary Update
|
||||
2) System < Windows 10 Anniversary Update
|
||||
-->
|
||||
<dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true/PM</dpiAware>
|
||||
<dpiAwareness xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">PerMonitorV2, PerMonitor</dpiAwareness>
|
||||
</windowsSettings>
|
||||
</application>
|
||||
</assembly>
|
197
FrontendPlatformUno/FrontendPlatformUno.sln
Normal file
197
FrontendPlatformUno/FrontendPlatformUno.sln
Normal file
@ -0,0 +1,197 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.5.33530.505
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FrontendPlatformUno", "FrontendPlatformUno\FrontendPlatformUno.csproj", "{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FrontendPlatformUno.DataContracts", "FrontendPlatformUno.DataContracts\FrontendPlatformUno.DataContracts.csproj", "{8446AD3A-4C7C-4629-8984-52F43F8B9178}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Tests", "Tests", "{89579FA1-0AE2-41A0-A80E-AD3AD832BBA5}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendPlatformUno.Tests", "FrontendPlatformUno.Tests\FrontendPlatformUno.Tests.csproj", "{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendPlatformUno.UITests", "FrontendPlatformUno.UITests\FrontendPlatformUno.UITests.csproj", "{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Platforms", "Platforms", "{988663B1-F899-4E04-B90E-378BCA7E0381}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendPlatformUno.Mobile", "FrontendPlatformUno.Mobile\FrontendPlatformUno.Mobile.csproj", "{322F2A22-7942-4296-8B22-3D179427567F}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendPlatformUno.Windows", "FrontendPlatformUno.Windows\FrontendPlatformUno.Windows.csproj", "{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendPlatformUno.Wasm", "FrontendPlatformUno.Wasm\FrontendPlatformUno.Wasm.csproj", "{1625FA66-39ED-4D92-922D-4691875EB3AB}"
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "FrontendPlatformUno.Skia.Gtk", "FrontendPlatformUno.Skia.Gtk\FrontendPlatformUno.Skia.Gtk.csproj", "{CE25F000-2537-4B18-8843-2E2525D5B0EB}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|arm64 = Debug|arm64
|
||||
Debug|x64 = Debug|x64
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|arm64 = Release|arm64
|
||||
Release|x64 = Release|x64
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|x64.Build.0 = Release|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{A18C4E9D-BA82-489A-BCE0-5803DB2404F6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|x64.Build.0 = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{8446AD3A-4C7C-4629-8984-52F43F8B9178}.Release|x86.Build.0 = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|x64.Build.0 = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4}.Release|x86.Build.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|Any CPU.Deploy.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|arm64.Deploy.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|x64.Deploy.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Debug|x86.Deploy.0 = Debug|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|Any CPU.Deploy.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|arm64.Deploy.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|x64.Build.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|x64.Deploy.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|x86.Build.0 = Release|Any CPU
|
||||
{322F2A22-7942-4296-8B22-3D179427567F}.Release|x86.Deploy.0 = Release|Any CPU
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|Any CPU.Deploy.0 = Debug|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|arm64.ActiveCfg = Debug|arm64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|arm64.Build.0 = Debug|arm64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|arm64.Deploy.0 = Debug|arm64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|x64.Build.0 = Debug|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|x64.Deploy.0 = Debug|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|x86.Build.0 = Debug|x86
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Debug|x86.Deploy.0 = Debug|x86
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|Any CPU.Build.0 = Release|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|Any CPU.Deploy.0 = Release|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|arm64.ActiveCfg = Release|arm64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|arm64.Build.0 = Release|arm64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|arm64.Deploy.0 = Release|arm64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|x64.ActiveCfg = Release|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|x64.Build.0 = Release|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|x64.Deploy.0 = Release|x64
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|x86.ActiveCfg = Release|x86
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|x86.Build.0 = Release|x86
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12}.Release|x86.Deploy.0 = Release|x86
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|x64.Build.0 = Release|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|arm64.ActiveCfg = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|arm64.Build.0 = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|arm64.ActiveCfg = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|arm64.Build.0 = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|x64.Build.0 = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{975E02A5-C0FA-4C3B-AC28-6DA3A5B36D8D} = {89579FA1-0AE2-41A0-A80E-AD3AD832BBA5}
|
||||
{1871B43C-0418-4238-A33F-CB6EE5A4A5B4} = {89579FA1-0AE2-41A0-A80E-AD3AD832BBA5}
|
||||
{322F2A22-7942-4296-8B22-3D179427567F} = {988663B1-F899-4E04-B90E-378BCA7E0381}
|
||||
{EC1830E3-BE5E-4635-96EE-6FB0CBA07F12} = {988663B1-F899-4E04-B90E-378BCA7E0381}
|
||||
{1625FA66-39ED-4D92-922D-4691875EB3AB} = {988663B1-F899-4E04-B90E-378BCA7E0381}
|
||||
{CE25F000-2537-4B18-8843-2E2525D5B0EB} = {988663B1-F899-4E04-B90E-378BCA7E0381}
|
||||
EndGlobalSection
|
||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||
SolutionGuid = {449A5316-85EA-4314-949C-30DB95B686F0}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
88
FrontendPlatformUno/FrontendPlatformUno/App.cs
Normal file
88
FrontendPlatformUno/FrontendPlatformUno/App.cs
Normal file
@ -0,0 +1,88 @@
|
||||
using FrontendPlatformUno.Views;
|
||||
using FrontendPlatformUno.ViewModels;
|
||||
|
||||
namespace FrontendPlatformUno
|
||||
{
|
||||
public class App : Application
|
||||
{
|
||||
private static Window? _window;
|
||||
public static IHost? Host { get; private set; }
|
||||
|
||||
protected async override void OnLaunched(LaunchActivatedEventArgs args)
|
||||
{
|
||||
var builder = this.CreateBuilder(args)
|
||||
|
||||
// Add navigation support for toolkit controls such as TabBar and NavigationView
|
||||
.UseToolkitNavigation()
|
||||
.Configure(host => host
|
||||
#if DEBUG
|
||||
// Switch to Development environment when running in DEBUG
|
||||
.UseEnvironment(Environments.Development)
|
||||
#endif
|
||||
.UseLogging(configure: (context, logBuilder) =>
|
||||
{
|
||||
// Configure log levels for different categories of logging
|
||||
logBuilder.SetMinimumLevel(
|
||||
context.HostingEnvironment.IsDevelopment() ?
|
||||
LogLevel.Information :
|
||||
LogLevel.Warning);
|
||||
}, enableUnoLogging: true)
|
||||
.UseConfiguration(configure: configBuilder =>
|
||||
configBuilder
|
||||
.EmbeddedSource<App>()
|
||||
.Section<AppConfig>()
|
||||
)
|
||||
// Enable localization (see appsettings.json for supported languages)
|
||||
.UseLocalization()
|
||||
// Register Json serializers (ISerializer and ISerializer)
|
||||
.UseSerialization((context, services) => services
|
||||
.AddContentSerializer(context)
|
||||
.AddJsonTypeInfo(WeatherForecastContext.Default.IImmutableListWeatherForecast))
|
||||
.UseHttp((context, services) => services
|
||||
// Register HttpClient
|
||||
#if DEBUG
|
||||
// DelegatingHandler will be automatically injected into Refit Client
|
||||
.AddTransient<DelegatingHandler, DebugHttpHandler>()
|
||||
#endif
|
||||
.AddSingleton<IWeatherCache, WeatherCache>()
|
||||
.AddRefitClient<IApiClient>(context))
|
||||
.ConfigureServices((context, services) =>
|
||||
{
|
||||
// TODO: Register your services
|
||||
//services.AddSingleton<IMyService, MyService>();
|
||||
//services.AddSingleton<NavBarViewModel>();
|
||||
})
|
||||
.UseNavigation(RegisterRoutes)
|
||||
);
|
||||
_window = builder.Window;
|
||||
|
||||
UnhandledException += (sender, e) =>
|
||||
{
|
||||
Console.WriteLine(e.ToString());
|
||||
};
|
||||
|
||||
Host = await builder.NavigateAsync<Shell>();
|
||||
}
|
||||
|
||||
private static void RegisterRoutes(IViewRegistry views, IRouteRegistry routes)
|
||||
{
|
||||
views.Register(
|
||||
new ViewMap(ViewModel: typeof(ShellViewModel)),
|
||||
//new ViewMap<MainPage, MainViewModel>(),
|
||||
//new DataViewMap<SecondPage, SecondViewModel, Entity>(),
|
||||
new ViewMap<GamenightsPage, GamenightsViewModel>(),
|
||||
new ViewMap<LoginPage, LoginViewModel>()
|
||||
);
|
||||
|
||||
routes.Register(
|
||||
new RouteMap("", View: views.FindByViewModel<ShellViewModel>(),
|
||||
Nested: new RouteMap[]
|
||||
{
|
||||
new RouteMap("Gamenights", View: views.FindByViewModel<GamenightsViewModel>()),
|
||||
new RouteMap("Login", View: views.FindByViewModel<LoginViewModel>()),
|
||||
}
|
||||
)
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
14
FrontendPlatformUno/FrontendPlatformUno/AppResources.xaml
Normal file
14
FrontendPlatformUno/FrontendPlatformUno/AppResources.xaml
Normal file
@ -0,0 +1,14 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<ResourceDictionary.MergedDictionaries>
|
||||
<!-- Load WinUI resources -->
|
||||
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
||||
<MaterialToolkitTheme xmlns="using:Uno.Toolkit.UI.Material"
|
||||
ColorOverrideSource="ms-appx:///FrontendPlatformUno/Styles/ColorPaletteOverride.xaml"
|
||||
FontOverrideSource="ms-appx:///FrontendPlatformUno/Styles/MaterialFontsOverride.xaml" />
|
||||
|
||||
</ResourceDictionary.MergedDictionaries>
|
||||
<!-- Add resources here -->
|
||||
|
||||
</ResourceDictionary>
|
@ -0,0 +1,3 @@
|
||||
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M16 7H3.83L9.42 1.41L8 0L0 8L8 16L9.41 14.59L3.83 9H16V7Z" fill="#1C1B1F"/>
|
||||
</svg>
|
After Width: | Height: | Size: 188 B |
@ -0,0 +1,34 @@
|
||||
See documentation about assets here : https://github.com/unoplatform/uno/blob/master/doc/articles/features/working-with-assets.md
|
||||
|
||||
# Here is a cheat sheet:
|
||||
|
||||
1. Add the image file to the `Assets` directory of a shared project.
|
||||
2. Set the build action to `Content`.
|
||||
3. (Recommended) Provide an asset for various scales/dpi
|
||||
|
||||
## Examples
|
||||
|
||||
```
|
||||
\Assets\Images\logo.scale-100.png
|
||||
\Assets\Images\logo.scale-200.png
|
||||
\Assets\Images\logo.scale-400.png
|
||||
|
||||
\Assets\Images\scale-100\logo.png
|
||||
\Assets\Images\scale-200\logo.png
|
||||
\Assets\Images\scale-400\logo.png
|
||||
```
|
||||
|
||||
## Table of scales
|
||||
|
||||
| Scale | UWP | iOS | Android |
|
||||
|-------|:-----------:|:--------:|:-------:|
|
||||
| `100` | scale-100 | @1x | mdpi |
|
||||
| `125` | scale-125 | N/A | N/A |
|
||||
| `150` | scale-150 | N/A | hdpi |
|
||||
| `200` | scale-200 | @2x | xhdpi |
|
||||
| `300` | scale-300 | @3x | xxhdpi |
|
||||
| `400` | scale-400 | N/A | xxxhdpi |
|
||||
|
||||
|
||||
|
||||
|
@ -0,0 +1,8 @@
|
||||
|
||||
namespace FrontendPlatformUno.Business.Models
|
||||
{
|
||||
public record AppConfig
|
||||
{
|
||||
public string? Title { get; init; }
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
|
||||
namespace FrontendPlatformUno.Business.Models
|
||||
{
|
||||
public record Entity(string Name);
|
||||
}
|
@ -0,0 +1,92 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
<PropertyGroup>
|
||||
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) or '$(EnableWindowsTargeting)' == 'true'">$(TargetFrameworks);net7.0-windows10.0.19041</TargetFrameworks>
|
||||
<TargetFrameworks>$(TargetFrameworks);net7.0;net7.0-ios;net7.0-android;net7.0-maccatalyst</TargetFrameworks>
|
||||
|
||||
<!-- Ensures the .xr.xml files are generated in a proper layout folder -->
|
||||
<GenerateLibraryLayout>true</GenerateLibraryLayout>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Uno.Dsp.Tasks" Version="1.0.1" />
|
||||
<PackageReference Include="Uno.WinUI" Version="4.8.24" />
|
||||
<PackageReference Include="Uno.Resizetizer" Version="1.0.2" />
|
||||
<PackageReference Include="CommunityToolkit.Mvvm" Version="8.1.0" />
|
||||
<PackageReference Include="Uno.Extensions.Configuration" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Http.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Logging.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Http" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Serialization.Refit" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Material.WinUI" Version="2.5.3" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI.Material" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Toolkit.WinUI" Version="2.5.5" />
|
||||
<PackageReference Include="Uno.Extensions.Authentication.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Hosting.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Localization.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.Toolkit.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Uno.Extensions.Navigation.WinUI" Version="2.3.6" />
|
||||
<PackageReference Include="Microsoft.Extensions.Logging.Console" Version="7.0.0" />
|
||||
</ItemGroup>
|
||||
|
||||
<Choose>
|
||||
<When Condition="$(IsWinAppSdk)">
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.WindowsAppSDK" Version="1.2.230313.1" />
|
||||
<PackageReference Include="Microsoft.Windows.SDK.BuildTools" Version="10.0.22621.755" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<!--
|
||||
If you encounter this error message:
|
||||
|
||||
error NETSDK1148: A referenced assembly was compiled using a newer version of Microsoft.Windows.SDK.NET.dll.
|
||||
Please update to a newer .NET SDK in order to reference this assembly.
|
||||
|
||||
This means that the two packages below must be aligned with the "build" version number of
|
||||
the "Microsoft.Windows.SDK.BuildTools" package above, and the "revision" version number
|
||||
must be the highest found in https://www.nuget.org/packages/Microsoft.Windows.SDK.NET.Ref.
|
||||
-->
|
||||
<!-- <FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" RuntimeFrameworkVersion="10.0.22621.28" />
|
||||
<FrameworkReference Update="Microsoft.Windows.SDK.NET.Ref" TargetingPackVersion="10.0.22621.28" /> -->
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<ItemGroup>
|
||||
<Content Include="Assets\**" />
|
||||
<Page Include="**\*.xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
|
||||
<Compile Update="**\*.xaml.cs">
|
||||
<DependentUpon>%(Filename)</DependentUpon>
|
||||
</Compile>
|
||||
<PRIResource Include="**\*.resw" />
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\FrontendPlatformUno.DataContracts\FrontendPlatformUno.DataContracts.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<UnoDspImportColors Include="Styles\*.zip" Generator="Xaml" />
|
||||
<UnoImage Include="Assets\**\*.svg" />
|
||||
<EmbeddedResource Include="appsettings.json" />
|
||||
<EmbeddedResource Include="appsettings.*.json" DependentUpon="appsettings.json" />
|
||||
<UpToDateCheckInput Include="**\*.xaml" Exclude="bin\**\*.xaml;obj\**\*.xaml" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<None Remove="Styles\ColorPaletteOverride.zip" />
|
||||
<None Remove="Views\GamenightsPage.xaml" />
|
||||
<None Remove="Views\LoginPage.xaml" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<UnoDspImportColors Remove="Styles\ColorPaletteOverride.zip" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<UpToDateCheckInput Remove="Views\GamenightsPage.xaml" />
|
||||
<UpToDateCheckInput Remove="Views\LoginPage.xaml" />
|
||||
</ItemGroup>
|
||||
</Project>
|
@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup />
|
||||
<ItemGroup>
|
||||
<Page Update="Views\GamenightsPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Page Update="Views\LoginPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
</Project>
|
33
FrontendPlatformUno/FrontendPlatformUno/GlobalUsings.cs
Normal file
33
FrontendPlatformUno/FrontendPlatformUno/GlobalUsings.cs
Normal file
@ -0,0 +1,33 @@
|
||||
global using FrontendPlatformUno.Business.Models;
|
||||
global using FrontendPlatformUno.DataContracts;
|
||||
global using FrontendPlatformUno.DataContracts.Serialization;
|
||||
global using FrontendPlatformUno.Infrastructure;
|
||||
global using FrontendPlatformUno.Services.Caching;
|
||||
global using FrontendPlatformUno.Services.Endpoints;
|
||||
global using Microsoft.Extensions.DependencyInjection;
|
||||
global using Microsoft.Extensions.Hosting;
|
||||
global using Microsoft.Extensions.Localization;
|
||||
global using Microsoft.Extensions.Logging;
|
||||
global using Microsoft.Extensions.Options;
|
||||
global using Microsoft.UI.Xaml;
|
||||
global using Microsoft.UI.Xaml.Controls;
|
||||
global using Microsoft.UI.Xaml.Media;
|
||||
global using Microsoft.UI.Xaml.Navigation;
|
||||
global using Refit;
|
||||
global using System;
|
||||
global using System.Collections.Generic;
|
||||
global using System.Collections.Immutable;
|
||||
global using System.Linq;
|
||||
global using System.Net.Http;
|
||||
global using System.Threading;
|
||||
global using System.Threading.Tasks;
|
||||
global using Uno.Extensions;
|
||||
global using Uno.Extensions.Configuration;
|
||||
global using Uno.Extensions.Hosting;
|
||||
global using Uno.Extensions.Http;
|
||||
global using Uno.Extensions.Localization;
|
||||
global using Uno.Extensions.Logging;
|
||||
global using Uno.Extensions.Navigation;
|
||||
global using Windows.ApplicationModel;
|
||||
global using Application = Microsoft.UI.Xaml.Application;
|
||||
global using ApplicationExecutionState = Windows.ApplicationModel.Activation.ApplicationExecutionState;
|
@ -0,0 +1,41 @@
|
||||
namespace FrontendPlatformUno.Infrastructure
|
||||
{
|
||||
internal class DebugHttpHandler : DelegatingHandler
|
||||
{
|
||||
private readonly ILogger _logger;
|
||||
public DebugHttpHandler(ILogger<DebugHttpHandler> logger, HttpMessageHandler? innerHandler = null)
|
||||
: base(innerHandler ?? new HttpClientHandler())
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
protected async override Task<HttpResponseMessage> SendAsync(
|
||||
HttpRequestMessage request,
|
||||
CancellationToken cancellationToken)
|
||||
{
|
||||
var response = await base.SendAsync(request, cancellationToken);
|
||||
#if DEBUG
|
||||
if(!response.IsSuccessStatusCode)
|
||||
{
|
||||
_logger.LogDebugMessage("Unsuccessful API Call");
|
||||
if(request.RequestUri is not null)
|
||||
_logger.LogDebugMessage($"{request.RequestUri} ({request.Method})");
|
||||
foreach((var key, var values) in request.Headers.ToDictionary(x => x.Key, x => string.Join(", ", x.Value)))
|
||||
{
|
||||
_logger.LogDebugMessage($"{key}: {values}");
|
||||
}
|
||||
|
||||
var content = request.Content is not null ? await request.Content.ReadAsStringAsync() : null;
|
||||
if(!string.IsNullOrEmpty(content))
|
||||
{
|
||||
_logger.LogDebugMessage(content);
|
||||
}
|
||||
|
||||
// Uncomment to automatically break when an API call fails while debugging
|
||||
// System.Diagnostics.Debugger.Break();
|
||||
}
|
||||
#endif
|
||||
return response;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
using FrontendPlatformUno.DataContracts;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace FrontendPlatformUno.Services.Caching
|
||||
{
|
||||
public interface IWeatherCache
|
||||
{
|
||||
ValueTask<IImmutableList<WeatherForecast>> GetForecast(CancellationToken token);
|
||||
}
|
||||
}
|
@ -0,0 +1,80 @@
|
||||
using Uno.Extensions.Serialization;
|
||||
using Windows.Networking.Connectivity;
|
||||
using Windows.Storage;
|
||||
|
||||
namespace FrontendPlatformUno.Services.Caching
|
||||
{
|
||||
public sealed class WeatherCache : IWeatherCache
|
||||
{
|
||||
private readonly IApiClient _api;
|
||||
private readonly ISerializer _serializer;
|
||||
private readonly ILogger _logger;
|
||||
|
||||
public WeatherCache(IApiClient api, ISerializer serializer, ILogger<WeatherCache> logger)
|
||||
{
|
||||
_api = api;
|
||||
_serializer = serializer;
|
||||
_logger = logger;
|
||||
}
|
||||
|
||||
private bool IsConnected => NetworkInformation.GetInternetConnectionProfile().GetNetworkConnectivityLevel() == NetworkConnectivityLevel.InternetAccess;
|
||||
|
||||
public async ValueTask<IImmutableList<WeatherForecast>> GetForecast(CancellationToken token)
|
||||
{
|
||||
var weatherText = await GetCachedWeather();
|
||||
if (!string.IsNullOrWhiteSpace(weatherText))
|
||||
{
|
||||
return _serializer.FromString<ImmutableArray<WeatherForecast>>(weatherText);
|
||||
}
|
||||
|
||||
if (!IsConnected)
|
||||
{
|
||||
_logger.LogWarning("App is offline and cannot connect to the API.");
|
||||
throw new Exception("No internet connection");
|
||||
}
|
||||
|
||||
var response = await _api.GetWeather(token);
|
||||
|
||||
if (response.IsSuccessStatusCode && response.Content is not null)
|
||||
{
|
||||
var weather = response.Content;
|
||||
await Save(weather, token);
|
||||
return weather;
|
||||
}
|
||||
else if (response.Error is not null)
|
||||
{
|
||||
_logger.LogError(response.Error, "An error occurred while retrieving the latest Forecast.");
|
||||
throw response.Error;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ImmutableArray<WeatherForecast>.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
private async ValueTask<StorageFile> GetFile(CreationCollisionOption option) =>
|
||||
await ApplicationData.Current.TemporaryFolder.CreateFileAsync("weather.json", option);
|
||||
|
||||
private async ValueTask<string?> GetCachedWeather()
|
||||
{
|
||||
var file = await GetFile(CreationCollisionOption.OpenIfExists);
|
||||
var properties = await file.GetBasicPropertiesAsync();
|
||||
|
||||
// Reuse latest cache file if offline
|
||||
// or if the file is less than 5 minutes old
|
||||
if (IsConnected || DateTimeOffset.Now.AddMinutes(-5) > properties.DateModified)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return await File.ReadAllTextAsync(file.Path);
|
||||
}
|
||||
|
||||
private async ValueTask Save(IImmutableList<WeatherForecast> weather, CancellationToken token)
|
||||
{
|
||||
var weatherText = _serializer.ToString(weather);
|
||||
var file = await GetFile(CreationCollisionOption.ReplaceExisting);
|
||||
await File.WriteAllTextAsync(file.Path, weatherText);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
using FrontendPlatformUno.DataContracts;
|
||||
using System.Collections.Immutable;
|
||||
|
||||
namespace FrontendPlatformUno.Services.Endpoints
|
||||
{
|
||||
[Headers("Content-Type: application/json")]
|
||||
public interface IApiClient
|
||||
{
|
||||
[Get("/api/weatherforecast")]
|
||||
Task<ApiResponse<IImmutableList<WeatherForecast>>> GetWeather(CancellationToken cancellationToken = default);
|
||||
}
|
||||
}
|
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ApplicationName" xml:space="preserve">
|
||||
<value>Gamenight</value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ApplicationName" xml:space="preserve">
|
||||
<value>Gamenight</value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ApplicationName" xml:space="preserve">
|
||||
<value>Gamenight</value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="ApplicationName" xml:space="preserve">
|
||||
<value>Gamenight</value>
|
||||
</data>
|
||||
</root>
|
@ -0,0 +1,65 @@
|
||||
<!-- This file is generated by a tool from the file ColorPaletteOverride.zip - - YOU SHOULD NOT EDIT IT manually.-->
|
||||
<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||
<ResourceDictionary.ThemeDictionaries>
|
||||
<ResourceDictionary x:Key="Light">
|
||||
<Color x:Key="PrimaryColor">#5946D2</Color>
|
||||
<Color x:Key="OnPrimaryColor">#FFFFFF</Color>
|
||||
<Color x:Key="PrimaryContainerColor">#E5DEFF</Color>
|
||||
<Color x:Key="OnPrimaryContainerColor">#170065</Color>
|
||||
<Color x:Key="SecondaryColor">#6B4EA2</Color>
|
||||
<Color x:Key="OnSecondaryColor">#FFFFFF</Color>
|
||||
<Color x:Key="SecondaryContainerColor">#EBDDFF</Color>
|
||||
<Color x:Key="OnSecondaryContainerColor">#1F182B</Color>
|
||||
<Color x:Key="TertiaryColor">#0061A4</Color>
|
||||
<Color x:Key="OnTertiaryColor">#FFFFFF</Color>
|
||||
<Color x:Key="TertiaryContainerColor">#CFE4FF</Color>
|
||||
<Color x:Key="OnTertiaryContainerColor">#001D36</Color>
|
||||
<Color x:Key="ErrorColor">#B3261E</Color>
|
||||
<Color x:Key="ErrorContainerColor">#F9DEDC</Color>
|
||||
<Color x:Key="OnErrorColor">#FFFFFF</Color>
|
||||
<Color x:Key="OnErrorContainerColor">#410E0B</Color>
|
||||
<Color x:Key="BackgroundColor">#FCFBFF</Color>
|
||||
<Color x:Key="OnBackgroundColor">#1C1B1F</Color>
|
||||
<Color x:Key="SurfaceColor">#FFFFFF</Color>
|
||||
<Color x:Key="OnSurfaceColor">#1C1B1F</Color>
|
||||
<Color x:Key="SurfaceVariantColor">#F3EFF5</Color>
|
||||
<Color x:Key="OnSurfaceVariantColor">#8B8494</Color>
|
||||
<Color x:Key="OutlineColor">#79747E</Color>
|
||||
<Color x:Key="OnSurfaceInverseColor">#F4EFF4</Color>
|
||||
<Color x:Key="SurfaceInverseColor">#313033</Color>
|
||||
<Color x:Key="PrimaryInverseColor">#C8BFFF</Color>
|
||||
<Color x:Key="SurfaceTintColor">#5946D2</Color>
|
||||
<Color x:Key="OutlineVariantColor">#C9C5D0</Color>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="Dark">
|
||||
<Color x:Key="PrimaryColor">#C7BFFF</Color>
|
||||
<Color x:Key="OnPrimaryColor">#2A009F</Color>
|
||||
<Color x:Key="PrimaryContainerColor">#4129BA</Color>
|
||||
<Color x:Key="OnPrimaryContainerColor">#E4DFFF</Color>
|
||||
<Color x:Key="SecondaryColor">#CDC2DC</Color>
|
||||
<Color x:Key="OnSecondaryColor">#332D41</Color>
|
||||
<Color x:Key="SecondaryContainerColor">#433C52</Color>
|
||||
<Color x:Key="OnSecondaryContainerColor">#EBDDFF</Color>
|
||||
<Color x:Key="TertiaryColor">#9FCAFF</Color>
|
||||
<Color x:Key="OnTertiaryColor">#003258</Color>
|
||||
<Color x:Key="TertiaryContainerColor">#00497E</Color>
|
||||
<Color x:Key="OnTertiaryContainerColor">#D1E4FF</Color>
|
||||
<Color x:Key="ErrorColor">#FFB4AB</Color>
|
||||
<Color x:Key="ErrorContainerColor">#93000A</Color>
|
||||
<Color x:Key="OnErrorColor">#690005</Color>
|
||||
<Color x:Key="OnErrorContainerColor">#FFDAD6</Color>
|
||||
<Color x:Key="BackgroundColor">#1C1B1F</Color>
|
||||
<Color x:Key="OnBackgroundColor">#E5E1E6</Color>
|
||||
<Color x:Key="SurfaceColor">#302D38</Color>
|
||||
<Color x:Key="OnSurfaceColor">#E6E1E5</Color>
|
||||
<Color x:Key="SurfaceVariantColor">#47464F</Color>
|
||||
<Color x:Key="OnSurfaceVariantColor">#C9C5D0</Color>
|
||||
<Color x:Key="OutlineColor">#928F99</Color>
|
||||
<Color x:Key="OnSurfaceInverseColor">#1C1B1F</Color>
|
||||
<Color x:Key="SurfaceInverseColor">#E6E1E5</Color>
|
||||
<Color x:Key="PrimaryInverseColor">#2A009F</Color>
|
||||
<Color x:Key="SurfaceTintColor">#544794</Color>
|
||||
<Color x:Key="OutlineVariantColor">#57545D</Color>
|
||||
</ResourceDictionary>
|
||||
</ResourceDictionary.ThemeDictionaries>
|
||||
</ResourceDictionary>
|
Binary file not shown.
@ -0,0 +1,8 @@
|
||||
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||
|
||||
<FontFamily x:Key="MaterialLightFontFamily">ms-appx:///Uno.Fonts.Roboto/Fonts/Roboto-Light.ttf#Roboto</FontFamily>
|
||||
<FontFamily x:Key="MaterialMediumFontFamily">ms-appx:///Uno.Fonts.Roboto/Fonts/Roboto-Medium.ttf#Roboto</FontFamily>
|
||||
<FontFamily x:Key="MaterialRegularFontFamily">ms-appx:///Uno.Fonts.Roboto/Fonts/Roboto-Regular.ttf#Roboto</FontFamily>
|
||||
|
||||
</ResourceDictionary>
|
@ -0,0 +1,31 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using System.Xml.Linq;
|
||||
|
||||
namespace FrontendPlatformUno.ViewModels
|
||||
{
|
||||
public class GamenightsViewModel : ObservableObject
|
||||
{
|
||||
private INavigator Navigator { get; }
|
||||
public string? Title { get; }
|
||||
public ICommand GoToLogin { get; }
|
||||
|
||||
public GamenightsViewModel(INavigator navigator, IStringLocalizer stringLocalizer)
|
||||
{
|
||||
Navigator = navigator;
|
||||
Title = $"{stringLocalizer["ApplicationName"]}";
|
||||
GoToLogin = new AsyncRelayCommand(GoToLoginView);
|
||||
}
|
||||
|
||||
private async Task GoToLoginView()
|
||||
{
|
||||
await Navigator.NavigateViewModelAsync<LoginViewModel>(this);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
using CommunityToolkit.Mvvm.ComponentModel;
|
||||
using CommunityToolkit.Mvvm.Input;
|
||||
using FrontendPlatformUno.Views;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
|
||||
namespace FrontendPlatformUno.ViewModels
|
||||
{
|
||||
public class LoginViewModel : ObservableObject
|
||||
{
|
||||
private INavigator Navigator { get; }
|
||||
public string? Title { get; }
|
||||
public ICommand GoToLogin { get; }
|
||||
|
||||
public LoginViewModel(INavigator navigator, IStringLocalizer stringLocalizer)
|
||||
{
|
||||
Navigator = navigator;
|
||||
Title = $"{stringLocalizer["ApplicationName"]} - Login";
|
||||
GoToLogin = new AsyncRelayCommand(GoToLoginView);
|
||||
}
|
||||
|
||||
private async Task GoToLoginView()
|
||||
{
|
||||
await Navigator.NavigateViewModelAsync<LoginViewModel>(this);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
namespace FrontendPlatformUno.ViewModels
|
||||
{
|
||||
public class ShellViewModel
|
||||
{
|
||||
private INavigator Navigator { get; }
|
||||
|
||||
public ShellViewModel(INavigator navigator)
|
||||
{
|
||||
Navigator = navigator;
|
||||
|
||||
_ = Start();
|
||||
}
|
||||
|
||||
public async Task Start()
|
||||
{
|
||||
await Navigator.NavigateViewModelAsync<GamenightsViewModel>(this);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,34 @@
|
||||
<Page
|
||||
x:Class="FrontendPlatformUno.Views.GamenightsPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:FrontendPlatformUno.Views"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:uen="using:Uno.Extensions.Navigation.UI"
|
||||
xmlns:utu="using:Uno.Toolkit.UI"
|
||||
xmlns:not_skia="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
mc:Ignorable="d"
|
||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||
|
||||
<Grid>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<utu:NavigationBar Content="{Binding Title}">
|
||||
<utu:NavigationBar.MainCommand>
|
||||
<AppBarButton>
|
||||
<AppBarButton.Icon>
|
||||
<BitmapIcon UriSource="ms-appx:///FrontendPlatformUno/Assets/Icons/back.png" />
|
||||
</AppBarButton.Icon>
|
||||
</AppBarButton>
|
||||
</utu:NavigationBar.MainCommand>
|
||||
<utu:NavigationBar.PrimaryCommands>
|
||||
<AppBarButton Label="Login" Tag="Login" Icon="OtherUser" not_skia:AutomationProperties.AutomationId="LoginPageButton" Command="{Binding GoToLogin}"/>
|
||||
</utu:NavigationBar.PrimaryCommands>
|
||||
</utu:NavigationBar>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Page>
|
@ -0,0 +1,30 @@
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Controls.Primitives;
|
||||
using Microsoft.UI.Xaml.Data;
|
||||
using Microsoft.UI.Xaml.Input;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Microsoft.UI.Xaml.Navigation;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using Windows.Foundation;
|
||||
using Windows.Foundation.Collections;
|
||||
|
||||
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
|
||||
|
||||
namespace FrontendPlatformUno.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// An empty page that can be used on its own or navigated to within a Frame.
|
||||
/// </summary>
|
||||
public sealed partial class GamenightsPage : Page
|
||||
{
|
||||
public GamenightsPage()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
34
FrontendPlatformUno/FrontendPlatformUno/Views/LoginPage.xaml
Normal file
34
FrontendPlatformUno/FrontendPlatformUno/Views/LoginPage.xaml
Normal file
@ -0,0 +1,34 @@
|
||||
<Page
|
||||
x:Class="FrontendPlatformUno.Views.LoginPage"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:FrontendPlatformUno.Views"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:uen="using:Uno.Extensions.Navigation.UI"
|
||||
xmlns:utu="using:Uno.Toolkit.UI"
|
||||
xmlns:not_skia="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
mc:Ignorable="d"
|
||||
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||
|
||||
<Grid>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
<utu:NavigationBar Content="{Binding Title}">
|
||||
<utu:NavigationBar.MainCommand>
|
||||
<AppBarButton>
|
||||
<AppBarButton.Icon>
|
||||
<BitmapIcon UriSource="ms-appx:///FrontendPlatformUno/Assets/Icons/back.png" />
|
||||
</AppBarButton.Icon>
|
||||
</AppBarButton>
|
||||
</utu:NavigationBar.MainCommand>
|
||||
<utu:NavigationBar.PrimaryCommands>
|
||||
<AppBarButton Label="Login" Tag="Login" Icon="OtherUser" not_skia:AutomationProperties.AutomationId="LoginPageButton" Command="{Binding GoToLogin}"/>
|
||||
</utu:NavigationBar.PrimaryCommands>
|
||||
</utu:NavigationBar>
|
||||
</Grid>
|
||||
</Grid>
|
||||
</Page>
|
@ -0,0 +1,31 @@
|
||||
using FrontendPlatformUno.ViewModels;
|
||||
using Microsoft.UI.Xaml;
|
||||
using Microsoft.UI.Xaml.Controls;
|
||||
using Microsoft.UI.Xaml.Controls.Primitives;
|
||||
using Microsoft.UI.Xaml.Data;
|
||||
using Microsoft.UI.Xaml.Input;
|
||||
using Microsoft.UI.Xaml.Media;
|
||||
using Microsoft.UI.Xaml.Navigation;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using Windows.Foundation;
|
||||
using Windows.Foundation.Collections;
|
||||
|
||||
// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=234238
|
||||
|
||||
namespace FrontendPlatformUno.Views
|
||||
{
|
||||
/// <summary>
|
||||
/// An empty page that can be used on its own or navigated to within a Frame.
|
||||
/// </summary>
|
||||
public sealed partial class LoginPage : Page
|
||||
{
|
||||
public LoginPage()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
35
FrontendPlatformUno/FrontendPlatformUno/Views/Shell.xaml
Normal file
35
FrontendPlatformUno/FrontendPlatformUno/Views/Shell.xaml
Normal file
@ -0,0 +1,35 @@
|
||||
<UserControl x:Class="FrontendPlatformUno.Views.Shell"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="using:FrontendPlatformUno.Views"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:utu="using:Uno.Toolkit.UI"
|
||||
mc:Ignorable="d"
|
||||
d:DesignHeight="300"
|
||||
d:DesignWidth="400">
|
||||
|
||||
<utu:ExtendedSplashScreen x:Name="Splash"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
HorizontalContentAlignment="Stretch"
|
||||
VerticalContentAlignment="Stretch">
|
||||
<utu:ExtendedSplashScreen.LoadingContentTemplate>
|
||||
<DataTemplate>
|
||||
<Grid>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="2*" />
|
||||
<RowDefinition />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<ProgressRing IsActive="True"
|
||||
Grid.Row="1"
|
||||
VerticalAlignment="Center"
|
||||
HorizontalAlignment="Center"
|
||||
Height="100"
|
||||
Width="100" />
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</utu:ExtendedSplashScreen.LoadingContentTemplate>
|
||||
</utu:ExtendedSplashScreen>
|
||||
</UserControl>
|
14
FrontendPlatformUno/FrontendPlatformUno/Views/Shell.xaml.cs
Normal file
14
FrontendPlatformUno/FrontendPlatformUno/Views/Shell.xaml.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using Uno.Toolkit.UI;
|
||||
|
||||
namespace FrontendPlatformUno.Views
|
||||
{
|
||||
public sealed partial class Shell : UserControl, IContentControlProvider
|
||||
{
|
||||
public Shell()
|
||||
{
|
||||
this.InitializeComponent();
|
||||
}
|
||||
|
||||
public ContentControl ContentControl => Splash;
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
{
|
||||
"AppConfig": {
|
||||
"Title": "FrontendPlatformUno - Dev"
|
||||
},
|
||||
"ApiClient": {
|
||||
"Url": "https://localhost:5001",
|
||||
"UseNativeHandler": true
|
||||
}
|
||||
}
|
16
FrontendPlatformUno/FrontendPlatformUno/appsettings.json
Normal file
16
FrontendPlatformUno/FrontendPlatformUno/appsettings.json
Normal file
@ -0,0 +1,16 @@
|
||||
{
|
||||
"AppConfig": {
|
||||
"Title": "FrontendPlatformUno"
|
||||
},
|
||||
"ApiClient": {
|
||||
"UseNativeHandler": true
|
||||
},
|
||||
"LocalizationConfiguration": {
|
||||
"Cultures": [
|
||||
"es",
|
||||
"fr",
|
||||
"pt-BR",
|
||||
"en"
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user