Even more basic dual-display workflow

This commit is contained in:
Heath Volmer
2017-02-14 11:27:25 -07:00
parent 2d30a89f93
commit a0f1201a1a
15 changed files with 236 additions and 13 deletions

View File

@@ -154,6 +154,7 @@
<Compile Include="FOR REFERENCE UI\PageControllers\LargeTouchpanelControllerBase.cs" />
<Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.cs" />
<Compile Include="Room\VolumeAndSourceChangeArgs.cs" />
<Compile Include="UI Drivers\DualDisplayRouting.cs" />
<Compile Include="UI Drivers\EssentialsPresentationPanelAvFunctionsDriver.cs" />
<Compile Include="UI Drivers\SingleSubpageModalDriver.cs" />
<Compile Include="UI Drivers\EssentialsPanelMainInterfaceDriver.cs" />

View File

@@ -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()
{
}
}
}

View File

@@ -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;
}

View File

@@ -102,6 +102,11 @@ namespace PepperDash.Essentials
/// </summary>
PanelDriverBase Parent;
/// <summary>
/// Driver that manages advanced sharing features
/// </summary>
DualDisplayRouting DualDisplayUiDriver;
/// <summary>
/// All children attached to this driver. For hiding and showing as a group.
/// </summary>
@@ -141,6 +146,8 @@ namespace PepperDash.Essentials
/// </summary>
CTimer PowerOffTimer;
bool IsSharingModeAdvanced;
/// <summary>
/// Constructor
/// </summary>
@@ -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;
}
}
/// <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>
/// When the room is off, set the footer SRL
/// </summary>
@@ -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,6 +489,11 @@ namespace PepperDash.Essentials
/// <param name="key">The key name of the route to run</param>
void UiSelectSource(SourceListItem sourceItem)
{
if (IsSharingModeAdvanced)
{
DualDisplayUiDriver.SourceListButtonPress(sourceItem);
}
else
CurrentRoom.DoSourceToAllDestinationsRoute(sourceItem);
}

View File

@@ -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;
/// <summary>
/// 15042 Closes whichever interlocked modal is open
/// </summary>
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>
/// 15085 Visibility join for help subpage
/// </summary>
@@ -159,5 +179,22 @@ namespace PepperDash.Essentials
public const uint PowerOffMessage = 3911;
public const uint StartPageMessage = 3912;
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;
}
}

View File

@@ -10,8 +10,8 @@
<ArchiveName />
</RequiredInfo>
<OptionalInfo>
<CompiledOn>2/13/2017 5:26:41 PM</CompiledOn>
<CompilerRev>1.0.0.31399</CompilerRev>
<CompiledOn>2/14/2017 11:24:21 AM</CompiledOn>
<CompilerRev>1.0.0.20529</CompilerRev>
</OptionalInfo>
<Plugin>
<Version>Crestron.SIMPLSharp, Version=2.0.48.0, Culture=neutral, PublicKeyToken=812d080f93e2de10</Version>

View File

@@ -1,4 +1,4 @@
MainAssembly=PepperDashEssentials.dll:7af4e6d55a20dd121757619674d8ae00
MainAssembly=PepperDashEssentials.dll:0ec9394c958b83119e9ba457828c9bd0
MainAssemblyMinFirmwareVersion=1.009.0029
MainAssemblyResource=SimplSharpData.dat:315526abf906cded47fb0c7510266a7e
ü