Working towards getting EssentialsTouchpanelController to switch rooms

This commit is contained in:
Neil Dorin
2021-07-23 17:35:12 -06:00
parent 2db397b474
commit 6542c062b9
4 changed files with 41 additions and 2 deletions

View File

@@ -187,6 +187,12 @@ namespace PepperDash.Essentials.Room.Config
[JsonProperty("zeroVolumeWhenSwtichingVolumeDevices")] [JsonProperty("zeroVolumeWhenSwtichingVolumeDevices")]
public bool ZeroVolumeWhenSwtichingVolumeDevices { get; set; } public bool ZeroVolumeWhenSwtichingVolumeDevices { get; set; }
/// <summary>
/// Indicates if this room represents a combination of other rooms
/// </summary>
[JsonProperty("isRoomCombinationScenario")]
public bool IsRoomCombinationScenario { get; set; }
public EssentialsRoomPropertiesConfig() public EssentialsRoomPropertiesConfig()
{ {
LogoLight = new EssentialsLogoPropertiesConfig(); LogoLight = new EssentialsLogoPropertiesConfig();

View File

@@ -16,6 +16,8 @@ namespace PepperDash.Essentials
{ {
public class EssentialsTouchpanelController : EssentialsDevice, IHasBasicTriListWithSmartObject public class EssentialsTouchpanelController : EssentialsDevice, IHasBasicTriListWithSmartObject
{ {
private CrestronTouchpanelPropertiesConfig _propertiesConfig;
public BasicTriListWithSmartObject Panel { get; private set; } public BasicTriListWithSmartObject Panel { get; private set; }
public PanelDriverBase PanelDriver { get; private set; } public PanelDriverBase PanelDriver { get; private set; }
@@ -50,6 +52,7 @@ namespace PepperDash.Essentials
public EssentialsTouchpanelController(string key, string name, string type, CrestronTouchpanelPropertiesConfig props, uint id) public EssentialsTouchpanelController(string key, string name, string type, CrestronTouchpanelPropertiesConfig props, uint id)
: base(key, name) : base(key, name)
{ {
_propertiesConfig = props;
Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Creating touchpanel hardware..."); Debug.Console(0, this, Debug.ErrorLogLevel.Notice, "Creating touchpanel hardware...");
type = type.ToLower(); type = type.ToLower();
@@ -124,6 +127,36 @@ namespace PepperDash.Essentials
Panel.LoadSmartObjects(sgdName); Panel.LoadSmartObjects(sgdName);
Panel.SigChange += Panel_SigChange; Panel.SigChange += Panel_SigChange;
AddPostActivationAction(() =>
{
// Check for IEssentialsRoomCombiner in DeviceManager and if found, subscribe to its event
var roomCombiner = DeviceManager.AllDevices.FirstOrDefault((d) => d is IEssentialsRoomCombiner) as IEssentialsRoomCombiner;
if (roomCombiner != null)
{
roomCombiner.RoomCombinationScenarioChanged += new EventHandler<EventArgs>(roomCombiner_RoomCombinationScenarioChanged);
}
});
}
void roomCombiner_RoomCombinationScenarioChanged(object sender, EventArgs e)
{
var roomCombiner = sender as IEssentialsRoomCombiner;
string newRoomKey = null;
if (roomCombiner.CurrentScenario.UiMap.ContainsKey(Key))
{
newRoomKey = roomCombiner.CurrentScenario.UiMap[Key];
}
else if (roomCombiner.CurrentScenario.UiMap.ContainsKey(_propertiesConfig.DefaultRoomKey))
{
newRoomKey = roomCombiner.CurrentScenario.UiMap[_propertiesConfig.DefaultRoomKey];
}
// TODO:
} }
public void LoadAndShowDriver(PanelDriverBase driver) public void LoadAndShowDriver(PanelDriverBase driver)

View File

@@ -448,7 +448,7 @@ namespace PepperDash.Essentials
// and the LastMeetingDismissed != this meeting // and the LastMeetingDismissed != this meeting
var lastMeetingDismissed = meetings.FirstOrDefault(m => m.Id == LastMeetingDismissedId); var lastMeetingDismissed = meetings.FirstOrDefault(m => m.Id == LastMeetingDismissedId);
Debug.Console(0, "*#* Room on: {0}, lastMeetingDismissedId: {1} {2} *#*", Debug.Console(1, "*#* Room on: {0}, lastMeetingDismissedId: {1} {2} *#*",
CurrentRoom.OnFeedback.BoolValue, CurrentRoom.OnFeedback.BoolValue,
LastMeetingDismissedId, LastMeetingDismissedId,
lastMeetingDismissed != null ? lastMeetingDismissed.StartTime.ToShortTimeString() : ""); lastMeetingDismissed != null ? lastMeetingDismissed.StartTime.ToShortTimeString() : "");

View File

@@ -30,7 +30,7 @@ namespace PepperDash.Essentials.Core
/// <summary> /// <summary>
/// The list of rooms keys that can be combined /// The list of rooms keys that can be combined
/// </summary> /// </summary>
[JsonProperty("roomMap")] [JsonProperty("roomKeys")]
public List<string> RoomKeys {get; set;} public List<string> RoomKeys {get; set;}
/// <summary> /// <summary>