At.FF.Krems.FullscreenBrowser.WindowManager.Initialize C# (CSharp) Method

Initialize() private method

Initializes this instance.
private Initialize ( bool force = false ) : void
force bool Force initialization, even if already initialized.
return void
        private void Initialize(bool force = false)
        {
            if (this.initializeCalled && !force)
            {
                return;
            }

            this.disableScreensaverPermanently = Bootstrapper.GetInstance<IBrowserConfiguration>().Config.DisableScreensaverPermanently;
            if (this.disableScreensaverPermanently)
            {
                Bootstrapper.GetInstance<IPowerManagement>().SetPowerReq(PowerThreadRequirements.HoldSystemAndDisplay);
            }

            if (!this.initializeCalled)
            {
                this.windowTimer.Elapsed += (sender, args) =>
                {
                    foreach (var geckoBrowser in this.geckoBrowsers)
                    {
                        geckoBrowser.StartOrResetBrowser();
                    }

                    Bootstrapper.GetInstance<IPrintController>().ClearPrintedMissions();
                    if (!this.disableScreensaverPermanently)
                    {
                        Bootstrapper.GetInstance<IPowerManagement>().SetPowerReq(PowerThreadRequirements.HoldSystem);
                    }
                };
            }

            this.initializeCalled = true;

            var taskbar = Bootstrapper.GetInstance<IApp>().Taskbar;
            var configuration = Bootstrapper.GetInstance<IBrowserConfiguration>().Config;

            this.windowTimeout = configuration.ShowClosedWindowsInMinutes * 60 * 1000;
            this.windowTimer.Interval = this.windowTimeout;

            foreach (var window in configuration.Window)
            {
                var geckoBrowser = Bootstrapper.GetInstance<IGeckoBrowser>();
                geckoBrowser.Setup(window);
                var menuItem = new MenuItem { Header = window.Name };
                var startOrReload = new MenuItem
                {
                    Header = Resources.screenStart_DE_AT,
                    Command = new DelegateCommand
                    {
                        CommandAction =
                            () =>
                            {
                                foreach (var browser in this.geckoBrowsers)
                                {
                                    var isOwnBrowser = browser == geckoBrowser;
                                    browser.StartOrResetBrowser(isOwnBrowser, false, false, !isOwnBrowser);
                                }
                            }
                    }
                };
                menuItem.Items.Add(startOrReload);
                var close = new MenuItem { Header = Resources.screenClose_DE_AT, IsEnabled = false, Command = new DelegateCommand { CommandAction = () => geckoBrowser.CloseBrowser() } };
                menuItem.Items.Add(close);
                menuItem.Items.Add(new Separator());
                var zoomItem = new MenuItem { Header = Resources.Zoom_DE_AT };
                zoomItem.Items.Add(
                    new MenuItem
                        {
                            Header = Resources.ZoomIn_DE_AT,
                            Command = new DelegateCommand { CommandAction = geckoBrowser.ZoomIn }
                        });
                zoomItem.Items.Add(
                    new MenuItem
                        {
                            Header = Resources.ZoomOut_DE_AT,
                            Command = new DelegateCommand { CommandAction = geckoBrowser.ZoomOut }
                        });
                zoomItem.Items.Add(
                    new MenuItem
                        {
                            Header = Resources.ResetZoom_DE_AT,
                            Command = new DelegateCommand { CommandAction = geckoBrowser.ResetZoom }
                        });
                menuItem.Items.Add(zoomItem);
                taskbar.ContextMenu.Items.Insert(0, menuItem);
                geckoBrowser.VisibleChanged += (sender, args) =>
                    {
                        var browser = (IGeckoBrowser)sender;
                        if (browser == null)
                        {
                            return;
                        }

                        if (browser.Visible)
                        {
                            close.IsEnabled = true;
                            zoomItem.IsEnabled = true;
                            startOrReload.Header = Resources.screenReload_DE_AT;
                        }
                        else
                        {
                            close.IsEnabled = false;
                            zoomItem.IsEnabled = false;
                            startOrReload.Header = Resources.screenStart_DE_AT;
                            this.windowTimer.Interval = this.windowTimeout;
                            if (!this.windowTimer.Enabled)
                            {
                                this.windowTimer.Start();
                            }
                        }
                    };
                this.geckoBrowsers.Add(geckoBrowser);
                geckoBrowser.StartOrResetBrowser();
                if (!this.disableScreensaverPermanently)
                {
                    Bootstrapper.GetInstance<IPowerManagement>().SetPowerReq(PowerThreadRequirements.HoldSystem);
                }
            }
        }