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); } }