mirror of
https://github.com/claunia/marechai.git
synced 2025-12-16 19:14:25 +00:00
115 lines
3.9 KiB
C#
115 lines
3.9 KiB
C#
|
|
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>()),
|
||
|
|
]
|
||
|
|
)
|
||
|
|
);
|
||
|
|
}
|
||
|
|
}
|