예제 #1
0
        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");
        }
예제 #2
0
        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");
        }