using Avalonia; using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; using MeWeb.App.Services; using MeWeb.App.ViewModels; using MeWeb.App.Views; using MeWeb.Core.Net; using Microsoft.Extensions.DependencyInjection; namespace MeWeb.App; public partial class App : Application { public static IServiceProvider Services { get; private set; } public static IPlatform Platform { get; set; } = new SystemPlatform(); public override void Initialize() { AvaloniaXamlLoader.Load(this); #if DEBUG this.AttachDeveloperTools(); #endif } public override void OnFrameworkInitializationCompleted() { ErrorLog.Watch(); Services = new ServiceCollection().AddMeWebApp(Platform).BuildServiceProvider(); var stored = AppSettings.Read(); Localizer.Instance.SetLanguage(Languages.Find(stored.Language) ?? Languages.ForCulture(System.Globalization.CultureInfo.CurrentUICulture)); if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) desktop.MainWindow = new MainWindow { Content = CreateMainView() }; else if (ApplicationLifetime is IActivityApplicationLifetime activity) activity.MainViewFactory = CreateMainView; else if (ApplicationLifetime is ISingleViewApplicationLifetime single) single.MainView = CreateMainView(); base.OnFrameworkInitializationCompleted(); } static Control CreateMainView() => new MainView { DataContext = Services.GetRequiredService() }; }