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