mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-16 13:15:03 +00:00
feat(RoomCombining): #742 Updates EssentialsTouchpanelController
Will now switch room the TP is linked to based on room combination scenario
This commit is contained in:
@@ -29,7 +29,14 @@ namespace PepperDash.Essentials
|
|||||||
: base(key, name)
|
: base(key, name)
|
||||||
{
|
{
|
||||||
Panel = tsw;
|
Panel = tsw;
|
||||||
tsw.LoadSmartObjects(sgdPath);
|
|
||||||
|
if (!string.IsNullOrEmpty(sgdPath))
|
||||||
|
Panel.LoadSmartObjects(sgdPath);
|
||||||
|
else
|
||||||
|
Debug.Console(1, this, "No SGD file path defined");
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
tsw.SigChange += Panel_SigChange;
|
tsw.SigChange += Panel_SigChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -39,7 +46,7 @@ namespace PepperDash.Essentials
|
|||||||
Panel = dge;
|
Panel = dge;
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(sgdPath))
|
if (!string.IsNullOrEmpty(sgdPath))
|
||||||
dge.LoadSmartObjects(sgdPath);
|
Panel.LoadSmartObjects(sgdPath);
|
||||||
else
|
else
|
||||||
Debug.Console(1, this, "No SGD file path defined");
|
Debug.Console(1, this, "No SGD file path defined");
|
||||||
|
|
||||||
@@ -130,37 +137,191 @@ namespace PepperDash.Essentials
|
|||||||
AddPostActivationAction(() =>
|
AddPostActivationAction(() =>
|
||||||
{
|
{
|
||||||
// Check for IEssentialsRoomCombiner in DeviceManager and if found, subscribe to its event
|
// Check for IEssentialsRoomCombiner in DeviceManager and if found, subscribe to its event
|
||||||
|
|
||||||
var roomCombiner = DeviceManager.AllDevices.FirstOrDefault((d) => d is IEssentialsRoomCombiner) as IEssentialsRoomCombiner;
|
var roomCombiner = DeviceManager.AllDevices.FirstOrDefault((d) => d is IEssentialsRoomCombiner) as IEssentialsRoomCombiner;
|
||||||
|
|
||||||
if (roomCombiner != null)
|
if (roomCombiner != null)
|
||||||
{
|
{
|
||||||
|
// Subscribe to the even
|
||||||
roomCombiner.RoomCombinationScenarioChanged += new EventHandler<EventArgs>(roomCombiner_RoomCombinationScenarioChanged);
|
roomCombiner.RoomCombinationScenarioChanged += new EventHandler<EventArgs>(roomCombiner_RoomCombinationScenarioChanged);
|
||||||
|
|
||||||
|
// Connect to the initial roomKey
|
||||||
|
if (roomCombiner.CurrentScenario != null)
|
||||||
|
{
|
||||||
|
// Use the current scenario
|
||||||
|
DetermineRoomKeyFromScenario(roomCombiner.CurrentScenario);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Current Scenario not yet set. Use default
|
||||||
|
SetupPanelDrivers(_propertiesConfig.DefaultRoomKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// No room combiner, use the default key
|
||||||
|
SetupPanelDrivers(_propertiesConfig.DefaultRoomKey);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void roomCombiner_RoomCombinationScenarioChanged(object sender, EventArgs e)
|
void roomCombiner_RoomCombinationScenarioChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var roomCombiner = sender as IEssentialsRoomCombiner;
|
var roomCombiner = sender as IEssentialsRoomCombiner;
|
||||||
|
|
||||||
|
DetermineRoomKeyFromScenario(roomCombiner.CurrentScenario);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Determines the room key to use based on the scenario
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="scenario"></param>
|
||||||
|
void DetermineRoomKeyFromScenario(IRoomCombinationScenario scenario)
|
||||||
|
{
|
||||||
string newRoomKey = null;
|
string newRoomKey = null;
|
||||||
|
|
||||||
if (roomCombiner.CurrentScenario.UiMap.ContainsKey(Key))
|
if (scenario.UiMap.ContainsKey(Key))
|
||||||
{
|
{
|
||||||
newRoomKey = roomCombiner.CurrentScenario.UiMap[Key];
|
newRoomKey = scenario.UiMap[Key];
|
||||||
}
|
}
|
||||||
else if (roomCombiner.CurrentScenario.UiMap.ContainsKey(_propertiesConfig.DefaultRoomKey))
|
else if (scenario.UiMap.ContainsKey(_propertiesConfig.DefaultRoomKey))
|
||||||
{
|
{
|
||||||
newRoomKey = roomCombiner.CurrentScenario.UiMap[_propertiesConfig.DefaultRoomKey];
|
newRoomKey = scenario.UiMap[_propertiesConfig.DefaultRoomKey];
|
||||||
|
}
|
||||||
|
|
||||||
|
SetupPanelDrivers(newRoomKey);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets up drivers and links them to the room specified
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="roomKey">key of room to link the drivers to</param>
|
||||||
|
void SetupPanelDrivers(string roomKey)
|
||||||
|
{
|
||||||
|
// Clear out any existing actions
|
||||||
|
Panel.ClearAllSigActions();
|
||||||
|
|
||||||
|
Debug.Console(0, this, "Linking TP '{0}' to Room '{1}'", Key, roomKey);
|
||||||
|
|
||||||
|
var mainDriver = new EssentialsPanelMainInterfaceDriver(Panel, _propertiesConfig);
|
||||||
|
// Then the sub drivers
|
||||||
|
|
||||||
|
// spin up different room drivers depending on room type
|
||||||
|
var room = DeviceManager.GetDeviceForKey(roomKey);
|
||||||
|
if (room is IEssentialsHuddleSpaceRoom)
|
||||||
|
{
|
||||||
|
// Screen Saver Driver
|
||||||
|
|
||||||
|
mainDriver.ScreenSaverController = new ScreenSaverController(mainDriver, _propertiesConfig);
|
||||||
|
|
||||||
|
// Header Driver
|
||||||
|
Debug.Console(0, this, "Adding header driver");
|
||||||
|
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, _propertiesConfig);
|
||||||
|
|
||||||
|
// AV Driver
|
||||||
|
Debug.Console(0, this, "Adding huddle space AV driver");
|
||||||
|
var avDriver = new EssentialsHuddlePanelAvFunctionsDriver(mainDriver, _propertiesConfig);
|
||||||
|
avDriver.DefaultRoomKey = roomKey;
|
||||||
|
mainDriver.AvDriver = avDriver;
|
||||||
|
avDriver.CurrentRoom = room as IEssentialsHuddleSpaceRoom;
|
||||||
|
|
||||||
|
// Environment Driver
|
||||||
|
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "Adding environment driver");
|
||||||
|
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, _propertiesConfig);
|
||||||
|
|
||||||
|
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
||||||
|
|
||||||
|
if (Panel is TswFt5ButtonSystem)
|
||||||
|
{
|
||||||
|
var tsw = Panel as TswFt5ButtonSystem;
|
||||||
|
// Wire up hard keys
|
||||||
|
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
||||||
|
if (mainDriver.EnvironmentDriver != null)
|
||||||
|
tsw.Lights.UserObject = new Action<bool>(b =>
|
||||||
|
{
|
||||||
|
if (!b)
|
||||||
|
{
|
||||||
|
mainDriver.EnvironmentDriver.Toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
|
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (room is IEssentialsHuddleVtc1Room)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "Adding huddle space VTC AV driver");
|
||||||
|
|
||||||
|
// Screen Saver Driver
|
||||||
|
mainDriver.ScreenSaverController = new ScreenSaverController(mainDriver, _propertiesConfig);
|
||||||
|
|
||||||
|
// Header Driver
|
||||||
|
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, _propertiesConfig);
|
||||||
|
|
||||||
|
// AV Driver
|
||||||
|
var avDriver = new EssentialsHuddleVtc1PanelAvFunctionsDriver(mainDriver, _propertiesConfig);
|
||||||
|
|
||||||
|
var codecDriver = new PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver(Panel, avDriver,
|
||||||
|
(room as IEssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver);
|
||||||
|
avDriver.SetVideoCodecDriver(codecDriver);
|
||||||
|
avDriver.DefaultRoomKey = roomKey;
|
||||||
|
mainDriver.AvDriver = avDriver;
|
||||||
|
avDriver.CurrentRoom = room as IEssentialsHuddleVtc1Room;
|
||||||
|
|
||||||
|
// Environment Driver
|
||||||
|
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "Adding environment driver");
|
||||||
|
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, _propertiesConfig);
|
||||||
|
|
||||||
|
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
||||||
|
|
||||||
|
|
||||||
|
if (Panel is TswFt5ButtonSystem)
|
||||||
|
{
|
||||||
|
var tsw = Panel as TswFt5ButtonSystem;
|
||||||
|
// Wire up hard keys
|
||||||
|
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.EndMeetingPress(); });
|
||||||
|
if (mainDriver.EnvironmentDriver != null)
|
||||||
|
tsw.Lights.UserObject = new Action<bool>(b =>
|
||||||
|
{
|
||||||
|
if (!b)
|
||||||
|
{
|
||||||
|
mainDriver.EnvironmentDriver.Toggle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
||||||
|
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadAndShowDriver(mainDriver);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(0, this, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", roomKey);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO:
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadAndShowDriver(PanelDriverBase driver)
|
public void LoadAndShowDriver(PanelDriverBase driver)
|
||||||
{
|
{
|
||||||
|
if (PanelDriver != null)
|
||||||
|
{
|
||||||
|
var mainDriver = PanelDriver as EssentialsPanelMainInterfaceDriver;
|
||||||
|
if (mainDriver != null)
|
||||||
|
{
|
||||||
|
mainDriver.Dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
PanelDriver = driver;
|
PanelDriver = driver;
|
||||||
driver.Show();
|
driver.Show();
|
||||||
}
|
}
|
||||||
@@ -171,7 +332,6 @@ namespace PepperDash.Essentials
|
|||||||
PanelDriver.BackButtonPressed();
|
PanelDriver.BackButtonPressed();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ExtenderSystemReservedSigs_DeviceExtenderSigChange(DeviceExtender currentDeviceExtender, SigEventArgs args)
|
void ExtenderSystemReservedSigs_DeviceExtenderSigChange(DeviceExtender currentDeviceExtender, SigEventArgs args)
|
||||||
{
|
{
|
||||||
// If the sig is transitioning on, mark it in case it was home button that transitioned it
|
// If the sig is transitioning on, mark it in case it was home button that transitioned it
|
||||||
@@ -248,119 +408,6 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
var panelController = new EssentialsTouchpanelController(dc.Key, dc.Name, dc.Type, props, comm.IpIdInt);
|
var panelController = new EssentialsTouchpanelController(dc.Key, dc.Name, dc.Type, props, comm.IpIdInt);
|
||||||
|
|
||||||
panelController.AddPostActivationAction(() =>
|
|
||||||
{
|
|
||||||
var mainDriver = new EssentialsPanelMainInterfaceDriver(panelController.Panel, props);
|
|
||||||
// Then the sub drivers
|
|
||||||
|
|
||||||
// spin up different room drivers depending on room type
|
|
||||||
var room = DeviceManager.GetDeviceForKey(props.DefaultRoomKey);
|
|
||||||
if (room is IEssentialsHuddleSpaceRoom)
|
|
||||||
{
|
|
||||||
// Screen Saver Driver
|
|
||||||
mainDriver.ScreenSaverController = new ScreenSaverController(mainDriver, props);
|
|
||||||
|
|
||||||
// Header Driver
|
|
||||||
Debug.Console(0, panelController, "Adding header driver");
|
|
||||||
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
|
||||||
|
|
||||||
// AV Driver
|
|
||||||
Debug.Console(0, panelController, "Adding huddle space AV driver");
|
|
||||||
var avDriver = new EssentialsHuddlePanelAvFunctionsDriver(mainDriver, props);
|
|
||||||
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
|
||||||
mainDriver.AvDriver = avDriver;
|
|
||||||
avDriver.CurrentRoom = room as IEssentialsHuddleSpaceRoom;
|
|
||||||
|
|
||||||
// Environment Driver
|
|
||||||
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
|
||||||
{
|
|
||||||
Debug.Console(0, panelController, "Adding environment driver");
|
|
||||||
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
|
||||||
|
|
||||||
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
|
||||||
}
|
|
||||||
|
|
||||||
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
|
||||||
|
|
||||||
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
|
||||||
|
|
||||||
if (panelController.Panel is TswFt5ButtonSystem)
|
|
||||||
{
|
|
||||||
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
|
||||||
// Wire up hard keys
|
|
||||||
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.PowerButtonPressed(); });
|
|
||||||
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
|
||||||
if (mainDriver.EnvironmentDriver != null)
|
|
||||||
tsw.Lights.UserObject = new Action<bool>(b =>
|
|
||||||
{
|
|
||||||
if (!b)
|
|
||||||
{
|
|
||||||
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
|
||||||
mainDriver.EnvironmentDriver.Toggle();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
|
||||||
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (room is IEssentialsHuddleVtc1Room)
|
|
||||||
{
|
|
||||||
Debug.Console(0, panelController, "Adding huddle space VTC AV driver");
|
|
||||||
|
|
||||||
// Screen Saver Driver
|
|
||||||
mainDriver.ScreenSaverController = new ScreenSaverController(mainDriver, props);
|
|
||||||
|
|
||||||
// Header Driver
|
|
||||||
mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props);
|
|
||||||
|
|
||||||
// AV Driver
|
|
||||||
var avDriver = new EssentialsHuddleVtc1PanelAvFunctionsDriver(mainDriver, props);
|
|
||||||
|
|
||||||
var codecDriver = new PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver(panelController.Panel, avDriver,
|
|
||||||
(room as IEssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver);
|
|
||||||
avDriver.SetVideoCodecDriver(codecDriver);
|
|
||||||
avDriver.DefaultRoomKey = props.DefaultRoomKey;
|
|
||||||
mainDriver.AvDriver = avDriver;
|
|
||||||
avDriver.CurrentRoom = room as IEssentialsHuddleVtc1Room;
|
|
||||||
|
|
||||||
// Environment Driver
|
|
||||||
if (avDriver.CurrentRoom.PropertiesConfig.Environment != null && avDriver.CurrentRoom.PropertiesConfig.Environment.DeviceKeys.Count > 0)
|
|
||||||
{
|
|
||||||
Debug.Console(0, panelController, "Adding environment driver");
|
|
||||||
mainDriver.EnvironmentDriver = new EssentialsEnvironmentDriver(mainDriver, props);
|
|
||||||
|
|
||||||
mainDriver.EnvironmentDriver.GetDevicesFromConfig(avDriver.CurrentRoom.PropertiesConfig.Environment);
|
|
||||||
}
|
|
||||||
|
|
||||||
mainDriver.HeaderDriver.SetupHeaderButtons(avDriver, avDriver.CurrentRoom);
|
|
||||||
|
|
||||||
panelController.LoadAndShowDriver(mainDriver); // This is a little convoluted.
|
|
||||||
|
|
||||||
if (panelController.Panel is TswFt5ButtonSystem)
|
|
||||||
{
|
|
||||||
var tsw = panelController.Panel as TswFt5ButtonSystem;
|
|
||||||
// Wire up hard keys
|
|
||||||
tsw.Power.UserObject = new Action<bool>(b => { if (!b) avDriver.EndMeetingPress(); });
|
|
||||||
//tsw.Home.UserObject = new Action<bool>(b => { if (!b) HomePressed(); });
|
|
||||||
if (mainDriver.EnvironmentDriver != null)
|
|
||||||
tsw.Lights.UserObject = new Action<bool>(b =>
|
|
||||||
{
|
|
||||||
if (!b)
|
|
||||||
{
|
|
||||||
//mainDriver.AvDriver.PopupInterlock.ShowInterlockedWithToggle(mainDriver.EnvironmentDriver.BackgroundSubpageJoin);
|
|
||||||
mainDriver.EnvironmentDriver.Toggle();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress);
|
|
||||||
tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
Debug.Console(0, panelController, "ERROR: Cannot load AvFunctionsDriver for room '{0}'", props.DefaultRoomKey);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
return panelController;
|
return panelController;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class EssentialsPanelMainInterfaceDriver : PanelDriverBase, IHasScreenSaverController
|
public class EssentialsPanelMainInterfaceDriver : PanelDriverBase, IHasScreenSaverController, IDisposable
|
||||||
{
|
{
|
||||||
CTimer InactivityTimer;
|
CTimer InactivityTimer;
|
||||||
|
|
||||||
@@ -69,6 +69,35 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region IDisposable Members
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
var avDriver = AvDriver as PanelDriverBase;
|
||||||
|
if (avDriver != null)
|
||||||
|
{
|
||||||
|
avDriver.Hide();
|
||||||
|
}
|
||||||
|
if (ScreenSaverController != null)
|
||||||
|
{
|
||||||
|
ScreenSaverController.Dispose();
|
||||||
|
}
|
||||||
|
if (HeaderDriver != null)
|
||||||
|
{
|
||||||
|
HeaderDriver.Hide();
|
||||||
|
}
|
||||||
|
if (EnvironmentDriver != null)
|
||||||
|
{
|
||||||
|
EnvironmentDriver.Hide();
|
||||||
|
}
|
||||||
|
if (CurrentChildDriver != null)
|
||||||
|
{
|
||||||
|
CurrentChildDriver.Hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
void ExtenderTouchDetectionReservedSigs_DeviceExtenderSigChange(Crestron.SimplSharpPro.DeviceExtender currentDeviceExtender, Crestron.SimplSharpPro.SigEventArgs args)
|
void ExtenderTouchDetectionReservedSigs_DeviceExtenderSigChange(Crestron.SimplSharpPro.DeviceExtender currentDeviceExtender, Crestron.SimplSharpPro.SigEventArgs args)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Driver responsible for controlling the screenshaver showing the client logo, MC connection information and QR Code. Moves the elements around to prevent screen burn in
|
/// Driver responsible for controlling the screenshaver showing the client logo, MC connection information and QR Code. Moves the elements around to prevent screen burn in
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ScreenSaverController : PanelDriverBase
|
public class ScreenSaverController : PanelDriverBase, IDisposable
|
||||||
{
|
{
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -65,7 +65,7 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
public override void Hide()
|
public override void Hide()
|
||||||
{
|
{
|
||||||
Debug.Console(1, "Hiding ScreenSaverController");
|
Debug.Console(2, "Hiding ScreenSaverController");
|
||||||
|
|
||||||
if (PositionTimer != null)
|
if (PositionTimer != null)
|
||||||
{
|
{
|
||||||
@@ -117,7 +117,7 @@ namespace PepperDash.Essentials
|
|||||||
CurrentPositionIndex = 0;
|
CurrentPositionIndex = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug.Console(1, "ScreenSaver Position Timer Expired: Setting new position: {0}", CurrentPositionIndex);
|
//Debug.Console(2, "ScreenSaver Position Timer Expired: Setting new position: {0}", CurrentPositionIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -129,9 +129,18 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
void ClearAllPositions()
|
void ClearAllPositions()
|
||||||
{
|
{
|
||||||
Debug.Console(1, "Hiding all screensaver positions");
|
Debug.Console(2, "Hiding all screensaver positions");
|
||||||
PositionInterlock.HideAndClear();
|
PositionInterlock.HideAndClear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region IDisposable Members
|
||||||
|
|
||||||
|
public void Dispose()
|
||||||
|
{
|
||||||
|
Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -167,7 +167,7 @@ namespace PepperDash.Essentials.Core
|
|||||||
{
|
{
|
||||||
return _currentScenario;
|
return _currentScenario;
|
||||||
}
|
}
|
||||||
set
|
private set
|
||||||
{
|
{
|
||||||
if (value != _currentScenario)
|
if (value != _currentScenario)
|
||||||
{
|
{
|
||||||
@@ -227,9 +227,11 @@ namespace PepperDash.Essentials.Core
|
|||||||
// Get the scenario
|
// Get the scenario
|
||||||
var scenario = RoomCombinationScenarios.FirstOrDefault((s) => s.Key.Equals(scenarioKey));
|
var scenario = RoomCombinationScenarios.FirstOrDefault((s) => s.Key.Equals(scenarioKey));
|
||||||
|
|
||||||
|
|
||||||
// Set the parition states from the scenario manually
|
// Set the parition states from the scenario manually
|
||||||
if (scenario != null)
|
if (scenario != null)
|
||||||
{
|
{
|
||||||
|
Debug.Console(0, this, "Manually setting scenario to '{0}'", scenario.Key);
|
||||||
foreach (var partitionState in scenario.PartitionStates)
|
foreach (var partitionState in scenario.PartitionStates)
|
||||||
{
|
{
|
||||||
var partition = Partitions.FirstOrDefault((p) => p.Key.Equals(partitionState.PartitionKey));
|
var partition = Partitions.FirstOrDefault((p) => p.Key.Equals(partitionState.PartitionKey));
|
||||||
@@ -238,16 +240,26 @@ namespace PepperDash.Essentials.Core
|
|||||||
{
|
{
|
||||||
if (partitionState.PartitionPresent)
|
if (partitionState.PartitionPresent)
|
||||||
{
|
{
|
||||||
|
Debug.Console(0, this, "Manually setting state to Present for: '{0}'", partition.Key);
|
||||||
partition.SetPartitionStatePresent();
|
partition.SetPartitionStatePresent();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
Debug.Console(0, this, "Manually setting state to Not Present for: '{0}'", partition.Key);
|
||||||
partition.SetPartitionStateNotPresent();
|
partition.SetPartitionStateNotPresent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Unable to find partition with key: '{0}'", partitionState.PartitionKey);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Unable to find scenario with key: '{0}'", scenarioKey);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -206,6 +206,27 @@ namespace PepperDash.Essentials.Core
|
|||||||
return ClearSigAction(tl.StringOutput[sigNum]) as StringOutputSig;
|
return ClearSigAction(tl.StringOutput[sigNum]) as StringOutputSig;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clears all actions on all sigs
|
||||||
|
/// </summary>
|
||||||
|
public static void ClearAllSigActions(this BasicTriList t1)
|
||||||
|
{
|
||||||
|
foreach (var sig in t1.BooleanOutput)
|
||||||
|
{
|
||||||
|
ClearSigAction(sig);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var sig in t1.UShortOutput)
|
||||||
|
{
|
||||||
|
ClearSigAction(sig);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var sig in t1.StringOutput)
|
||||||
|
{
|
||||||
|
ClearSigAction(sig);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Helper method to set the value of a bool Sig on TriList
|
/// Helper method to set the value of a bool Sig on TriList
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user