protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); using var sw = new BenchmarkTimer("MainWindow initialization routine", Log); Log.Info($"Application startup detected, PID: {Process.GetCurrentProcess().Id}"); SingleInstanceValidationRoutine(true); sw.Step("Registering overlay"); var micSwitchOverlayDependencyName = "MicSwitchOverlayAllWindows"; container.RegisterOverlayController(micSwitchOverlayDependencyName, micSwitchOverlayDependencyName); var matcher = new RegexStringMatcher().AddToWhitelist(".*"); container.RegisterWindowTracker(micSwitchOverlayDependencyName, matcher); var overlayController = container.Resolve <IOverlayWindowController>(micSwitchOverlayDependencyName); var overlayViewModelFactory = container.Resolve <IFactory <IMicSwitchOverlayViewModel, IOverlayWindowController> >(); var overlayViewModel = overlayViewModelFactory.Create(overlayController).AddTo(Anchors); overlayController.RegisterChild(overlayViewModel); var mainWindow = container.Resolve <MainWindow.Views.MainWindow>(); sw.Step($"Main window view initialized"); var viewController = new WindowViewController(mainWindow); var mainWindowViewModel = container.Resolve <IMainWindowViewModel>(new DependencyOverride <IViewController>(viewController)).AddTo(Anchors); sw.Step($"Main window view model resolved"); mainWindow.DataContext = mainWindowViewModel; sw.Step($"Main window view model assigned"); mainWindow.Show(); sw.Step($"Main window shown"); }
protected override void OnStartup(StartupEventArgs e) { base.OnStartup(e); InitializeContainer(); using var sw = new BenchmarkTimer("MainWindow initialization routine", Log); Log.Info($"Application startup detected, PID: {Process.GetCurrentProcess().Id}"); Log.Debug("Resolving squirrel events handler"); var squirrelEventsHandler = Container.Resolve <ISquirrelEventsHandler>(); Log.Debug(() => $"Resolved squirrel events handler: {squirrelEventsHandler}"); SingleInstanceValidationRoutine(true); var configProvider = Container.Resolve <IConfigProvider>(); var defaultConfigProviderStrategy = Container.Resolve <UseDefaultIfFailureConfigProviderStrategy>(); configProvider.RegisterStrategy(defaultConfigProviderStrategy); Log.Debug("Loading initial configuration"); configProvider.Reload(); Log.Debug("Initial configuration loaded"); InitializeUpdateSettings(); sw.Step("Actualizing configuration format"); Log.Debug("Initializing config provider"); var hotkeyConfigProvider = Container.Resolve <IConfigProvider <MicSwitchHotkeyConfig> >(); var overlayConfigProvider = Container.Resolve <IConfigProvider <MicSwitchOverlayConfig> >(); var mainConfigProvider = Container.Resolve <IConfigProvider <MicSwitchConfig> >(); ActualizeConfig(mainConfigProvider, hotkeyConfigProvider); ActualizeConfig(mainConfigProvider, overlayConfigProvider); ActualizeConfig(mainConfigProvider); sw.Step("Registering overlay"); var overlayController = Container.Resolve <IOverlayWindowController>(WellKnownWindows.AllWindows); var overlayViewModelFactory = Container.Resolve <IFactory <IMicSwitchOverlayViewModel, IOverlayWindowController> >(); var overlayViewModel = overlayViewModelFactory.Create(overlayController).AddTo(Anchors); var mainWindow = Container.Resolve <MainWindow.Views.MainWindow>(); Current.MainWindow = mainWindow; sw.Step($"Main window view initialized"); var viewController = new WindowViewController(mainWindow); var mainWindowViewModel = Container.Resolve <IMainWindowViewModel>( new DependencyOverride <IWindowViewController>(viewController), new DependencyOverride <IOverlayWindowController>(overlayController)).AddTo(Anchors); sw.Step($"Main window view model resolved"); mainWindow.DataContext = mainWindowViewModel; sw.Step($"Main window view model assigned"); mainWindow.Show(); sw.Step($"Main window shown"); }