diff --git a/PepperDashEssentials/UIDrivers/Essentials/EssentialsHeaderDriver.cs b/PepperDashEssentials/UIDrivers/Essentials/EssentialsHeaderDriver.cs
index 68d4cbcb..ccaedd9c 100644
--- a/PepperDashEssentials/UIDrivers/Essentials/EssentialsHeaderDriver.cs
+++ b/PepperDashEssentials/UIDrivers/Essentials/EssentialsHeaderDriver.cs
@@ -349,7 +349,7 @@ namespace PepperDash.Essentials
// Check if the popup interlock is shown, and if one of the header popups is current, then show the carets subpage
if (e.IsShown)
{
- if (e.NewJoin == Parent.EnvironmentDriver.BackgroundSubpageJoin)
+ if (Parent.EnvironmentDriver != null && e.NewJoin == Parent.EnvironmentDriver.BackgroundSubpageJoin)
headerPopupShown = true;
else if (e.NewJoin == UIBoolJoin.HeaderActiveCallsListVisible)
headerPopupShown = true;
diff --git a/PepperDashEssentials/UIDrivers/ScreenSaverController.cs b/PepperDashEssentials/UIDrivers/ScreenSaverController.cs
index 1e3f6d22..9f973113 100644
--- a/PepperDashEssentials/UIDrivers/ScreenSaverController.cs
+++ b/PepperDashEssentials/UIDrivers/ScreenSaverController.cs
@@ -18,7 +18,7 @@ namespace PepperDash.Essentials
///
/// The parent driver for this
///
- EssentialsPanelMainInterfaceDriver Parent;
+ private readonly EssentialsPanelMainInterfaceDriver _parent;
CTimer PositionTimer;
@@ -32,34 +32,46 @@ namespace PepperDash.Essentials
public ScreenSaverController(EssentialsPanelMainInterfaceDriver parent, CrestronTouchpanelPropertiesConfig config)
: base(parent.TriList)
{
- Parent = parent;
+ _parent = parent;
PositionTimeoutMs = config.ScreenSaverMovePositionIntervalMs;
- TriList.SetSigFalseAction(UIBoolJoin.MCScreenSaverClosePress, () => this.Hide());
+ PositionJoins = new List() { UIBoolJoin.MCScreenSaverPosition1Visible, UIBoolJoin.MCScreenSaverPosition2Visible, UIBoolJoin.MCScreenSaverPosition3Visible, UIBoolJoin.MCScreenSaverPosition4Visible };
+ var cmdName = String.Format("shwscrsvr-{0}", config.IpId);
+
+ CrestronConsole.AddNewConsoleCommand((o) => Show(), cmdName, "Shows Panel Screensaver", ConsoleAccessLevelEnum.AccessOperator);
+
+ TriList.SetSigFalseAction(UIBoolJoin.MCScreenSaverClosePress, Hide);
}
public override void Show()
{
- TriList.SetBool(UIBoolJoin.MCScreenSaverVisible, true);
- Parent.AvDriver.PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.MCScreenSaverVisible);
- //TriList.SetBool(UIBoolJoin.MCScreenSaverVisible, true);
+ _parent.AvDriver.PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.MCScreenSaverVisible);
CurrentPositionIndex = 0;
SetCurrentPosition();
+ StartPositionTimer();
+
+ base.Show();
+ }
+
+ public override void Hide()
+ {
+ if (PositionTimer != null)
+ {
+ PositionTimer.Stop();
+ PositionTimer.Dispose();
+ PositionTimer = null;
+ }
ClearAllPositions();
- TriList.SetBool(UIBoolJoin.MCScreenSaverVisible, false);
- Parent.AvDriver.PopupInterlock.HideAndClear();
- //TriList.SetBool(UIBoolJoin.MCScreenSaverVisible, false);
+ _parent.AvDriver.PopupInterlock.HideAndClear();
base.Hide();
}
-
-
void StartPositionTimer()
{
if (PositionTimer == null)