using System.Windows; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.DependencyInjection; using TheXamlGuy.Framework.WPF; using WeddingBooth.Views; using System.Reflection; using System; using System.IO; using TheXamlGuy.Framework.Core; using TheXamlGuy.Framework.Microcontroller; using TheXamlGuy.Framework.Serial; using TheXamlGuy.Framework.Camera; using WeddingBooth.LifeCycles; namespace TheXamlGuy.App.WeddingDisplay { public partial class App : Application { protected override async void OnStartup(StartupEventArgs args) { base.OnStartup(args); IHost? host = new HostBuilder() .UseContentRoot(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), "WeddingBooth"), true) .ConfigureAppConfiguration((context, configuration) => { configuration.AddWritableJsonFile("Settings.json", false, true, writableConfiguration => { writableConfiguration.AddDefaultFileStream(Assembly.GetExecutingAssembly().ExtractResource("Settings.json")!) .AddDefaultConfiguration("Startup") .AddDefaultConfiguration("Navigation") .AddDefaultConfiguration("Microcontroller") .AddDefaultConfiguration("RemoteCamera"); }); }) .ConfigureMicrocontrollers((context, builder) => { builder.Add(context.Configuration.GetSection("Microcontroller")) .AddModule(); }) .ConfigureEvents(configuration => { configuration.Add>().WithHandler(args => args); configuration.Add>().WithHandler(args => args); configuration.Add().WithHandler(args => args); }) .ConfigureTemplates(configuration => { configuration.Add("Navigation"); configuration.Add("Welcome"); configuration.Add("Seatings"); configuration.Add("Camera"); configuration.Add("Gallery"); }) .ConfigureCamera((context, builder) => { builder.Add(context.Configuration.GetSection("RemoteCamera")); }) .ConfigureServices(ConfigureServices) .Build(); await host.RunAsync(); } private void ConfigureServices(HostBuilderContext context, IServiceCollection services) { services.AddReqiredCore() .AddRequiredWpf() .AddHostedService() .AddSingleton() .AddSingleton() .AddConfiguration(context.Configuration.GetSection("Startup")) .AddConfiguration(context.Configuration.GetSection("Navigation")) .AddConfiguration(context.Configuration.GetSection("Microcontroller")) .AddConfiguration(context.Configuration.GetSection("RemoteCamera")) .RegisterHandlers(); } } }