zcbot/windows-node/Zcbot.WindowsNode/Presentation/App.cs

48 lines
1.6 KiB
C#

using System.Windows;
namespace Zcbot.WindowsNode;
internal sealed class App : System.Windows.Application
{
private readonly NodeApplicationController controller;
private TrayHost? trayHost;
internal App(NodeApplicationController controller)
{
this.controller = controller;
ShutdownMode = ShutdownMode.OnExplicitShutdown;
Resources.MergedDictionaries.Add(new ResourceDictionary
{
Source = new Uri(
"pack://application:,,,/Zcbot.WindowsNode;component/Presentation/Themes/LightTheme.xaml",
UriKind.Absolute),
});
}
protected override void OnStartup(StartupEventArgs eventArgs)
{
base.OnStartup(eventArgs);
var viewModel = new MainWindowViewModel(
new StartupRegistrationService(),
new DiagnosticService(controller.Paths),
new SoftwarePageViewModel(
new SoftwareManagementService(controller.Paths)),
new JobPageViewModel(
new JobMonitorService(controller.Paths.JobsDirectory)),
new AnsysAcceptanceViewModel(
new AnsysAcceptanceService(controller.Paths)),
new DataRootPageViewModel(
new DataRootManagementService(controller.Paths)));
var window = new MainWindow(viewModel);
MainWindow = window;
trayHost = new TrayHost(controller, window, Shutdown);
trayHost.Start();
}
protected override void OnExit(ExitEventArgs eventArgs)
{
trayHost?.Dispose();
base.OnExit(eventArgs);
}
}