diff --git a/PepperDashEssentials/PepperDashEssentials.suo b/PepperDashEssentials/PepperDashEssentials.suo index 8d10a0b8..1a0ac3cb 100644 Binary files a/PepperDashEssentials/PepperDashEssentials.suo and b/PepperDashEssentials/PepperDashEssentials.suo differ diff --git a/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj index e33e3d6c..935dea2e 100644 --- a/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj +++ b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.csproj @@ -154,6 +154,7 @@ + diff --git a/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.projectinfo b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.projectinfo index 2b2b6126..a2f59e4e 100644 Binary files a/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.projectinfo and b/PepperDashEssentials/PepperDashEssentials/PepperDashEssentials.projectinfo differ diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/DualDisplayRouting.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/DualDisplayRouting.cs new file mode 100644 index 00000000..8cac25f2 --- /dev/null +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/DualDisplayRouting.cs @@ -0,0 +1,124 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Crestron.SimplSharp; +using Crestron.SimplSharpPro; +using Crestron.SimplSharpPro.DeviceSupport; +using PepperDash.Core; +using PepperDash.Essentials.Core; +using PepperDash.Essentials.Core.SmartObjects; +using PepperDash.Essentials.Core.PageManagers; + +namespace PepperDash.Essentials +{ + public class DualDisplayRouting : PanelDriverBase + { + //public BoolFeedback Display1AudioButtonEnable { get; private set; } + //bool _Display1AudioButtonEnable; + //public BoolFeedback Display1AudioButtonFeedback { get; private set; } + //bool _Display1AudioButtonFeedback; + //public BoolFeedback Display1ControlButtonEnable { get; private set; } + //bool _Display1ControlButtonEnable; + //public BoolFeedback Display2AudioButtonEnable { get; private set; } + //bool _Display2AudioButtonEnable; + //public BoolFeedback Display2AudioButtonFeedback { get; private set; } + //bool _Display2AudioButtonFeedback; + //public BoolFeedback Display2ControlButtonEnable { get; private set; } + //bool _Display2ControlButtonEnable; + //public BoolFeedback DualDisplayRoutingVisible { get; private set; } + //bool _DualDisplayRoutingVisible; + + CTimer SourceSelectedTimer; + + public DualDisplayRouting(BasicTriListWithSmartObject trilist) : base(trilist) + { + //Display1AudioButtonEnable = new BoolFeedback(() => _Display1AudioButtonEnable); + //Display1AudioButtonFeedback = new BoolFeedback(() => _Display1AudioButtonFeedback); + TriList.SetSigFalseAction(UIBoolJoin.Display1AudioButtonPressAndFb, Display1AudioPress); + + //Display1ControlButtonEnable = new BoolFeedback(() => _Display1ControlButtonEnable); + TriList.SetSigFalseAction(UIBoolJoin.Display1ControlButtonPress, Display1ControlPress); + + TriList.SetSigFalseAction(UIBoolJoin.Display1SelectPress, Display1Press); + + //Display2AudioButtonEnable = new BoolFeedback(() => _Display2AudioButtonEnable); + //Display2AudioButtonFeedback = new BoolFeedback(() => _Display2AudioButtonFeedback); + TriList.SetSigFalseAction(UIBoolJoin.Display2AudioButtonPressAndFb, Display2AudioPress); + + //Display2ControlButtonEnable = new BoolFeedback(() => _Display2ControlButtonEnable); + TriList.SetSigFalseAction(UIBoolJoin.Display2ControlButtonPress, Display2ControlPress); + + TriList.SetSigFalseAction(UIBoolJoin.Display2SelectPress, Display2Press); + + //DualDisplayRoutingVisible = new BoolFeedback(() => _DualDisplayRoutingVisible); + } + + public void Enable() + { + // attach to the source list SRL + } + + public override void Show() + { + TriList.BooleanInput[UIBoolJoin.DualDisplayPageVisible].BoolValue = true; + base.Show(); + } + + public override void Hide() + { + TriList.BooleanInput[UIBoolJoin.DualDisplayPageVisible].BoolValue = false; + + base.Hide(); + } + + + public void SourceListButtonPress(SourceListItem item) + { + // start the timer + // show FB on potential source + TriList.BooleanInput[UIBoolJoin.Display1AudioButtonEnable].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = false; + } + + void EnableAppropriateDisplayButtons() + { + TriList.BooleanInput[UIBoolJoin.Display1AudioButtonEnable].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.Display1ControlButtonEnable].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.Display2AudioButtonEnable].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.Display2ControlButtonEnable].BoolValue = true; + } + + public void Display1Press() + { + EnableAppropriateDisplayButtons(); + } + + public void Display1AudioPress() + { + + } + + public void Display1ControlPress() + { + + } + + public void Display2Press() + { + EnableAppropriateDisplayButtons(); + } + + public void Display2AudioPress() + { + + } + + public void Display2ControlPress() + { + + } + } +} \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs index c2cb14bf..3a9c37c4 100644 --- a/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsHuddlePanelAvFunctionsDriver.cs @@ -164,11 +164,11 @@ namespace PepperDash.Essentials // One-second pulse extender for volume gauge VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500); VolumeGaugeFeedback.Feedback - .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisbible]); + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisible]); VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000); VolumeButtonsPopupFeedback.Feedback - .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisbible]); + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]); PowerOffTimeout = 30000; } diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPresentationPanelAvFunctionsDriver.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPresentationPanelAvFunctionsDriver.cs index 2c13d9d9..6245798d 100644 --- a/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPresentationPanelAvFunctionsDriver.cs +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/EssentialsPresentationPanelAvFunctionsDriver.cs @@ -102,6 +102,11 @@ namespace PepperDash.Essentials /// PanelDriverBase Parent; + /// + /// Driver that manages advanced sharing features + /// + DualDisplayRouting DualDisplayUiDriver; + /// /// All children attached to this driver. For hiding and showing as a group. /// @@ -141,6 +146,8 @@ namespace PepperDash.Essentials /// CTimer PowerOffTimer; + bool IsSharingModeAdvanced; + /// /// Constructor /// @@ -160,11 +167,11 @@ namespace PepperDash.Essentials // One-second pulse extender for volume gauge VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500); VolumeGaugeFeedback.Feedback - .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisbible]); + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisible]); VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000); VolumeButtonsPopupFeedback.Feedback - .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisbible]); + .LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]); PowerOffTimeout = 30000; } @@ -235,6 +242,7 @@ namespace PepperDash.Essentials TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false; + TriList.BooleanInput[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false; VolumeButtonsPopupFeedback.ClearNow(); CancelPowerOff(); @@ -280,11 +288,59 @@ namespace PepperDash.Essentials TriList.BooleanInput[UIBoolJoin.TimeOnlyVisible].BoolValue = Config.ShowTime; } + TriList.SetSigFalseAction(UIBoolJoin.ToggleSharingModePress, ToggleSharingModePressed); + ShowCurrentDisplayModeSigsInUse(); break; } } + /// + /// + /// + void ToggleSharingModePressed() + { + HideSharingMode(); + IsSharingModeAdvanced = !IsSharingModeAdvanced; + TriList.BooleanInput[UIBoolJoin.ToggleSharingModePress].BoolValue = IsSharingModeAdvanced; + RevealSharingMode(); + } + + /// + /// + /// + void HideSharingMode() + { + TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false; + if (IsSharingModeAdvanced) + { + if (DualDisplayUiDriver != null) + DualDisplayUiDriver.Hide(); + } + else + { + TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false; + } + } + + /// + /// + /// + void RevealSharingMode() + { + TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = true; + if (IsSharingModeAdvanced) + { + if(DualDisplayUiDriver == null) + DualDisplayUiDriver = new DualDisplayRouting(TriList); + DualDisplayUiDriver.Show(); + } + else + { + TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = true; + } + } + /// /// When the room is off, set the footer SRL /// @@ -326,8 +382,8 @@ namespace PepperDash.Essentials { ShareButtonSig.BoolValue = true; TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false; - TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = true; - TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = true; + TriList.BooleanInput[UIBoolJoin.ToggleSharingModeVisible].BoolValue = true; + RevealSharingMode(); } } @@ -433,7 +489,12 @@ namespace PepperDash.Essentials /// The key name of the route to run void UiSelectSource(SourceListItem sourceItem) { - CurrentRoom.DoSourceToAllDestinationsRoute(sourceItem); + if (IsSharingModeAdvanced) + { + DualDisplayUiDriver.SourceListButtonPress(sourceItem); + } + else + CurrentRoom.DoSourceToAllDestinationsRoute(sourceItem); } /// diff --git a/PepperDashEssentials/PepperDashEssentials/UI Drivers/UIJoins.cs b/PepperDashEssentials/PepperDashEssentials/UI Drivers/UIJoins.cs index da6e6674..77a7c42c 100644 --- a/PepperDashEssentials/PepperDashEssentials/UI Drivers/UIJoins.cs +++ b/PepperDashEssentials/PepperDashEssentials/UI Drivers/UIJoins.cs @@ -101,15 +101,35 @@ namespace PepperDash.Essentials public const uint PowerOffCancelPress = 15033; public const uint PowerOffConfirmPress = 15034; public const uint VolumeButtonPopupPress = 15035; - public const uint VolumeButtonPopupVisbible = 15035; - public const uint VolumeGaugePopupVisbible = 15036; + public const uint VolumeButtonPopupVisible = 15035; + public const uint VolumeGaugePopupVisible = 15036; public const uint CallStatusPageVisible = 15040; - public const uint LightsPageVisbible = 15041; + public const uint LightsPageVisible = 15041; /// /// 15042 Closes whichever interlocked modal is open /// public const uint InterlockedModalClosePress = 15042; + public const uint Display1SelectPress = 15051; + public const uint Display1ControlButtonEnable = 15052; + public const uint Display1ControlButtonPress = 15053; + public const uint Display1AudioButtonEnable = 15054; + public const uint Display1AudioButtonPressAndFb = 15055; + public const uint Display2SelectPress = 15056; + public const uint Display2ControlButtonEnable = 15057; + public const uint Display2ControlButtonPress = 15058; + public const uint Display2AudioButtonEnable = 15059; + public const uint Display2AudioButtonPressAndFb = 15060; + + /// + /// 15061 Reveals the dual-display subpage + /// + public const uint DualDisplayPageVisible = 15061; + public const uint ToggleSharingModeVisible = 15062; + public const uint ToggleSharingModePress = 15063; + + + /// /// 15085 Visibility join for help subpage /// @@ -159,5 +179,22 @@ namespace PepperDash.Essentials public const uint PowerOffMessage = 3911; public const uint StartPageMessage = 3912; public const uint HelpMessage = 3922; + + /// + /// 3961 Name of source on display 1 + /// + public const uint Display1SourceLabel = 3961; + /// + /// 3962 Title above display 1 + /// + public const uint Display1TitleLabel = 3962; + /// + /// 3964 Name of source on display 2 + /// + public const uint Display2SourceLabel = 3964; + /// + /// 3965 Title above display 2 + /// + public const uint Display2TitleLabel = 3965; } } \ No newline at end of file diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.cpz b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.cpz index 8bbc8d20..df7f93bd 100644 Binary files a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.cpz and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.cpz differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll index 66c5fe24..3678a8bc 100644 Binary files a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.pdb b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.pdb index 1c0df4ea..bbd9497e 100644 Binary files a/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.pdb and b/PepperDashEssentials/PepperDashEssentials/bin/PepperDashEssentials.pdb differ diff --git a/PepperDashEssentials/PepperDashEssentials/bin/ProgramInfo.config b/PepperDashEssentials/PepperDashEssentials/bin/ProgramInfo.config index 6fcfeff4..c8a1117c 100644 --- a/PepperDashEssentials/PepperDashEssentials/bin/ProgramInfo.config +++ b/PepperDashEssentials/PepperDashEssentials/bin/ProgramInfo.config @@ -10,8 +10,8 @@ - 2/13/2017 5:26:41 PM - 1.0.0.31399 + 2/14/2017 11:24:21 AM + 1.0.0.20529 Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10 diff --git a/PepperDashEssentials/PepperDashEssentials/bin/manifest.info b/PepperDashEssentials/PepperDashEssentials/bin/manifest.info index 30ea946f..555fc5a0 100644 --- a/PepperDashEssentials/PepperDashEssentials/bin/manifest.info +++ b/PepperDashEssentials/PepperDashEssentials/bin/manifest.info @@ -1,4 +1,4 @@ -MainAssembly=PepperDashEssentials.dll:7af4e6d55a20dd121757619674d8ae00 +MainAssembly=PepperDashEssentials.dll:0ec9394c958b83119e9ba457828c9bd0 MainAssemblyMinFirmwareVersion=1.009.0029 MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e ü diff --git a/PepperDashEssentials/PepperDashEssentials/bin/manifest.ser b/PepperDashEssentials/PepperDashEssentials/bin/manifest.ser index a268915a..ce187141 100644 Binary files a/PepperDashEssentials/PepperDashEssentials/bin/manifest.ser and b/PepperDashEssentials/PepperDashEssentials/bin/manifest.ser differ diff --git a/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.dll b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.dll index b8ca3308..7285fc20 100644 Binary files a/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.dll and b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.dll differ diff --git a/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.pdb b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.pdb index 260bac89..85d944c1 100644 Binary files a/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.pdb and b/PepperDashEssentials/PepperDashEssentials/obj/Debug/PepperDashEssentials.pdb differ