mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-15 04:34:56 +00:00
working on #109 to add QR support for TSW panels
This commit is contained in:
@@ -155,6 +155,7 @@
|
|||||||
<Compile Include="UIDrivers\Environment Drivers\EssentialsShadeDriver.cs" />
|
<Compile Include="UIDrivers\Environment Drivers\EssentialsShadeDriver.cs" />
|
||||||
<Compile Include="UIDrivers\Essentials\EssentialsHeaderDriver.cs" />
|
<Compile Include="UIDrivers\Essentials\EssentialsHeaderDriver.cs" />
|
||||||
<Compile Include="UIDrivers\JoinedSigInterlock.cs" />
|
<Compile Include="UIDrivers\JoinedSigInterlock.cs" />
|
||||||
|
<Compile Include="UIDrivers\ScreenSaverController.cs" />
|
||||||
<Compile Include="UIDrivers\SigInterlock.cs" />
|
<Compile Include="UIDrivers\SigInterlock.cs" />
|
||||||
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddlePresentationUiDriver.cs" />
|
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddlePresentationUiDriver.cs" />
|
||||||
<Compile Include="UIDrivers\EssentialsHuddle\EssentialsHuddleTechPageDriver.cs" />
|
<Compile Include="UIDrivers\EssentialsHuddle\EssentialsHuddleTechPageDriver.cs" />
|
||||||
|
|||||||
@@ -803,6 +803,47 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint SetupFullDistrib = 15091;
|
public const uint SetupFullDistrib = 15091;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15092
|
||||||
|
/// </summary>
|
||||||
|
public const uint StartMCPageVisible = 15092;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15093
|
||||||
|
/// </summary>
|
||||||
|
public const uint RoomHeaderMCPageVisible = 15093;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15094
|
||||||
|
/// </summary>
|
||||||
|
public const uint MCScreenSaverVisible = 15094;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15095
|
||||||
|
/// </summary>
|
||||||
|
public const uint MCScreenSaverPosition1Visible = 15095;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15096
|
||||||
|
/// </summary>
|
||||||
|
public const uint MCScreenSaverPosition2Visible = 15096;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15097
|
||||||
|
/// </summary>
|
||||||
|
public const uint MCScreenSaverPosition3Visible = 15097;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15098
|
||||||
|
/// </summary>
|
||||||
|
public const uint MCScreenSaverPosition4Visible = 15098;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 15099
|
||||||
|
/// </summary>
|
||||||
|
public const uint MCScreenSaverClosePress = 15099;
|
||||||
|
|
||||||
// PIN dialogs ************************************
|
// PIN dialogs ************************************
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -146,6 +146,10 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint RoomPhoneText = 3904;
|
public const uint RoomPhoneText = 3904;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 3905 - Video address/number for room header
|
||||||
|
/// </summary>
|
||||||
|
public const uint RoomVideoAddressText = 3905;
|
||||||
|
/// <summary>
|
||||||
/// 3906 - The separator for verbose-header text on addresses
|
/// 3906 - The separator for verbose-header text on addresses
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint RoomAddressPipeText = 3906;
|
public const uint RoomAddressPipeText = 3906;
|
||||||
@@ -154,6 +158,14 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint RoomUserCode = 3907;
|
public const uint RoomUserCode = 3907;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
/// 3908 - The url for the mobile control server
|
||||||
|
/// </summary>
|
||||||
|
public const uint RoomMcUrl = 3908;
|
||||||
|
/// <summary>
|
||||||
|
/// 3908 - The url for the mobile control QR Code image
|
||||||
|
/// </summary>
|
||||||
|
public const uint RoomMcWQrCodeUrl = 3909;
|
||||||
|
/// <summary>
|
||||||
/// 3911
|
/// 3911
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint PowerOffMessage = 3911;
|
public const uint PowerOffMessage = 3911;
|
||||||
@@ -189,12 +201,19 @@ namespace PepperDash.Essentials
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 3923
|
/// 3923
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint LogoUrl = 3923;
|
public const uint LogoUrlLightBkgnd = 3923;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 3924 - the text on the "call help desk" button
|
/// 3924 - the text on the "call help desk" button
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint HelpPageCallButtonText = 3924;
|
public const uint HelpPageCallButtonText = 3924;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 3925
|
||||||
|
/// </summary>
|
||||||
|
public const uint LogoUrlDarkBkgnd = 3923;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 3951
|
/// 3951
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
using Crestron.SimplSharpPro.DeviceSupport;
|
using Crestron.SimplSharpPro.DeviceSupport;
|
||||||
using Crestron.SimplSharpPro.UI;
|
using Crestron.SimplSharpPro.UI;
|
||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
@@ -11,6 +12,8 @@ namespace PepperDash.Essentials
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class EssentialsPanelMainInterfaceDriver : PanelDriverBase
|
public class EssentialsPanelMainInterfaceDriver : PanelDriverBase
|
||||||
{
|
{
|
||||||
|
CTimer InactivityTimer;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Assign the appropriate A/V driver.
|
/// Assign the appropriate A/V driver.
|
||||||
/// Want to keep the AvDriver alive, because it may hold states
|
/// Want to keep the AvDriver alive, because it may hold states
|
||||||
@@ -23,6 +26,8 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
public PanelDriverBase CurrentChildDriver { get; private set; }
|
public PanelDriverBase CurrentChildDriver { get; private set; }
|
||||||
|
|
||||||
|
public ScreenSaverController ScreenSaverController { get; private set; }
|
||||||
|
|
||||||
CrestronTouchpanelPropertiesConfig Config;
|
CrestronTouchpanelPropertiesConfig Config;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -35,8 +40,47 @@ namespace PepperDash.Essentials
|
|||||||
: base(trilist)
|
: base(trilist)
|
||||||
{
|
{
|
||||||
Config = config;
|
Config = config;
|
||||||
|
|
||||||
|
var tsx52or60 = trilist as Tswx52ButtonVoiceControl;
|
||||||
|
|
||||||
|
if (tsx52or60 != null)
|
||||||
|
{
|
||||||
|
tsx52or60.ExtenderTouchDetectionReservedSigs.DeviceExtenderSigChange += ExtenderTouchDetectionReservedSigs_DeviceExtenderSigChange;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var tswx70 = trilist as TswX70Base;
|
||||||
|
if (tswx70 != null)
|
||||||
|
{
|
||||||
|
tswx70.ExtenderTouchDetectionReservedSigs.DeviceExtenderSigChange += ExtenderTouchDetectionReservedSigs_DeviceExtenderSigChange;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ExtenderTouchDetectionReservedSigs_DeviceExtenderSigChange(Crestron.SimplSharpPro.DeviceExtender currentDeviceExtender, Crestron.SimplSharpPro.SigEventArgs args)
|
||||||
|
{
|
||||||
|
if (args.Sig.BoolValue)
|
||||||
|
{
|
||||||
|
if (InactivityTimer != null)
|
||||||
|
{
|
||||||
|
InactivityTimer.Reset();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
InactivityTimer = new CTimer((o) => InactivityTimerExpired(), Config.ScreenSaverTimeoutMin * 60 * 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void InactivityTimerExpired()
|
||||||
|
{
|
||||||
|
InactivityTimer.Stop();
|
||||||
|
InactivityTimer.Dispose();
|
||||||
|
InactivityTimer = null;
|
||||||
|
|
||||||
|
ScreenSaverController.Show();
|
||||||
|
}
|
||||||
|
|
||||||
public override void Show()
|
public override void Show()
|
||||||
{
|
{
|
||||||
CurrentChildDriver = null;
|
CurrentChildDriver = null;
|
||||||
@@ -46,7 +90,7 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
public override void Hide()
|
public override void Hide()
|
||||||
{
|
{
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
TriList.BooleanInput[AvDriver.StartPageVisibleJoin].BoolValue = false;
|
||||||
base.Hide();
|
base.Hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -267,7 +267,7 @@
|
|||||||
// HideAndClearCurrentDisplayModeSigsInUse();
|
// HideAndClearCurrentDisplayModeSigsInUse();
|
||||||
// tl[UIBoolJoin.TopBarHabaneroVisible].BoolValue = false;
|
// tl[UIBoolJoin.TopBarHabaneroVisible].BoolValue = false;
|
||||||
// tl[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
|
// tl[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
|
||||||
// tl[UIBoolJoin.StartPageVisible].BoolValue = false;
|
// tl[StartPageVisibleJoin].BoolValue = false;
|
||||||
// tl[UIBoolJoin.TapToBeginVisible].BoolValue = false;
|
// tl[UIBoolJoin.TapToBeginVisible].BoolValue = false;
|
||||||
// tl[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false;
|
// tl[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false;
|
||||||
// tl[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
|
// tl[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
|
||||||
@@ -335,7 +335,7 @@
|
|||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||||
// TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = true;
|
// TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = true;
|
||||||
// TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
// TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||||
// }
|
// }
|
||||||
@@ -525,7 +525,7 @@
|
|||||||
// if (!_CurrentRoom.OnFeedback.BoolValue)
|
// if (!_CurrentRoom.OnFeedback.BoolValue)
|
||||||
// {
|
// {
|
||||||
// ShareButtonSig.BoolValue = true;
|
// ShareButtonSig.BoolValue = true;
|
||||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||||
// ShowCurrentSharingMode();
|
// ShowCurrentSharingMode();
|
||||||
// }
|
// }
|
||||||
// }
|
// }
|
||||||
@@ -953,13 +953,13 @@
|
|||||||
// if (value)
|
// if (value)
|
||||||
// {
|
// {
|
||||||
// SetupActivityFooterWhenRoomOn();
|
// SetupActivityFooterWhenRoomOn();
|
||||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||||
// }
|
// }
|
||||||
// else
|
// else
|
||||||
// {
|
// {
|
||||||
// HideCurrentSharingMode();
|
// HideCurrentSharingMode();
|
||||||
// SetupActivityFooterWhenRoomOff();
|
// SetupActivityFooterWhenRoomOff();
|
||||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||||
// if (LastSelectedSourceSig != null)
|
// if (LastSelectedSourceSig != null)
|
||||||
// {
|
// {
|
||||||
// LastSelectedSourceSig.BoolValue = false;
|
// LastSelectedSourceSig.BoolValue = false;
|
||||||
|
|||||||
@@ -24,6 +24,9 @@ namespace PepperDash.Essentials
|
|||||||
PresentationMode, AudioSetup
|
PresentationMode, AudioSetup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public uint StartPageVisibleJoin { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether volume ramping from this panel will show the volume
|
/// Whether volume ramping from this panel will show the volume
|
||||||
/// gauge popup.
|
/// gauge popup.
|
||||||
@@ -225,7 +228,16 @@ namespace PepperDash.Essentials
|
|||||||
if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Habanero)
|
if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Habanero)
|
||||||
{
|
{
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () =>
|
TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () =>
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderPageVisible));
|
{
|
||||||
|
if (CurrentRoom.IsMobileControlEnabled)
|
||||||
|
{
|
||||||
|
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderMCPageVisible);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderPageVisible);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Verbose)
|
else if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Verbose)
|
||||||
{
|
{
|
||||||
@@ -256,7 +268,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TriList.SetBool(UIBoolJoin.StartPageVisible, true);
|
TriList.SetBool(StartPageVisibleJoin, true);
|
||||||
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
|
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
|
||||||
SetupActivityFooterWhenRoomOff();
|
SetupActivityFooterWhenRoomOff();
|
||||||
}
|
}
|
||||||
@@ -330,7 +342,7 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
|
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
|
||||||
TriList.SetBool(UIBoolJoin.LogoUrlVisible, true);
|
TriList.SetBool(UIBoolJoin.LogoUrlVisible, true);
|
||||||
TriList.SetString(UIStringJoin.LogoUrl, _CurrentRoom.LogoUrl);
|
TriList.SetString(UIStringJoin.LogoUrlLightBkgnd, _CurrentRoom.LogoUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -351,7 +363,7 @@ namespace PepperDash.Essentials
|
|||||||
HideAndClearCurrentDisplayModeSigsInUse();
|
HideAndClearCurrentDisplayModeSigsInUse();
|
||||||
TriList.BooleanInput[UIBoolJoin.TopBarHabaneroDynamicVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.TopBarHabaneroDynamicVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||||
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;
|
||||||
@@ -416,7 +428,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = true;
|
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||||
}
|
}
|
||||||
@@ -474,7 +486,7 @@ namespace PepperDash.Essentials
|
|||||||
void ShareButtonPressed()
|
void ShareButtonPressed()
|
||||||
{
|
{
|
||||||
ShareButtonSig.BoolValue = true;
|
ShareButtonSig.BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
|
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = true;
|
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = true;
|
||||||
// Run default source when room is off and share is pressed
|
// Run default source when room is off and share is pressed
|
||||||
@@ -787,7 +799,7 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
TriList.BooleanInput[UIBoolJoin.LogoDefaultVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.LogoDefaultVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.LogoUrlVisible].BoolValue = true;
|
TriList.BooleanInput[UIBoolJoin.LogoUrlVisible].BoolValue = true;
|
||||||
TriList.StringInput[UIStringJoin.LogoUrl].StringValue = _CurrentRoom.LogoUrl;
|
TriList.StringInput[UIStringJoin.LogoUrlLightBkgnd].StringValue = _CurrentRoom.LogoUrl;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shutdown timer
|
// Shutdown timer
|
||||||
@@ -823,6 +835,15 @@ namespace PepperDash.Essentials
|
|||||||
room.ConfigChanged -= room_ConfigChanged;
|
room.ConfigChanged -= room_ConfigChanged;
|
||||||
room.ConfigChanged += room_ConfigChanged;
|
room.ConfigChanged += room_ConfigChanged;
|
||||||
|
|
||||||
|
if (room.IsMobileControlEnabled)
|
||||||
|
{
|
||||||
|
StartPageVisibleJoin = UIBoolJoin.StartMCPageVisible;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartPageVisibleJoin = UIBoolJoin.StartPageVisible;
|
||||||
|
}
|
||||||
|
|
||||||
RefreshCurrentRoom(room);
|
RefreshCurrentRoom(room);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -855,7 +876,7 @@ namespace PepperDash.Essentials
|
|||||||
SetupActivityFooterWhenRoomOn();
|
SetupActivityFooterWhenRoomOn();
|
||||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
|
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = true;
|
TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = true;
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -863,7 +884,7 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
SetupActivityFooterWhenRoomOff();
|
SetupActivityFooterWhenRoomOff();
|
||||||
ShowLogo();
|
ShowLogo();
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||||
TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ namespace PepperDash.Essentials
|
|||||||
Presentation, AudioSetup, Call, Start
|
Presentation, AudioSetup, Call, Start
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public uint StartPageVisibleJoin { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether volume ramping from this panel will show the volume
|
/// Whether volume ramping from this panel will show the volume
|
||||||
/// gauge popup.
|
/// gauge popup.
|
||||||
@@ -240,7 +242,16 @@ namespace PepperDash.Essentials
|
|||||||
if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Habanero)
|
if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Habanero)
|
||||||
{
|
{
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () =>
|
TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () =>
|
||||||
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderPageVisible));
|
{
|
||||||
|
if (CurrentRoom.IsMobileControlEnabled)
|
||||||
|
{
|
||||||
|
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderMCPageVisible);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderPageVisible);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
else if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Verbose)
|
else if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Verbose)
|
||||||
{
|
{
|
||||||
@@ -276,7 +287,7 @@ namespace PepperDash.Essentials
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TriList.SetBool(UIBoolJoin.StartPageVisible, true);
|
TriList.SetBool(StartPageVisibleJoin, true);
|
||||||
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
|
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
|
||||||
SetupActivityFooterWhenRoomOff();
|
SetupActivityFooterWhenRoomOff();
|
||||||
}
|
}
|
||||||
@@ -341,7 +352,7 @@ namespace PepperDash.Essentials
|
|||||||
{
|
{
|
||||||
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
|
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
|
||||||
TriList.SetBool(UIBoolJoin.LogoUrlVisible, true);
|
TriList.SetBool(UIBoolJoin.LogoUrlVisible, true);
|
||||||
TriList.SetString(UIStringJoin.LogoUrl, _CurrentRoom.LogoUrl);
|
TriList.SetString(UIStringJoin.LogoUrlLightBkgnd, _CurrentRoom.LogoUrl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -362,7 +373,7 @@ namespace PepperDash.Essentials
|
|||||||
HideAndClearCurrentDisplayModeSigsInUse();
|
HideAndClearCurrentDisplayModeSigsInUse();
|
||||||
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, false);
|
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, false);
|
||||||
TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false;
|
||||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||||
if (NextMeetingTimer != null)
|
if (NextMeetingTimer != null)
|
||||||
@@ -606,7 +617,7 @@ namespace PepperDash.Essentials
|
|||||||
return;
|
return;
|
||||||
HideLogo();
|
HideLogo();
|
||||||
HideNextMeetingPopup();
|
HideNextMeetingPopup();
|
||||||
TriList.SetBool(UIBoolJoin.StartPageVisible, false);
|
TriList.SetBool(StartPageVisibleJoin, false);
|
||||||
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, false);
|
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, false);
|
||||||
TriList.SetBool(UIBoolJoin.SelectASourceVisible, false);
|
TriList.SetBool(UIBoolJoin.SelectASourceVisible, false);
|
||||||
if (CurrentSourcePageManager != null)
|
if (CurrentSourcePageManager != null)
|
||||||
@@ -626,7 +637,7 @@ namespace PepperDash.Essentials
|
|||||||
if (VCDriver.IsVisible)
|
if (VCDriver.IsVisible)
|
||||||
VCDriver.Hide();
|
VCDriver.Hide();
|
||||||
HideNextMeetingPopup();
|
HideNextMeetingPopup();
|
||||||
TriList.SetBool(UIBoolJoin.StartPageVisible, false);
|
TriList.SetBool(StartPageVisibleJoin, false);
|
||||||
TriList.SetBool(UIBoolJoin.CallStagingBarVisible, false);
|
TriList.SetBool(UIBoolJoin.CallStagingBarVisible, false);
|
||||||
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, true);
|
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, true);
|
||||||
// Run default source when room is off and share is pressed
|
// Run default source when room is off and share is pressed
|
||||||
@@ -960,6 +971,15 @@ namespace PepperDash.Essentials
|
|||||||
room.ConfigChanged -= room_ConfigChanged;
|
room.ConfigChanged -= room_ConfigChanged;
|
||||||
room.ConfigChanged += room_ConfigChanged;
|
room.ConfigChanged += room_ConfigChanged;
|
||||||
|
|
||||||
|
if (room.IsMobileControlEnabled)
|
||||||
|
{
|
||||||
|
StartPageVisibleJoin = UIBoolJoin.StartMCPageVisible;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
StartPageVisibleJoin = UIBoolJoin.StartPageVisible;
|
||||||
|
}
|
||||||
|
|
||||||
RefreshCurrentRoom(room);
|
RefreshCurrentRoom(room);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1149,7 +1169,7 @@ namespace PepperDash.Essentials
|
|||||||
var value = _CurrentRoom.OnFeedback.BoolValue;
|
var value = _CurrentRoom.OnFeedback.BoolValue;
|
||||||
TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value;
|
TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value;
|
||||||
|
|
||||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = !value;
|
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = !value;
|
||||||
|
|
||||||
if (value) //ON
|
if (value) //ON
|
||||||
{
|
{
|
||||||
@@ -1381,6 +1401,7 @@ namespace PepperDash.Essentials
|
|||||||
void ShowNotificationRibbon(string message, int timeout);
|
void ShowNotificationRibbon(string message, int timeout);
|
||||||
void HideNotificationRibbon();
|
void HideNotificationRibbon();
|
||||||
void ShowTech();
|
void ShowTech();
|
||||||
|
uint StartPageVisibleJoin { get; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
99
PepperDashEssentials/UIDrivers/ScreenSaverController.cs
Normal file
99
PepperDashEssentials/UIDrivers/ScreenSaverController.cs
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
|
using PepperDash.Core;
|
||||||
|
using PepperDash.Essentials.Core;
|
||||||
|
|
||||||
|
namespace PepperDash.Essentials
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Driver responsible for controlling the screenshaver showing the client logo, MC connection information and QR Code. Moves the elements around to prevent screen burn in
|
||||||
|
/// </summary>
|
||||||
|
public class ScreenSaverController : PanelDriverBase
|
||||||
|
{
|
||||||
|
CTimer PositionTimer;
|
||||||
|
|
||||||
|
uint PositionTimeoutMs;
|
||||||
|
|
||||||
|
List<uint> PositionJoins;
|
||||||
|
|
||||||
|
int CurrentPositionIndex;
|
||||||
|
|
||||||
|
public ScreenSaverController(EssentialsPanelMainInterfaceDriver parent, CrestronTouchpanelPropertiesConfig config)
|
||||||
|
: base(parent.TriList)
|
||||||
|
{
|
||||||
|
PositionTimeoutMs = config.ScreenSaverMovePositionIntervalMs;
|
||||||
|
|
||||||
|
TriList.SetSigFalseAction(UIBoolJoin.MCScreenSaverClosePress, () => this.Hide());
|
||||||
|
|
||||||
|
PositionJoins = new List<uint>()
|
||||||
|
{ UIBoolJoin.MCScreenSaverPosition1Visible, UIBoolJoin.MCScreenSaverPosition2Visible, UIBoolJoin.MCScreenSaverPosition3Visible, UIBoolJoin.MCScreenSaverPosition4Visible };
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Show()
|
||||||
|
{
|
||||||
|
TriList.SetBool(UIBoolJoin.MCScreenSaverVisible, true);
|
||||||
|
|
||||||
|
StartPositionTimer();
|
||||||
|
|
||||||
|
base.Show();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Hide()
|
||||||
|
{
|
||||||
|
PositionTimer.Stop();
|
||||||
|
PositionTimer.Dispose();
|
||||||
|
PositionTimer = null;
|
||||||
|
|
||||||
|
ClearAllPositions();
|
||||||
|
|
||||||
|
TriList.SetBool(UIBoolJoin.MCScreenSaverVisible, false);
|
||||||
|
|
||||||
|
base.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void StartPositionTimer()
|
||||||
|
{
|
||||||
|
if (PositionTimer == null)
|
||||||
|
{
|
||||||
|
PositionTimer = new CTimer((o) => PositionTimerExpired(), PositionTimeoutMs);
|
||||||
|
SetCurrentPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PositionTimerExpired()
|
||||||
|
{
|
||||||
|
if (CurrentPositionIndex <= PositionJoins.Count)
|
||||||
|
{
|
||||||
|
CurrentPositionIndex++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
CurrentPositionIndex = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
void SetCurrentPosition()
|
||||||
|
{
|
||||||
|
ClearAllPositions();
|
||||||
|
|
||||||
|
// Set based on current index
|
||||||
|
TriList.SetBool(PositionJoins[CurrentPositionIndex], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ClearAllPositions()
|
||||||
|
{
|
||||||
|
foreach (var join in PositionJoins)
|
||||||
|
{
|
||||||
|
TriList.SetBool(join, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,11 +1,33 @@
|
|||||||
using PepperDash.Core;
|
using System;
|
||||||
|
using PepperDash.Core;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
|
namespace PepperDash.Essentials.Core.DeviceTypeInterfaces
|
||||||
{
|
{
|
||||||
public interface IMobileControl:IKeyed
|
/// <summary>
|
||||||
|
/// Describes a MobileControlSystemController
|
||||||
|
/// </summary>
|
||||||
|
public interface IMobileControl : IKeyed
|
||||||
{
|
{
|
||||||
void CreateMobileControlRoomBridge(EssentialsRoomBase room);
|
void CreateMobileControlRoomBridge(EssentialsRoomBase room);
|
||||||
|
|
||||||
void LinkSystemMonitorToAppServer();
|
void LinkSystemMonitorToAppServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Describes a MobileControl Room Bridge
|
||||||
|
/// </summary>
|
||||||
|
public interface IMobileControlRoomBridge : IKeyed
|
||||||
|
{
|
||||||
|
event EventHandler<EventArgs> UserCodeChanged;
|
||||||
|
|
||||||
|
IMobileControl Parent { get; }
|
||||||
|
|
||||||
|
string UserCode { get; }
|
||||||
|
|
||||||
|
string QrCodeUrl { get; }
|
||||||
|
|
||||||
|
string McServerUrl { get; }
|
||||||
|
|
||||||
|
string RoomName { get; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -9,6 +9,7 @@ using PepperDash.Core;
|
|||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
using PepperDash.Essentials.Core.Config;
|
using PepperDash.Essentials.Core.Config;
|
||||||
using PepperDash.Essentials.Core.Devices;
|
using PepperDash.Essentials.Core.Devices;
|
||||||
|
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Core
|
namespace PepperDash.Essentials.Core
|
||||||
{
|
{
|
||||||
@@ -37,6 +38,16 @@ namespace PepperDash.Essentials.Core
|
|||||||
protected abstract Func<bool> IsWarmingFeedbackFunc { get; }
|
protected abstract Func<bool> IsWarmingFeedbackFunc { get; }
|
||||||
protected abstract Func<bool> IsCoolingFeedbackFunc { get; }
|
protected abstract Func<bool> IsCoolingFeedbackFunc { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Indicates if this room is Mobile Control Enabled
|
||||||
|
/// </summary>
|
||||||
|
public bool IsMobileControlEnabled { get; private set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The bridge for this room if Mobile Control is enabled
|
||||||
|
/// </summary>
|
||||||
|
public IMobileControlRoomBridge MobileControlRoomBridge { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The config name of the source list
|
/// The config name of the source list
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -125,9 +136,30 @@ namespace PepperDash.Essentials.Core
|
|||||||
{
|
{
|
||||||
if (RoomOccupancy != null)
|
if (RoomOccupancy != null)
|
||||||
OnRoomOccupancyIsSet();
|
OnRoomOccupancyIsSet();
|
||||||
|
|
||||||
|
SetUpMobileControl();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If mobile control is enabled, sets the appropriate properties
|
||||||
|
/// </summary>
|
||||||
|
void SetUpMobileControl()
|
||||||
|
{
|
||||||
|
var mcBridgeKey = string.Format("mobileControlBridge-{0}", Key);
|
||||||
|
var mcBridge = DeviceManager.GetDeviceForKey(mcBridgeKey);
|
||||||
|
if (mcBridge == null)
|
||||||
|
{
|
||||||
|
Debug.Console(1, this, "Mobile Control Bridge Not found for this room.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MobileControlRoomBridge = mcBridge as IMobileControlRoomBridge;
|
||||||
|
IsMobileControlEnabled = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void RoomVacancyShutdownPromptTimer_HasFinished(object sender, EventArgs e)
|
void RoomVacancyShutdownPromptTimer_HasFinished(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
switch (VacancyMode)
|
switch (VacancyMode)
|
||||||
|
|||||||
@@ -14,6 +14,8 @@
|
|||||||
public UiSetupPropertiesConfig Setup { get; set; }
|
public UiSetupPropertiesConfig Setup { get; set; }
|
||||||
public string HeaderStyle { get; set; }
|
public string HeaderStyle { get; set; }
|
||||||
public bool IncludeInFusionRoomHealth { get; set; }
|
public bool IncludeInFusionRoomHealth { get; set; }
|
||||||
|
public uint ScreenSaverTimeoutMin { get; set; }
|
||||||
|
public uint ScreenSaverMovePositionIntervalMs { get; set; }
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -26,6 +28,10 @@
|
|||||||
{
|
{
|
||||||
SourcesOverflowCount = 5;
|
SourcesOverflowCount = 5;
|
||||||
HeaderStyle = CrestronTouchpanelPropertiesConfig.Habanero;
|
HeaderStyle = CrestronTouchpanelPropertiesConfig.Habanero;
|
||||||
|
|
||||||
|
// Default values
|
||||||
|
ScreenSaverTimeoutMin = 5;
|
||||||
|
ScreenSaverMovePositionIntervalMs = 15000;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Reference in New Issue
Block a user