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