mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +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\Essentials\EssentialsHeaderDriver.cs" />
|
||||
<Compile Include="UIDrivers\JoinedSigInterlock.cs" />
|
||||
<Compile Include="UIDrivers\ScreenSaverController.cs" />
|
||||
<Compile Include="UIDrivers\SigInterlock.cs" />
|
||||
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddlePresentationUiDriver.cs" />
|
||||
<Compile Include="UIDrivers\EssentialsHuddle\EssentialsHuddleTechPageDriver.cs" />
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -146,6 +146,10 @@ namespace PepperDash.Essentials
|
||||
/// </summary>
|
||||
public const uint RoomPhoneText = 3904;
|
||||
/// <summary>
|
||||
/// 3905 - Video address/number for room header
|
||||
/// </summary>
|
||||
public const uint RoomVideoAddressText = 3905;
|
||||
/// <summary>
|
||||
/// 3906 - The separator for verbose-header text on addresses
|
||||
/// </summary>
|
||||
public const uint RoomAddressPipeText = 3906;
|
||||
@@ -154,6 +158,14 @@ namespace PepperDash.Essentials
|
||||
/// </summary>
|
||||
public const uint RoomUserCode = 3907;
|
||||
/// <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
|
||||
/// </summary>
|
||||
public const uint PowerOffMessage = 3911;
|
||||
@@ -189,12 +201,19 @@ namespace PepperDash.Essentials
|
||||
/// <summary>
|
||||
/// 3923
|
||||
/// </summary>
|
||||
public const uint LogoUrl = 3923;
|
||||
public const uint LogoUrlLightBkgnd = 3923;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 3924 - the text on the "call help desk" button
|
||||
/// </summary>
|
||||
public const uint HelpPageCallButtonText = 3924;
|
||||
|
||||
/// <summary>
|
||||
/// 3925
|
||||
/// </summary>
|
||||
public const uint LogoUrlDarkBkgnd = 3923;
|
||||
|
||||
/// <summary>
|
||||
/// 3951
|
||||
/// </summary>
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
using Crestron.SimplSharpPro.UI;
|
||||
using PepperDash.Essentials.Core;
|
||||
@@ -11,6 +12,8 @@ namespace PepperDash.Essentials
|
||||
/// </summary>
|
||||
public class EssentialsPanelMainInterfaceDriver : PanelDriverBase
|
||||
{
|
||||
CTimer InactivityTimer;
|
||||
|
||||
/// <summary>
|
||||
/// Assign the appropriate A/V driver.
|
||||
/// 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 ScreenSaverController ScreenSaverController { get; private set; }
|
||||
|
||||
CrestronTouchpanelPropertiesConfig Config;
|
||||
|
||||
/// <summary>
|
||||
@@ -35,8 +40,47 @@ namespace PepperDash.Essentials
|
||||
: base(trilist)
|
||||
{
|
||||
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()
|
||||
{
|
||||
CurrentChildDriver = null;
|
||||
@@ -46,7 +90,7 @@ namespace PepperDash.Essentials
|
||||
|
||||
public override void Hide()
|
||||
{
|
||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
||||
TriList.BooleanInput[AvDriver.StartPageVisibleJoin].BoolValue = false;
|
||||
base.Hide();
|
||||
}
|
||||
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
// HideAndClearCurrentDisplayModeSigsInUse();
|
||||
// tl[UIBoolJoin.TopBarHabaneroVisible].BoolValue = false;
|
||||
// tl[UIBoolJoin.ActivityFooterVisible].BoolValue = false;
|
||||
// tl[UIBoolJoin.StartPageVisible].BoolValue = false;
|
||||
// tl[StartPageVisibleJoin].BoolValue = false;
|
||||
// tl[UIBoolJoin.TapToBeginVisible].BoolValue = false;
|
||||
// tl[UIBoolJoin.ToggleSharingModeVisible].BoolValue = false;
|
||||
// tl[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
|
||||
@@ -335,7 +335,7 @@
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
||||
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||
// TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = true;
|
||||
// TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||
// }
|
||||
@@ -525,7 +525,7 @@
|
||||
// if (!_CurrentRoom.OnFeedback.BoolValue)
|
||||
// {
|
||||
// ShareButtonSig.BoolValue = true;
|
||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
||||
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||
// ShowCurrentSharingMode();
|
||||
// }
|
||||
// }
|
||||
@@ -953,13 +953,13 @@
|
||||
// if (value)
|
||||
// {
|
||||
// SetupActivityFooterWhenRoomOn();
|
||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
||||
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// HideCurrentSharingMode();
|
||||
// SetupActivityFooterWhenRoomOff();
|
||||
// TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
||||
// TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||
// if (LastSelectedSourceSig != null)
|
||||
// {
|
||||
// LastSelectedSourceSig.BoolValue = false;
|
||||
|
||||
@@ -24,6 +24,9 @@ namespace PepperDash.Essentials
|
||||
PresentationMode, AudioSetup
|
||||
}
|
||||
|
||||
public uint StartPageVisibleJoin { get; private set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Whether volume ramping from this panel will show the volume
|
||||
/// gauge popup.
|
||||
@@ -225,7 +228,16 @@ namespace PepperDash.Essentials
|
||||
if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Habanero)
|
||||
{
|
||||
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)
|
||||
{
|
||||
@@ -256,7 +268,7 @@ namespace PepperDash.Essentials
|
||||
}
|
||||
else
|
||||
{
|
||||
TriList.SetBool(UIBoolJoin.StartPageVisible, true);
|
||||
TriList.SetBool(StartPageVisibleJoin, true);
|
||||
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
|
||||
SetupActivityFooterWhenRoomOff();
|
||||
}
|
||||
@@ -330,7 +342,7 @@ namespace PepperDash.Essentials
|
||||
{
|
||||
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
|
||||
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();
|
||||
TriList.BooleanInput[UIBoolJoin.TopBarHabaneroDynamicVisible].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.SelectASourceVisible].BoolValue = false;
|
||||
//TriList.BooleanInput[UIBoolJoin.StagingPageVisible].BoolValue = false;
|
||||
@@ -416,7 +428,7 @@ namespace PepperDash.Essentials
|
||||
}
|
||||
else
|
||||
{
|
||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
||||
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = true;
|
||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||
}
|
||||
@@ -474,7 +486,7 @@ namespace PepperDash.Essentials
|
||||
void ShareButtonPressed()
|
||||
{
|
||||
ShareButtonSig.BoolValue = true;
|
||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
||||
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
|
||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = true;
|
||||
// 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.LogoUrlVisible].BoolValue = true;
|
||||
TriList.StringInput[UIStringJoin.LogoUrl].StringValue = _CurrentRoom.LogoUrl;
|
||||
TriList.StringInput[UIStringJoin.LogoUrlLightBkgnd].StringValue = _CurrentRoom.LogoUrl;
|
||||
}
|
||||
|
||||
// Shutdown timer
|
||||
@@ -823,6 +835,15 @@ namespace PepperDash.Essentials
|
||||
room.ConfigChanged -= room_ConfigChanged;
|
||||
room.ConfigChanged += room_ConfigChanged;
|
||||
|
||||
if (room.IsMobileControlEnabled)
|
||||
{
|
||||
StartPageVisibleJoin = UIBoolJoin.StartMCPageVisible;
|
||||
}
|
||||
else
|
||||
{
|
||||
StartPageVisibleJoin = UIBoolJoin.StartPageVisible;
|
||||
}
|
||||
|
||||
RefreshCurrentRoom(room);
|
||||
}
|
||||
|
||||
@@ -855,7 +876,7 @@ namespace PepperDash.Essentials
|
||||
SetupActivityFooterWhenRoomOn();
|
||||
TriList.BooleanInput[UIBoolJoin.SelectASourceVisible].BoolValue = false;
|
||||
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = true;
|
||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = false;
|
||||
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = false;
|
||||
TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = true;
|
||||
|
||||
}
|
||||
@@ -863,7 +884,7 @@ namespace PepperDash.Essentials
|
||||
{
|
||||
SetupActivityFooterWhenRoomOff();
|
||||
ShowLogo();
|
||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true;
|
||||
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = true;
|
||||
TriList.BooleanInput[UIBoolJoin.VolumeSingleMute1Visible].BoolValue = false;
|
||||
TriList.BooleanInput[UIBoolJoin.SourceStagingBarVisible].BoolValue = false;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ namespace PepperDash.Essentials
|
||||
Presentation, AudioSetup, Call, Start
|
||||
}
|
||||
|
||||
public uint StartPageVisibleJoin { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Whether volume ramping from this panel will show the volume
|
||||
/// gauge popup.
|
||||
@@ -240,7 +242,16 @@ namespace PepperDash.Essentials
|
||||
if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Habanero)
|
||||
{
|
||||
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)
|
||||
{
|
||||
@@ -276,7 +287,7 @@ namespace PepperDash.Essentials
|
||||
}
|
||||
else
|
||||
{
|
||||
TriList.SetBool(UIBoolJoin.StartPageVisible, true);
|
||||
TriList.SetBool(StartPageVisibleJoin, true);
|
||||
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
|
||||
SetupActivityFooterWhenRoomOff();
|
||||
}
|
||||
@@ -341,7 +352,7 @@ namespace PepperDash.Essentials
|
||||
{
|
||||
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
|
||||
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();
|
||||
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, 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.SelectASourceVisible].BoolValue = false;
|
||||
if (NextMeetingTimer != null)
|
||||
@@ -606,7 +617,7 @@ namespace PepperDash.Essentials
|
||||
return;
|
||||
HideLogo();
|
||||
HideNextMeetingPopup();
|
||||
TriList.SetBool(UIBoolJoin.StartPageVisible, false);
|
||||
TriList.SetBool(StartPageVisibleJoin, false);
|
||||
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, false);
|
||||
TriList.SetBool(UIBoolJoin.SelectASourceVisible, false);
|
||||
if (CurrentSourcePageManager != null)
|
||||
@@ -626,7 +637,7 @@ namespace PepperDash.Essentials
|
||||
if (VCDriver.IsVisible)
|
||||
VCDriver.Hide();
|
||||
HideNextMeetingPopup();
|
||||
TriList.SetBool(UIBoolJoin.StartPageVisible, false);
|
||||
TriList.SetBool(StartPageVisibleJoin, false);
|
||||
TriList.SetBool(UIBoolJoin.CallStagingBarVisible, false);
|
||||
TriList.SetBool(UIBoolJoin.SourceStagingBarVisible, true);
|
||||
// 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;
|
||||
|
||||
if (room.IsMobileControlEnabled)
|
||||
{
|
||||
StartPageVisibleJoin = UIBoolJoin.StartMCPageVisible;
|
||||
}
|
||||
else
|
||||
{
|
||||
StartPageVisibleJoin = UIBoolJoin.StartPageVisible;
|
||||
}
|
||||
|
||||
RefreshCurrentRoom(room);
|
||||
}
|
||||
|
||||
@@ -1149,7 +1169,7 @@ namespace PepperDash.Essentials
|
||||
var value = _CurrentRoom.OnFeedback.BoolValue;
|
||||
TriList.BooleanInput[UIBoolJoin.RoomIsOn].BoolValue = value;
|
||||
|
||||
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = !value;
|
||||
TriList.BooleanInput[StartPageVisibleJoin].BoolValue = !value;
|
||||
|
||||
if (value) //ON
|
||||
{
|
||||
@@ -1381,6 +1401,7 @@ namespace PepperDash.Essentials
|
||||
void ShowNotificationRibbon(string message, int timeout);
|
||||
void HideNotificationRibbon();
|
||||
void ShowTech();
|
||||
uint StartPageVisibleJoin { get; }
|
||||
}
|
||||
|
||||
/// <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
|
||||
{
|
||||
public interface IMobileControl:IKeyed
|
||||
/// <summary>
|
||||
/// Describes a MobileControlSystemController
|
||||
/// </summary>
|
||||
public interface IMobileControl : IKeyed
|
||||
{
|
||||
void CreateMobileControlRoomBridge(EssentialsRoomBase room);
|
||||
|
||||
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.Config;
|
||||
using PepperDash.Essentials.Core.Devices;
|
||||
using PepperDash.Essentials.Core.DeviceTypeInterfaces;
|
||||
|
||||
namespace PepperDash.Essentials.Core
|
||||
{
|
||||
@@ -37,6 +38,16 @@ namespace PepperDash.Essentials.Core
|
||||
protected abstract Func<bool> IsWarmingFeedbackFunc { 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>
|
||||
/// The config name of the source list
|
||||
/// </summary>
|
||||
@@ -125,9 +136,30 @@ namespace PepperDash.Essentials.Core
|
||||
{
|
||||
if (RoomOccupancy != null)
|
||||
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)
|
||||
{
|
||||
switch (VacancyMode)
|
||||
|
||||
@@ -14,6 +14,8 @@
|
||||
public UiSetupPropertiesConfig Setup { get; set; }
|
||||
public string HeaderStyle { get; set; }
|
||||
public bool IncludeInFusionRoomHealth { get; set; }
|
||||
public uint ScreenSaverTimeoutMin { get; set; }
|
||||
public uint ScreenSaverMovePositionIntervalMs { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -26,6 +28,10 @@
|
||||
{
|
||||
SourcesOverflowCount = 5;
|
||||
HeaderStyle = CrestronTouchpanelPropertiesConfig.Habanero;
|
||||
|
||||
// Default values
|
||||
ScreenSaverTimeoutMin = 5;
|
||||
ScreenSaverMovePositionIntervalMs = 15000;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user