mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +00:00
Even more basic dual-display workflow
This commit is contained in:
Binary file not shown.
@@ -154,6 +154,7 @@
|
|||||||
<Compile Include="FOR REFERENCE UI\PageControllers\LargeTouchpanelControllerBase.cs" />
|
<Compile Include="FOR REFERENCE UI\PageControllers\LargeTouchpanelControllerBase.cs" />
|
||||||
<Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.cs" />
|
<Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.cs" />
|
||||||
<Compile Include="Room\VolumeAndSourceChangeArgs.cs" />
|
<Compile Include="Room\VolumeAndSourceChangeArgs.cs" />
|
||||||
|
<Compile Include="UI Drivers\DualDisplayRouting.cs" />
|
||||||
<Compile Include="UI Drivers\EssentialsPresentationPanelAvFunctionsDriver.cs" />
|
<Compile Include="UI Drivers\EssentialsPresentationPanelAvFunctionsDriver.cs" />
|
||||||
<Compile Include="UI Drivers\SingleSubpageModalDriver.cs" />
|
<Compile Include="UI Drivers\SingleSubpageModalDriver.cs" />
|
||||||
<Compile Include="UI Drivers\EssentialsPanelMainInterfaceDriver.cs" />
|
<Compile Include="UI Drivers\EssentialsPanelMainInterfaceDriver.cs" />
|
||||||
|
|||||||
Binary file not shown.
@@ -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()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -164,11 +164,11 @@ namespace PepperDash.Essentials
|
|||||||
// One-second pulse extender for volume gauge
|
// One-second pulse extender for volume gauge
|
||||||
VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500);
|
VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500);
|
||||||
VolumeGaugeFeedback.Feedback
|
VolumeGaugeFeedback.Feedback
|
||||||
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisbible]);
|
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisible]);
|
||||||
|
|
||||||
VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000);
|
VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000);
|
||||||
VolumeButtonsPopupFeedback.Feedback
|
VolumeButtonsPopupFeedback.Feedback
|
||||||
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisbible]);
|
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]);
|
||||||
|
|
||||||
PowerOffTimeout = 30000;
|
PowerOffTimeout = 30000;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -102,6 +102,11 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
PanelDriverBase Parent;
|
PanelDriverBase Parent;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Driver that manages advanced sharing features
|
||||||
|
/// </summary>
|
||||||
|
DualDisplayRouting DualDisplayUiDriver;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// All children attached to this driver. For hiding and showing as a group.
|
/// All children attached to this driver. For hiding and showing as a group.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -141,6 +146,8 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
CTimer PowerOffTimer;
|
CTimer PowerOffTimer;
|
||||||
|
|
||||||
|
bool IsSharingModeAdvanced;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Constructor
|
/// Constructor
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -160,11 +167,11 @@ namespace PepperDash.Essentials
|
|||||||
// One-second pulse extender for volume gauge
|
// One-second pulse extender for volume gauge
|
||||||
VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500);
|
VolumeGaugeFeedback = new BoolFeedbackPulseExtender(1500);
|
||||||
VolumeGaugeFeedback.Feedback
|
VolumeGaugeFeedback.Feedback
|
||||||
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisbible]);
|
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeGaugePopupVisible]);
|
||||||
|
|
||||||
VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000);
|
VolumeButtonsPopupFeedback = new BoolFeedbackPulseExtender(4000);
|
||||||
VolumeButtonsPopupFeedback.Feedback
|
VolumeButtonsPopupFeedback.Feedback
|
||||||
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisbible]);
|
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VolumeButtonPopupVisible]);
|
||||||
|
|
||||||
PowerOffTimeout = 30000;
|
PowerOffTimeout = 30000;
|
||||||
}
|
}
|
||||||
@@ -235,6 +242,7 @@ namespace PepperDash.Essentials
|
|||||||
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false;
|
||||||
|
TriList.BooleanInput[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false;
|
||||||
VolumeButtonsPopupFeedback.ClearNow();
|
VolumeButtonsPopupFeedback.ClearNow();
|
||||||
CancelPowerOff();
|
CancelPowerOff();
|
||||||
|
|
||||||
@@ -280,11 +288,59 @@ namespace PepperDash.Essentials
|
|||||||
TriList.BooleanInput[UIBoolJoin.TimeOnlyVisible].BoolValue = Config.ShowTime;
|
TriList.BooleanInput[UIBoolJoin.TimeOnlyVisible].BoolValue = Config.ShowTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TriList.SetSigFalseAction(UIBoolJoin.ToggleSharingModePress, ToggleSharingModePressed);
|
||||||
|
|
||||||
ShowCurrentDisplayModeSigsInUse();
|
ShowCurrentDisplayModeSigsInUse();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
void ToggleSharingModePressed()
|
||||||
|
{
|
||||||
|
HideSharingMode();
|
||||||
|
IsSharingModeAdvanced = !IsSharingModeAdvanced;
|
||||||
|
TriList.BooleanInput[UIBoolJoin.ToggleSharingModePress].BoolValue = IsSharingModeAdvanced;
|
||||||
|
RevealSharingMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
void HideSharingMode()
|
||||||
|
{
|
||||||
|
TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false;
|
||||||
|
if (IsSharingModeAdvanced)
|
||||||
|
{
|
||||||
|
if (DualDisplayUiDriver != null)
|
||||||
|
DualDisplayUiDriver.Hide();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// When the room is off, set the footer SRL
|
/// When the room is off, set the footer SRL
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -326,8 +382,8 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
ShareButtonSig.BoolValue = true;
|
ShareButtonSig.BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = true;
|
TriList.BooleanInput[UIBoolJoin.ToggleSharingModeVisible].BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = true;
|
RevealSharingMode();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -433,7 +489,12 @@ namespace PepperDash.Essentials
|
|||||||
/// <param name="key">The key name of the route to run</param>
|
/// <param name="key">The key name of the route to run</param>
|
||||||
void UiSelectSource(SourceListItem sourceItem)
|
void UiSelectSource(SourceListItem sourceItem)
|
||||||
{
|
{
|
||||||
CurrentRoom.DoSourceToAllDestinationsRoute(sourceItem);
|
if (IsSharingModeAdvanced)
|
||||||
|
{
|
||||||
|
DualDisplayUiDriver.SourceListButtonPress(sourceItem);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
CurrentRoom.DoSourceToAllDestinationsRoute(sourceItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -101,15 +101,35 @@ namespace PepperDash.Essentials
|
|||||||
public const uint PowerOffCancelPress = 15033;
|
public const uint PowerOffCancelPress = 15033;
|
||||||
public const uint PowerOffConfirmPress = 15034;
|
public const uint PowerOffConfirmPress = 15034;
|
||||||
public const uint VolumeButtonPopupPress = 15035;
|
public const uint VolumeButtonPopupPress = 15035;
|
||||||
public const uint VolumeButtonPopupVisbible = 15035;
|
public const uint VolumeButtonPopupVisible = 15035;
|
||||||
public const uint VolumeGaugePopupVisbible = 15036;
|
public const uint VolumeGaugePopupVisible = 15036;
|
||||||
public const uint CallStatusPageVisible = 15040;
|
public const uint CallStatusPageVisible = 15040;
|
||||||
public const uint LightsPageVisbible = 15041;
|
public const uint LightsPageVisible = 15041;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 15042 Closes whichever interlocked modal is open
|
/// 15042 Closes whichever interlocked modal is open
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint InterlockedModalClosePress = 15042;
|
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;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15061 Reveals the dual-display subpage
|
||||||
|
/// </summary>
|
||||||
|
public const uint DualDisplayPageVisible = 15061;
|
||||||
|
public const uint ToggleSharingModeVisible = 15062;
|
||||||
|
public const uint ToggleSharingModePress = 15063;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 15085 Visibility join for help subpage
|
/// 15085 Visibility join for help subpage
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -159,5 +179,22 @@ namespace PepperDash.Essentials
|
|||||||
public const uint PowerOffMessage = 3911;
|
public const uint PowerOffMessage = 3911;
|
||||||
public const uint StartPageMessage = 3912;
|
public const uint StartPageMessage = 3912;
|
||||||
public const uint HelpMessage = 3922;
|
public const uint HelpMessage = 3922;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 3961 Name of source on display 1
|
||||||
|
/// </summary>
|
||||||
|
public const uint Display1SourceLabel = 3961;
|
||||||
|
/// <summary>
|
||||||
|
/// 3962 Title above display 1
|
||||||
|
/// </summary>
|
||||||
|
public const uint Display1TitleLabel = 3962;
|
||||||
|
/// <summary>
|
||||||
|
/// 3964 Name of source on display 2
|
||||||
|
/// </summary>
|
||||||
|
public const uint Display2SourceLabel = 3964;
|
||||||
|
/// <summary>
|
||||||
|
/// 3965 Title above display 2
|
||||||
|
/// </summary>
|
||||||
|
public const uint Display2TitleLabel = 3965;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -10,8 +10,8 @@
|
|||||||
<ArchiveName />
|
<ArchiveName />
|
||||||
</RequiredInfo>
|
</RequiredInfo>
|
||||||
<OptionalInfo>
|
<OptionalInfo>
|
||||||
<CompiledOn>2/13/2017 5:26:41 PM</CompiledOn>
|
<CompiledOn>2/14/2017 11:24:21 AM</CompiledOn>
|
||||||
<CompilerRev>1.0.0.31399</CompilerRev>
|
<CompilerRev>1.0.0.20529</CompilerRev>
|
||||||
</OptionalInfo>
|
</OptionalInfo>
|
||||||
<Plugin>
|
<Plugin>
|
||||||
<Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>
|
<Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
MainAssembly=PepperDashEssentials.dll:7af4e6d55a20dd121757619674d8ae00
|
MainAssembly=PepperDashEssentials.dll:0ec9394c958b83119e9ba457828c9bd0
|
||||||
MainAssemblyMinFirmwareVersion=1.009.0029
|
MainAssemblyMinFirmwareVersion=1.009.0029
|
||||||
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
|
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
|
||||||
ü
|
ü
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user