/// <summary> /// Sets up Header Buttons for the EssentialsHuddleVtc1Room type /// </summary> public void SetupHeaderButtons(EssentialsHuddleVtc1PanelAvFunctionsDriver avDriver, EssentialsHuddleVtc1Room currentRoom) { HeaderButtonsAreSetUp = false; TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true); var roomConf = currentRoom.PropertiesConfig; // Register for the PopupInterlock IsShowsFeedback event to tie the header carets subpage visiblity to it Parent.AvDriver.PopupInterlock.StatusChanged -= PopupInterlock_StatusChanged; Parent.AvDriver.PopupInterlock.StatusChanged += PopupInterlock_StatusChanged; SetUpGear(avDriver, currentRoom); SetUpHelpButton(roomConf); uint nextJoin = 3953; nextJoin = SetUpEnvironmentButton(Parent.EnvironmentDriver, nextJoin); nextJoin = SetUpCalendarButton(avDriver, nextJoin); nextJoin = SetUpCallButton(avDriver, nextJoin); // blank any that remain for (var i = nextJoin; i > 3950; i--) { TriList.SetString(i, "Blank"); TriList.SetSigFalseAction(i, () => { }); } TriList.SetSigFalseAction(UIBoolJoin.HeaderCallStatusLabelPress, () => { avDriver.ShowActiveCallsList(); if (avDriver.CurrentRoom.InCallFeedback.BoolValue) { CaretInterlock.ShowInterlocked(CallCaretVisible); } }); // Set Call Status Subpage Position if (nextJoin == 3951) { // Set to right position TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, false); TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, true); } else if (nextJoin == 3950) { // Set to left position TriList.SetBool(UIBoolJoin.HeaderCallStatusLeftPositionVisible, true); TriList.SetBool(UIBoolJoin.HeaderCallStatusRightPositionVisible, false); } HeaderButtonsAreSetUp = true; ComputeHeaderCallStatus(currentRoom.VideoCodec); }
uint SetUpCallButton(EssentialsHuddleVtc1PanelAvFunctionsDriver avDriver, uint nextJoin) { // Call button var tempJoin = nextJoin; TriList.SetString(tempJoin, "DND"); CallCaretVisible = tempJoin + 10; TriList.SetSigFalseAction(tempJoin, () => { avDriver.ShowActiveCallsList(); if (avDriver.CurrentRoom.InCallFeedback.BoolValue) { CaretInterlock.ShowInterlocked(CallCaretVisible); } }); HeaderCallButtonIconSig = TriList.StringInput[tempJoin]; nextJoin--; return(nextJoin); }
uint SetUpCalendarButton(EssentialsHuddleVtc1PanelAvFunctionsDriver avDriver, uint nextJoin) { // Calendar button if (avDriver.CurrentRoom.ScheduleSource != null) { var tempJoin = nextJoin; TriList.SetString(tempJoin, "Calendar"); CalendarCaretVisible = tempJoin + 10; TriList.SetSigFalseAction(tempJoin, () => { avDriver.CalendarPress(); CaretInterlock.ShowInterlocked(CalendarCaretVisible); }); nextJoin--; return(nextJoin); } else { return(nextJoin); } }
public override EssentialsDevice BuildDevice(DeviceConfig dc) { var comm = CommFactory.GetControlPropertiesConfig(dc); var props = Newtonsoft.Json.JsonConvert.DeserializeObject <CrestronTouchpanelPropertiesConfig>(dc.Properties.ToString()); Debug.Console(1, "Factory Attempting to create new Generic Comm Device"); 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 EssentialsHuddleSpaceRoom) { // 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 EssentialsHuddleSpaceRoom; // 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 EssentialsHuddleVtc1Room) { Debug.Console(0, panelController, "Adding huddle space VTC AV driver"); // 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 EssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver); avDriver.SetVideoCodecDriver(codecDriver); avDriver.DefaultRoomKey = props.DefaultRoomKey; mainDriver.AvDriver = avDriver; avDriver.CurrentRoom = room as EssentialsHuddleVtc1Room; // 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); }
public static IKeyed GetUiDevice(DeviceConfig config) { var comm = CommFactory.GetControlPropertiesConfig(config); var typeName = config.Type.ToLower(); EssentialsTouchpanelController panelController = null; var props = JsonConvert.DeserializeObject <CrestronTouchpanelPropertiesConfig>(config.Properties.ToString()); if (typeName.Contains("dge")) { Dge100 dgeDevice = null; if (typeName == "dge100") { dgeDevice = new Dge100(comm.IpIdInt, Global.ControlSystem); } else if (typeName == "dmdge200c") { dgeDevice = new DmDge200C(comm.IpIdInt, Global.ControlSystem); } if (dgeDevice == null) { Debug.Console(1, "Unable to create DGE device"); return(null); } var dgeController = new DgeController(config.Key + "-comPorts", config.Name, dgeDevice, config, props); DeviceManager.AddDevice(dgeController); panelController = new EssentialsTouchpanelController(config.Key, config.Name, dgeController.DigitalGraphicsEngine, props.ProjectName, props.SgdFile); } else { panelController = new EssentialsTouchpanelController(config.Key, config.Name, config.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 EssentialsHuddleSpaceRoom) { // 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 EssentialsHuddleSpaceRoom; // 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 EssentialsPresentationRoom) //{ // Debug.Console(0, panelController, "Adding presentation room driver"); // var avDriver = new EssentialsPresentationPanelAvFunctionsDriver(mainDriver, props); // avDriver.CurrentRoom = room as EssentialsPresentationRoom; // avDriver.DefaultRoomKey = props.DefaultRoomKey; // mainDriver.AvDriver = avDriver ; // mainDriver.HeaderDriver = new EssentialsHeaderDriver(mainDriver, props); // panelController.LoadAndShowDriver(mainDriver); // 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(); }); // tsw.Up.UserObject = new Action<bool>(avDriver.VolumeUpPress); // tsw.Down.UserObject = new Action<bool>(avDriver.VolumeDownPress); // } //} else if (room is EssentialsHuddleVtc1Room) { Debug.Console(0, panelController, "Adding huddle space VTC AV driver"); // 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 EssentialsHuddleVtc1Room).VideoCodec, mainDriver.HeaderDriver); avDriver.SetVideoCodecDriver(codecDriver); avDriver.DefaultRoomKey = props.DefaultRoomKey; mainDriver.AvDriver = avDriver; avDriver.CurrentRoom = room as EssentialsHuddleVtc1Room; // 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); }