From c6dab1fe9a19225bf25a2c8a4cc90ebd932641fb Mon Sep 17 00:00:00 2001 From: Andrew Welker Date: Fri, 28 Aug 2020 12:02:53 -0600 Subject: [PATCH] added SO event handler --- .../VC/EssentialsVideoCodecUiDriver.cs | 33 ++++++++++++++----- 1 file changed, 24 insertions(+), 9 deletions(-) diff --git a/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs b/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs index 8b0f5ef4..0c219426 100644 --- a/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs +++ b/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Text; using System.Text.RegularExpressions; using Crestron.SimplSharp; +using Crestron.SimplSharpPro; using Crestron.SimplSharpPro.DeviceSupport; using PepperDash.Core; @@ -583,21 +584,24 @@ namespace PepperDash.Essentials.UIDrivers.VC { //CameraSelectList = new SmartObjectDynamicList(TriList.SmartObjects[UISmartObjectJoin.VCCameraSelect], true, 0); + var so = TriList.SmartObjects[UISmartObjectJoin.VCCameraSelect]; + + so.SigChange += SmartObject_SigChange; for (uint i = 1; i <= camerasCodec.Cameras.Count; i++) { var cameraKey = camerasCodec.Cameras[(int)i - 1].Key; - Debug.Console(1, "Setting up action for Camera {0} with Key: {1}", i, cameraKey); + Debug.Console(1, "Setting up action for Camera {0} with Key: {1} for button Item {0} Pressed", i, cameraKey); //TODO: Fix camera selection action. For some reson this action doesn't execute when the buttons are pressed - TriList.SmartObjects[UISmartObjectJoin.VCCameraSelect].BooleanOutput[string.Format("Item {0} Pressed", i)].SetSigFalseAction( - () => - { - camerasCodec.SelectCamera(cameraKey); - }); + + var sig = so.BooleanOutput[String.Format("Item {0} Pressed", i)]; + + so.BooleanOutput[string.Format("Item {0} Pressed", i)].SetSigFalseAction( + () => camerasCodec.SelectCamera(cameraKey)); } - TriList.SmartObjects[UISmartObjectJoin.VCCameraSelect].UShortInput["Set Number of Items"].UShortValue = (ushort)camerasCodec.Cameras.Count; + so.UShortInput["Set Number of Items"].UShortValue = (ushort)camerasCodec.Cameras.Count; //TriList.SmartObjects[UISmartObjectJoin.VCCameraSelect].UShortOutput["Item Clicked"].SetUShortSigAction( // (u) => // { @@ -610,11 +614,11 @@ namespace PepperDash.Essentials.UIDrivers.VC // Set the names for the cameras for (int i = 1; i <= camerasCodec.Cameras.Count; i++) { - TriList.SmartObjects[UISmartObjectJoin.VCCameraSelect].StringInput[string.Format("Set Item {0} Text", i)].StringValue = camerasCodec.Cameras[i - 1].Name; + so.StringInput[string.Format("Set Item {0} Text", i)].StringValue = camerasCodec.Cameras[i - 1].Name; } SetCameraSelectedFeedback(); - camerasCodec.CameraSelected += new EventHandler(camerasCodec_CameraSelected); + camerasCodec.CameraSelected += camerasCodec_CameraSelected; MapCameraActions(); } @@ -622,6 +626,17 @@ namespace PepperDash.Essentials.UIDrivers.VC } + void SmartObject_SigChange(GenericBase currentDevice, SmartObjectEventArgs args) + { + var uo = args.Sig.UserObject; + if (uo is Action) + (uo as Action)(args.Sig.BoolValue); + else if (uo is Action) + (uo as Action)(args.Sig.UShortValue); + else if (uo is Action) + (uo as Action)(args.Sig.StringValue); + } + void VCControlsInterlock_StatusChanged(object sender, StatusChangedEventArgs e) { // Need to hide the camera mode interlock if the mode bar gets hidden