コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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);
        }