Files
ulapp/FieldLogger/MauiProgram.cs

68 lines
2.0 KiB
C#

using FieldLogger.Services;
using FieldLogger.Services.Ble;
using FieldLogger.Services.Data;
using FieldLogger.Services.Sync;
using FieldLogger.ViewModels;
using FieldLogger.Views;
using Microsoft.Extensions.Logging;
namespace FieldLogger;
public static class MauiProgram
{
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
#if !WINDOWS
.UseMauiMaps()
#endif
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
});
#if DEBUG
builder.Logging.AddDebug();
#endif
// Core services
builder.Services.AddSingleton<SettingsService>();
builder.Services.AddSingleton<AppDatabase>();
builder.Services.AddSingleton<BleScanner>();
builder.Services.AddSingleton<UmReceiverService>();
builder.Services.AddSingleton<MaglinkService>();
builder.Services.AddSingleton<DeviceConnectionManager>();
builder.Services.AddSingleton<PointLogger>();
builder.Services.AddSingleton<IMqttSyncService, MqttSyncService>();
// View models
builder.Services.AddSingleton<HomeViewModel>();
builder.Services.AddSingleton<JobsViewModel>();
builder.Services.AddSingleton<MapViewModel>();
builder.Services.AddSingleton<DebugViewModel>();
builder.Services.AddSingleton<SettingsViewModel>();
builder.Services.AddTransient<DeviceScanViewModel>();
builder.Services.AddTransient<JobDetailViewModel>();
// Pages
builder.Services.AddSingleton<HomePage>();
builder.Services.AddSingleton<JobsPage>();
builder.Services.AddSingleton<MapPage>();
builder.Services.AddSingleton<DebugPage>();
builder.Services.AddSingleton<SettingsPage>();
builder.Services.AddTransient<DeviceScanPage>();
builder.Services.AddTransient<JobDetailPage>();
var app = builder.Build();
// Instantiate the point logger so it listens for receiver packets from startup.
_ = app.Services.GetRequiredService<PointLogger>();
_ = app.Services.GetRequiredService<IMqttSyncService>().StartAsync();
return app;
}
}