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)