mirror of
https://github.com/claunia/marechai.git
synced 2025-12-16 19:14:25 +00:00
Add initial project structure and configuration files for Marechai.App
This commit is contained in:
19
Marechai.App/App.xaml
Normal file
19
Marechai.App/App.xaml
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
<Application x:Class="Marechai.App.App"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
|
||||||
|
|
||||||
|
<Application.Resources>
|
||||||
|
<ResourceDictionary>
|
||||||
|
<ResourceDictionary.MergedDictionaries>
|
||||||
|
<!-- Load WinUI resources -->
|
||||||
|
<XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" />
|
||||||
|
<!-- Load Uno.UI.Toolkit resources -->
|
||||||
|
<ToolkitResources xmlns="using:Uno.Toolkit.UI" />
|
||||||
|
</ResourceDictionary.MergedDictionaries>
|
||||||
|
|
||||||
|
<!-- Add resources here -->
|
||||||
|
|
||||||
|
</ResourceDictionary>
|
||||||
|
</Application.Resources>
|
||||||
|
|
||||||
|
</Application>
|
||||||
114
Marechai.App/App.xaml.cs
Normal file
114
Marechai.App/App.xaml.cs
Normal file
@@ -0,0 +1,114 @@
|
|||||||
|
using System.Net.Http;
|
||||||
|
using Microsoft.UI.Xaml;
|
||||||
|
using Uno.Extensions;
|
||||||
|
using Uno.Extensions.Configuration;
|
||||||
|
using Uno.Extensions.Hosting;
|
||||||
|
using Uno.Extensions.Localization;
|
||||||
|
using Uno.Extensions.Navigation;
|
||||||
|
using Uno.Resizetizer;
|
||||||
|
using Uno.UI;
|
||||||
|
|
||||||
|
namespace Marechai.App;
|
||||||
|
|
||||||
|
public partial class App : Application
|
||||||
|
{
|
||||||
|
/// <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 App()
|
||||||
|
{
|
||||||
|
this.InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Window? MainWindow { get; private set; }
|
||||||
|
protected 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)
|
||||||
|
|
||||||
|
// Default filters for core Uno Platform namespaces
|
||||||
|
.CoreLogLevel(LogLevel.Warning);
|
||||||
|
|
||||||
|
// Uno Platform namespace filter groups
|
||||||
|
// Uncomment individual methods to see more detailed logging
|
||||||
|
//// Generic Xaml events
|
||||||
|
//logBuilder.XamlLogLevel(LogLevel.Debug);
|
||||||
|
//// Layout specific messages
|
||||||
|
//logBuilder.XamlLayoutLogLevel(LogLevel.Debug);
|
||||||
|
//// Storage messages
|
||||||
|
//logBuilder.StorageLogLevel(LogLevel.Debug);
|
||||||
|
//// Binding related messages
|
||||||
|
//logBuilder.XamlBindingLogLevel(LogLevel.Debug);
|
||||||
|
//// Binder memory references tracking
|
||||||
|
//logBuilder.BinderMemoryReferenceLogLevel(LogLevel.Debug);
|
||||||
|
//// DevServer and HotReload related
|
||||||
|
//logBuilder.HotReloadCoreLogLevel(LogLevel.Information);
|
||||||
|
//// Debug JS interop
|
||||||
|
//logBuilder.WebAssemblyLogLevel(LogLevel.Debug);
|
||||||
|
}, enableUnoLogging: true)
|
||||||
|
.UseSerilog(consoleLoggingEnabled: true, fileLoggingEnabled: true)
|
||||||
|
.UseConfiguration(configure: configBuilder =>
|
||||||
|
configBuilder
|
||||||
|
.EmbeddedSource<App>()
|
||||||
|
.Section<AppConfig>()
|
||||||
|
)
|
||||||
|
// Enable localization (see appsettings.json for supported languages)
|
||||||
|
.UseLocalization()
|
||||||
|
.UseHttp((context, services) =>
|
||||||
|
{
|
||||||
|
#if DEBUG
|
||||||
|
// DelegatingHandler will be automatically injected
|
||||||
|
services.AddTransient<DelegatingHandler, DebugHttpHandler>();
|
||||||
|
#endif
|
||||||
|
})
|
||||||
|
.ConfigureServices((context, services) =>
|
||||||
|
{
|
||||||
|
// TODO: Register your services
|
||||||
|
//services.AddSingleton<IMyService, MyService>();
|
||||||
|
})
|
||||||
|
.UseNavigation(RegisterRoutes)
|
||||||
|
);
|
||||||
|
MainWindow = builder.Window;
|
||||||
|
|
||||||
|
#if DEBUG
|
||||||
|
MainWindow.UseStudio();
|
||||||
|
#endif
|
||||||
|
MainWindow.SetWindowIcon();
|
||||||
|
|
||||||
|
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>()
|
||||||
|
);
|
||||||
|
|
||||||
|
routes.Register(
|
||||||
|
new RouteMap("", View: views.FindByViewModel<ShellViewModel>(),
|
||||||
|
Nested:
|
||||||
|
[
|
||||||
|
new("Main", View: views.FindByViewModel<MainViewModel>(), IsDefault: true),
|
||||||
|
new("Second", View: views.FindByViewModel<SecondViewModel>()),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
42
Marechai.App/Assets/Icons/icon.svg
Normal file
42
Marechai.App/Assets/Icons/icon.svg
Normal file
@@ -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="icon.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 |
137
Marechai.App/Assets/Icons/icon_foreground.svg
Normal file
137
Marechai.App/Assets/Icons/icon_foreground.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="icon_foreground.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 |
32
Marechai.App/Assets/SharedAssets.md
Normal file
32
Marechai.App/Assets/SharedAssets.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Shared Assets
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
```text
|
||||||
|
\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 | WinUI | 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 |
|
||||||
137
Marechai.App/Assets/Splash/splash_screen.svg
Normal file
137
Marechai.App/Assets/Splash/splash_screen.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="icon_foreground.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 |
13
Marechai.App/GlobalUsings.cs
Normal file
13
Marechai.App/GlobalUsings.cs
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
global using System.Collections.Immutable;
|
||||||
|
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 Marechai.App.Models;
|
||||||
|
global using Marechai.App.Presentation;
|
||||||
|
global using Marechai.App.Services.Endpoints;
|
||||||
|
global using Uno.Extensions.Http.Kiota;
|
||||||
|
global using ApplicationExecutionState = Windows.ApplicationModel.Activation.ApplicationExecutionState;
|
||||||
|
global using CommunityToolkit.Mvvm.ComponentModel;
|
||||||
|
global using CommunityToolkit.Mvvm.Input;
|
||||||
42
Marechai.App/Marechai.App.csproj
Normal file
42
Marechai.App/Marechai.App.csproj
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<Project Sdk="Uno.Sdk">
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFrameworks>net10.0-android;net10.0-browserwasm;net10.0-desktop</TargetFrameworks>
|
||||||
|
<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows')) Or $([MSBuild]::IsOSPlatform('macos'))">$(TargetFrameworks);net10.0-ios</TargetFrameworks>
|
||||||
|
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<UnoSingleProject>true</UnoSingleProject>
|
||||||
|
|
||||||
|
<!-- Display name -->
|
||||||
|
<ApplicationTitle>Marechai.App</ApplicationTitle>
|
||||||
|
<!-- App Identifier -->
|
||||||
|
<ApplicationId>net.marechai.app</ApplicationId>
|
||||||
|
<!-- Versions -->
|
||||||
|
<ApplicationDisplayVersion>1.0</ApplicationDisplayVersion>
|
||||||
|
<ApplicationVersion>1</ApplicationVersion>
|
||||||
|
<!-- Package Publisher -->
|
||||||
|
<ApplicationPublisher>O=Marechai.App</ApplicationPublisher>
|
||||||
|
<!-- Package Description -->
|
||||||
|
<Description>Marechai.App powered by Uno Platform.</Description>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
UnoFeatures let's you quickly add and manage implicit package references based on the features you want to use.
|
||||||
|
https://aka.platform.uno/singleproject-features
|
||||||
|
-->
|
||||||
|
<UnoFeatures>
|
||||||
|
Lottie;
|
||||||
|
Hosting;
|
||||||
|
Toolkit;
|
||||||
|
Logging;
|
||||||
|
LoggingSerilog;
|
||||||
|
Mvvm;
|
||||||
|
Configuration;
|
||||||
|
HttpKiota;
|
||||||
|
Serialization;
|
||||||
|
Localization;
|
||||||
|
Navigation;
|
||||||
|
ThemeService;
|
||||||
|
SkiaRenderer;
|
||||||
|
</UnoFeatures>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
6
Marechai.App/Models/AppConfig.cs
Normal file
6
Marechai.App/Models/AppConfig.cs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
namespace Marechai.App.Models;
|
||||||
|
|
||||||
|
public record AppConfig
|
||||||
|
{
|
||||||
|
public string? Environment { get; init; }
|
||||||
|
}
|
||||||
3
Marechai.App/Models/Entity.cs
Normal file
3
Marechai.App/Models/Entity.cs
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
namespace Marechai.App.Models;
|
||||||
|
|
||||||
|
public record Entity(string Name);
|
||||||
31
Marechai.App/Package.appxmanifest
Normal file
31
Marechai.App/Package.appxmanifest
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
<?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 />
|
||||||
|
<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 />
|
||||||
|
</Application>
|
||||||
|
</Applications>
|
||||||
|
|
||||||
|
<Capabilities>
|
||||||
|
<rescap:Capability Name="runFullTrust" />
|
||||||
|
</Capabilities>
|
||||||
|
</Package>
|
||||||
4
Marechai.App/Platforms/Android/AndroidManifest.xml
Normal file
4
Marechai.App/Platforms/Android/AndroidManifest.xml
Normal file
@@ -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>
|
||||||
22
Marechai.App/Platforms/Android/Assets/AboutAssets.txt
Normal file
22
Marechai.App/Platforms/Android/Assets/AboutAssets.txt
Normal file
@@ -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 your 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");
|
||||||
28
Marechai.App/Platforms/Android/Main.Android.cs
Normal file
28
Marechai.App/Platforms/Android/Main.Android.cs
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Android.App;
|
||||||
|
using Android.Content;
|
||||||
|
using Android.OS;
|
||||||
|
using Android.Runtime;
|
||||||
|
using Android.Views;
|
||||||
|
using Android.Widget;
|
||||||
|
using Microsoft.UI.Xaml.Media;
|
||||||
|
|
||||||
|
namespace Marechai.App.Droid;
|
||||||
|
|
||||||
|
[global::Android.App.ApplicationAttribute(
|
||||||
|
Label = "@string/ApplicationName",
|
||||||
|
Icon = "@mipmap/icon",
|
||||||
|
LargeHeap = true,
|
||||||
|
HardwareAccelerated = true,
|
||||||
|
Theme = "@style/Theme.App.Starting"
|
||||||
|
)]
|
||||||
|
public class Application : Microsoft.UI.Xaml.NativeApplication
|
||||||
|
{
|
||||||
|
public Application(IntPtr javaReference, JniHandleOwnership transfer)
|
||||||
|
: base(() => new App(), javaReference, transfer)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
22
Marechai.App/Platforms/Android/MainActivity.Android.cs
Normal file
22
Marechai.App/Platforms/Android/MainActivity.Android.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using Android.App;
|
||||||
|
using Android.Content.PM;
|
||||||
|
using Android.OS;
|
||||||
|
using Android.Views;
|
||||||
|
using Android.Widget;
|
||||||
|
|
||||||
|
namespace Marechai.App.Droid;
|
||||||
|
|
||||||
|
[Activity(
|
||||||
|
MainLauncher = true,
|
||||||
|
ConfigurationChanges = global::Uno.UI.ActivityHelper.AllConfigChanges,
|
||||||
|
WindowSoftInputMode = SoftInput.AdjustNothing | SoftInput.StateHidden
|
||||||
|
)]
|
||||||
|
public class MainActivity : Microsoft.UI.Xaml.ApplicationActivity
|
||||||
|
{
|
||||||
|
protected override void OnCreate(Bundle? savedInstanceState)
|
||||||
|
{
|
||||||
|
global::AndroidX.Core.SplashScreen.SplashScreen.InstallSplashScreen(this);
|
||||||
|
|
||||||
|
base.OnCreate(savedInstanceState);
|
||||||
|
}
|
||||||
|
}
|
||||||
47
Marechai.App/Platforms/Android/Resources/AboutResources.txt
Normal file
47
Marechai.App/Platforms/Android/Resources/AboutResources.txt
Normal file
@@ -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">Marechai.App</string>
|
||||||
|
</resources>
|
||||||
25
Marechai.App/Platforms/Android/Resources/values/Styles.xml
Normal file
25
Marechai.App/Platforms/Android/Resources/values/Styles.xml
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8" ?>
|
||||||
|
<resources>
|
||||||
|
<style name="AppTheme" parent="Theme.MaterialComponents.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>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
|
||||||
|
<!-- uno_splash_color and uno_splash_image are generated by Uno.Resizetizer -->
|
||||||
|
<!-- This property is used for the splash screen -->
|
||||||
|
<item name="android:windowSplashScreenBackground">@color/uno_splash_color</item>
|
||||||
|
<item name="android:windowBackground">@drawable/uno_splash_image</item>
|
||||||
|
<item name="android:windowSplashScreenAnimatedIcon">@drawable/uno_splash_image</item>
|
||||||
|
|
||||||
|
<item name="postSplashScreenTheme">@style/AppTheme</item>
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<style name="Theme.AppCompat.Translucent">
|
||||||
|
<item name="android:windowIsTranslucent">true</item>
|
||||||
|
<item name="android:windowAnimationStyle">@android:style/Animation</item>
|
||||||
|
</style>
|
||||||
|
</resources>
|
||||||
2
Marechai.App/Platforms/Android/environment.conf
Normal file
2
Marechai.App/Platforms/Android/environment.conf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# See this for more details: http://developer.xamarin.com/guides/android/advanced_topics/garbage_collection/
|
||||||
|
MONO_GC_PARAMS=bridge-implementation=new,nursery-size=32m,soft-heap-limit=256m
|
||||||
21
Marechai.App/Platforms/Desktop/Program.cs
Normal file
21
Marechai.App/Platforms/Desktop/Program.cs
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
using System;
|
||||||
|
using Uno.UI.Hosting;
|
||||||
|
|
||||||
|
namespace Marechai.App;
|
||||||
|
|
||||||
|
internal class Program
|
||||||
|
{
|
||||||
|
[STAThread]
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
var host = UnoPlatformHostBuilder.Create()
|
||||||
|
.App(() => new App())
|
||||||
|
.UseX11()
|
||||||
|
.UseLinuxFrameBuffer()
|
||||||
|
.UseMacOS()
|
||||||
|
.UseWin32()
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
host.Run();
|
||||||
|
}
|
||||||
|
}
|
||||||
10
Marechai.App/Platforms/WebAssembly/LinkerConfig.xml
Normal file
10
Marechai.App/Platforms/WebAssembly/LinkerConfig.xml
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
<linker>
|
||||||
|
<assembly fullname="Marechai.App" />
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Uncomment this section when using JSON.NET
|
||||||
|
<assembly fullname="System.Core">
|
||||||
|
<type fullname="System.Linq.Expressions*" />
|
||||||
|
</assembly>
|
||||||
|
-->
|
||||||
|
</linker>
|
||||||
17
Marechai.App/Platforms/WebAssembly/Program.cs
Normal file
17
Marechai.App/Platforms/WebAssembly/Program.cs
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
|
using Uno.UI.Hosting;
|
||||||
|
|
||||||
|
namespace Marechai.App;
|
||||||
|
|
||||||
|
public class Program
|
||||||
|
{
|
||||||
|
public static async Task Main(string[] args)
|
||||||
|
{
|
||||||
|
var host = UnoPlatformHostBuilder.Create()
|
||||||
|
.App(() => new App())
|
||||||
|
.UseWebAssembly()
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
await host.RunAsync();
|
||||||
|
}
|
||||||
|
}
|
||||||
28
Marechai.App/Platforms/WebAssembly/WasmCSS/Fonts.css
Normal file
28
Marechai.App/Platforms/WebAssembly/WasmCSS/Fonts.css
Normal file
@@ -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('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: "Marechai.App"
|
||||||
|
}
|
||||||
10
Marechai.App/Platforms/WebAssembly/manifest.webmanifest
Normal file
10
Marechai.App/Platforms/WebAssembly/manifest.webmanifest
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
"background_color": "#ffffff",
|
||||||
|
"description": "Marechai.App",
|
||||||
|
"display": "standalone",
|
||||||
|
"name": "Marechai.App",
|
||||||
|
"short_name": "Marechai.App",
|
||||||
|
"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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
78
Marechai.App/Platforms/WebAssembly/wwwroot/web.config
Normal file
78
Marechai.App/Platforms/WebAssembly/wwwroot/web.config
Normal file
@@ -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>
|
||||||
6
Marechai.App/Platforms/iOS/Entitlements.plist
Normal file
6
Marechai.App/Platforms/iOS/Entitlements.plist
Normal file
@@ -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>
|
||||||
43
Marechai.App/Platforms/iOS/Info.plist
Normal file
43
Marechai.App/Platforms/iOS/Info.plist
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
<?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>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>XSAppIconAssets</key>
|
||||||
|
<string>Assets.xcassets/icon.appiconset</string>
|
||||||
|
<key>UIApplicationSupportsIndirectInputEvents</key>
|
||||||
|
<true/>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Adjust this to your application's encryption usage.
|
||||||
|
<key>ITSAppUsesNonExemptEncryption</key>
|
||||||
|
<false/>
|
||||||
|
-->
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
18
Marechai.App/Platforms/iOS/Main.iOS.cs
Normal file
18
Marechai.App/Platforms/iOS/Main.iOS.cs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
using UIKit;
|
||||||
|
using Uno.UI.Hosting;
|
||||||
|
|
||||||
|
namespace Marechai.App.iOS;
|
||||||
|
|
||||||
|
public class EntryPoint
|
||||||
|
{
|
||||||
|
// This is the main entry point of the application.
|
||||||
|
public static void Main(string[] args)
|
||||||
|
{
|
||||||
|
var host = UnoPlatformHostBuilder.Create()
|
||||||
|
.App(() => new App())
|
||||||
|
.UseAppleUIKit()
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
host.Run();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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": ""
|
||||||
|
}
|
||||||
|
}
|
||||||
41
Marechai.App/Platforms/iOS/PrivacyInfo.xcprivacy
Normal file
41
Marechai.App/Platforms/iOS/PrivacyInfo.xcprivacy
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
<?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">
|
||||||
|
<!-- see https://aka.platform/uno/apple-privacy-manifest for more information -->
|
||||||
|
|
||||||
|
<!-- .NET Runtime/BCL -->
|
||||||
|
<dict>
|
||||||
|
<key>NSPrivacyAccessedAPIType</key>
|
||||||
|
<string>NSPrivacyAccessedAPICategoryFileTimestamp</string>
|
||||||
|
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||||
|
<array>
|
||||||
|
<string>C617.1</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>NSPrivacyAccessedAPIType</key>
|
||||||
|
<string>NSPrivacyAccessedAPICategorySystemBootTime</string>
|
||||||
|
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||||
|
<array>
|
||||||
|
<string>35F9.1</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
<dict>
|
||||||
|
<key>NSPrivacyAccessedAPIType</key>
|
||||||
|
<string>NSPrivacyAccessedAPICategoryDiskSpace</string>
|
||||||
|
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||||
|
<array>
|
||||||
|
<string>E174.1</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
|
||||||
|
<!-- NSUserDefaults -->
|
||||||
|
<dict>
|
||||||
|
<key>NSPrivacyAccessedAPIType</key>
|
||||||
|
<string>NSPrivacyAccessedAPICategoryUserDefaults</string>
|
||||||
|
<key>NSPrivacyAccessedAPITypeReasons</key>
|
||||||
|
<array>
|
||||||
|
<string>CA92.1</string>
|
||||||
|
</array>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
29
Marechai.App/Presentation/MainPage.xaml
Normal file
29
Marechai.App/Presentation/MainPage.xaml
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
<Page x:Class="Marechai.App.Presentation.MainPage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:local="using:Marechai.App.Presentation"
|
||||||
|
xmlns:uen="using:Uno.Extensions.Navigation.UI"
|
||||||
|
xmlns:utu="using:Uno.Toolkit.UI"
|
||||||
|
NavigationCacheMode="Required"
|
||||||
|
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||||
|
<ScrollViewer IsTabStop="True">
|
||||||
|
<Grid utu:SafeArea.Insets="VisibleBounds">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<utu:NavigationBar Content="{Binding Title}" />
|
||||||
|
|
||||||
|
<StackPanel Grid.Row="1"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Spacing="16">
|
||||||
|
<TextBox Text="{Binding Name, Mode=TwoWay}"
|
||||||
|
PlaceholderText="Enter your name:" />
|
||||||
|
<Button Content="Go to Second Page"
|
||||||
|
AutomationProperties.AutomationId="SecondPageButton"
|
||||||
|
Command="{Binding GoToSecond}" />
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</ScrollViewer>
|
||||||
|
</Page>
|
||||||
11
Marechai.App/Presentation/MainPage.xaml.cs
Normal file
11
Marechai.App/Presentation/MainPage.xaml.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
|
||||||
|
namespace Marechai.App.Presentation;
|
||||||
|
|
||||||
|
public sealed partial class MainPage : Page
|
||||||
|
{
|
||||||
|
public MainPage()
|
||||||
|
{
|
||||||
|
this.InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
33
Marechai.App/Presentation/MainViewModel.cs
Normal file
33
Marechai.App/Presentation/MainViewModel.cs
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Input;
|
||||||
|
using Uno.Extensions.Navigation;
|
||||||
|
|
||||||
|
namespace Marechai.App.Presentation;
|
||||||
|
|
||||||
|
public partial class MainViewModel : ObservableObject
|
||||||
|
{
|
||||||
|
private INavigator _navigator;
|
||||||
|
|
||||||
|
[ObservableProperty] private string? name;
|
||||||
|
|
||||||
|
public MainViewModel(
|
||||||
|
IStringLocalizer localizer,
|
||||||
|
IOptions<AppConfig> appInfo,
|
||||||
|
INavigator navigator)
|
||||||
|
{
|
||||||
|
_navigator = navigator;
|
||||||
|
Title = "Main";
|
||||||
|
Title += $" - {localizer["ApplicationName"]}";
|
||||||
|
Title += $" - {appInfo?.Value?.Environment}";
|
||||||
|
GoToSecond = new AsyncRelayCommand(GoToSecondView);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string? Title { get; }
|
||||||
|
|
||||||
|
public ICommand GoToSecond { get; }
|
||||||
|
|
||||||
|
private async Task GoToSecondView()
|
||||||
|
{
|
||||||
|
await _navigator.NavigateViewModelAsync<SecondViewModel>(this, data: new Entity(Name!));
|
||||||
|
}
|
||||||
|
}
|
||||||
27
Marechai.App/Presentation/SecondPage.xaml
Normal file
27
Marechai.App/Presentation/SecondPage.xaml
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
<Page x:Class="Marechai.App.Presentation.SecondPage"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:local="using:Marechai.App.Presentation"
|
||||||
|
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"
|
||||||
|
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||||
|
|
||||||
|
<Grid utu:SafeArea.Insets="VisibleBounds">
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition Height="Auto" />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<utu:NavigationBar Content="Second Page" />
|
||||||
|
<StackPanel Grid.Row="1"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center">
|
||||||
|
<TextBlock Text="{Binding Entity.Name}"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Margin="8" />
|
||||||
|
</StackPanel>
|
||||||
|
|
||||||
|
</Grid>
|
||||||
|
</Page>
|
||||||
11
Marechai.App/Presentation/SecondPage.xaml.cs
Normal file
11
Marechai.App/Presentation/SecondPage.xaml.cs
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
|
||||||
|
namespace Marechai.App.Presentation;
|
||||||
|
|
||||||
|
public sealed partial class SecondPage : Page
|
||||||
|
{
|
||||||
|
public SecondPage()
|
||||||
|
{
|
||||||
|
this.InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
5
Marechai.App/Presentation/SecondViewModel.cs
Normal file
5
Marechai.App/Presentation/SecondViewModel.cs
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
namespace Marechai.App.Presentation;
|
||||||
|
|
||||||
|
public partial record SecondViewModel(Entity Entity)
|
||||||
|
{
|
||||||
|
}
|
||||||
36
Marechai.App/Presentation/Shell.xaml
Normal file
36
Marechai.App/Presentation/Shell.xaml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
<UserControl x:Class="Marechai.App.Presentation.Shell"
|
||||||
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:local="using:Marechai.App.Presentation"
|
||||||
|
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">
|
||||||
|
<Border Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
|
||||||
|
<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>
|
||||||
|
</Border>
|
||||||
|
</UserControl>
|
||||||
14
Marechai.App/Presentation/Shell.xaml.cs
Normal file
14
Marechai.App/Presentation/Shell.xaml.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using Microsoft.UI.Xaml.Controls;
|
||||||
|
using Uno.Extensions.Hosting;
|
||||||
|
|
||||||
|
namespace Marechai.App.Presentation;
|
||||||
|
|
||||||
|
public sealed partial class Shell : UserControl, IContentControlProvider
|
||||||
|
{
|
||||||
|
public Shell()
|
||||||
|
{
|
||||||
|
this.InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public ContentControl ContentControl => Splash;
|
||||||
|
}
|
||||||
15
Marechai.App/Presentation/ShellViewModel.cs
Normal file
15
Marechai.App/Presentation/ShellViewModel.cs
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
using Uno.Extensions.Navigation;
|
||||||
|
|
||||||
|
namespace Marechai.App.Presentation;
|
||||||
|
|
||||||
|
public class ShellViewModel
|
||||||
|
{
|
||||||
|
private readonly INavigator _navigator;
|
||||||
|
|
||||||
|
public ShellViewModel(
|
||||||
|
INavigator navigator)
|
||||||
|
{
|
||||||
|
_navigator = navigator;
|
||||||
|
// Add code here to initialize or attach event handlers to singleton services
|
||||||
|
}
|
||||||
|
}
|
||||||
50
Marechai.App/Services/Endpoints/DebugHandler.cs
Normal file
50
Marechai.App/Services/Endpoints/DebugHandler.cs
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
using System.Linq;
|
||||||
|
using System.Net.Http;
|
||||||
|
using System.Threading;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Uno.Extensions.Logging;
|
||||||
|
|
||||||
|
namespace Marechai.App.Services.Endpoints;
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
123
Marechai.App/Strings/en/Resources.resw
Normal file
123
Marechai.App/Strings/en/Resources.resw
Normal file
@@ -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>Marechai.App-en</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
123
Marechai.App/Strings/es/Resources.resw
Normal file
123
Marechai.App/Strings/es/Resources.resw
Normal file
@@ -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>Marechai.App-es</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
123
Marechai.App/Strings/fr/Resources.resw
Normal file
123
Marechai.App/Strings/fr/Resources.resw
Normal file
@@ -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>Marechai.App-fr</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
123
Marechai.App/Strings/pt-BR/Resources.resw
Normal file
123
Marechai.App/Strings/pt-BR/Resources.resw
Normal file
@@ -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>Marechai.App-pt-BR</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
||||||
25
Marechai.App/app.manifest
Normal file
25
Marechai.App/app.manifest
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?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="Marechai.App.Windows.app"/>
|
||||||
|
|
||||||
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
|
<application>
|
||||||
|
<!--The ID below informs the system that this application is compatible with OS features first introduced in Windows 8.
|
||||||
|
For more info see https://docs.microsoft.com/windows/win32/sysinfo/targeting-your-application-at-windows-8-1
|
||||||
|
|
||||||
|
It is also necessary to support features in unpackaged applications, for example the custom titlebar implementation.-->
|
||||||
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
|
||||||
|
</application>
|
||||||
|
</compatibility>
|
||||||
|
|
||||||
|
<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>
|
||||||
9
Marechai.App/appsettings.development.json
Normal file
9
Marechai.App/appsettings.development.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"AppConfig": {
|
||||||
|
"Environment": "Development"
|
||||||
|
},
|
||||||
|
"ApiClient": {
|
||||||
|
"Url": "https://localhost:5002",
|
||||||
|
"UseNativeHandler": true
|
||||||
|
}
|
||||||
|
}
|
||||||
16
Marechai.App/appsettings.json
Normal file
16
Marechai.App/appsettings.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"AppConfig": {
|
||||||
|
"Environment": "Production"
|
||||||
|
},
|
||||||
|
"ApiClient": {
|
||||||
|
"UseNativeHandler": true
|
||||||
|
},
|
||||||
|
"LocalizationConfiguration": {
|
||||||
|
"Cultures": [
|
||||||
|
"es",
|
||||||
|
"fr",
|
||||||
|
"pt-BR",
|
||||||
|
"en"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
8
global.json
Normal file
8
global.json
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
{
|
||||||
|
"msbuild-sdks": {
|
||||||
|
"Uno.Sdk": "6.4.24"
|
||||||
|
},
|
||||||
|
"sdk": {
|
||||||
|
"allowPrerelease": true
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user