mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-11 19:44:52 +00:00
Various tech page framework items
This commit is contained in:
@@ -33,6 +33,12 @@ namespace PepperDash.Essentials.Core.SmartObjects
|
||||
/// </summary>
|
||||
public int MaxCount { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// Wrapper for smart object
|
||||
/// </summary>
|
||||
/// <param name="so"></param>
|
||||
/// <param name="useUserObjectHandler">True if the standard user object action handler will be used</param>
|
||||
/// <param name="nameSigOffset">The starting join of the string sigs for the button labels</param>
|
||||
public SmartObjectDynamicList(SmartObject so, bool useUserObjectHandler, uint nameSigOffset) : base(so, useUserObjectHandler)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -81,21 +81,25 @@ namespace PepperDash.Essentials.Core
|
||||
public static BoolOutputSig SetSigHeldAction(this BasicTriList tl, uint sigNum, uint heldMs, Action heldAction, Action releaseAction)
|
||||
{
|
||||
CTimer heldTimer = null;
|
||||
bool wasHeld = false;
|
||||
return tl.SetBoolSigAction(sigNum, press =>
|
||||
{
|
||||
if (press)
|
||||
{
|
||||
|
||||
wasHeld = false;
|
||||
// Could insert a pressed action here
|
||||
heldTimer = new CTimer(o =>
|
||||
{
|
||||
// if still held and there's an action
|
||||
if (tl.BooleanOutput[sigNum].BoolValue && heldAction != null)
|
||||
{
|
||||
wasHeld = true;
|
||||
// Hold action here
|
||||
heldAction();
|
||||
}
|
||||
}, heldMs);
|
||||
}
|
||||
else if (heldTimer != null) // released
|
||||
else if(!wasHeld) // released
|
||||
{
|
||||
heldTimer.Stop();
|
||||
if (releaseAction != null)
|
||||
|
||||
@@ -164,12 +164,14 @@
|
||||
<Compile Include="FOR REFERENCE UI\PageControllers\PageControllerLargeSetTopBoxGeneric.cs" />
|
||||
<Compile Include="FOR REFERENCE UI\PageControllers\LargeTouchpanelControllerBase.cs" />
|
||||
<Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.cs" />
|
||||
<Compile Include="UIDrivers\SigInterlock.cs" />
|
||||
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddlePresentationUiDriver.cs" />
|
||||
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddleTechPageDriver.cs" />
|
||||
<Compile Include="UI\HttpLogoServer.cs" />
|
||||
<Compile Include="UI\SubpageReferenceListCallStagingItem.cs" />
|
||||
<Compile Include="UIDrivers\VC\EssentialsVideoCodecUiDriver.cs" />
|
||||
<Compile Include="UIDrivers\JoinedSigInterlock.cs" />
|
||||
<Compile Include="UIDrivers\EssentialsHuddleVTC\HuddleVTCPanelAvFunctionsDriver.cs" />
|
||||
<Compile Include="UIDrivers\EssentialsHuddleVTC\EssentialsHuddleVtc1PanelAvFunctionsDriver.cs" />
|
||||
<Compile Include="UIDrivers\VolumeAndSourceChangeArgs.cs" />
|
||||
<Compile Include="UI\JoinConstants\UISmartObjectJoin.cs" />
|
||||
<Compile Include="UI\JoinConstants\UIStringlJoin.cs" />
|
||||
|
||||
@@ -141,7 +141,7 @@ namespace PepperDash.Essentials.Room.Config
|
||||
if (Type == "url")
|
||||
return Url;
|
||||
if (Type == "system")
|
||||
return string.Format("http://{0}:5646/logo",
|
||||
return string.Format("http://{0}:8080/logo.png",
|
||||
CrestronEthernetHelper.GetEthernetParameter(CrestronEthernetHelper.ETHERNET_PARAMETER_TO_GET.GET_CURRENT_IP_ADDRESS, 0));
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -64,8 +64,6 @@ namespace PepperDash.Essentials
|
||||
void Server_OnHttpRequest(object sender, OnHttpRequestArgs args)
|
||||
{
|
||||
var path = args.Request.Path;
|
||||
Debug.Console(0, "########## PATH={0}", path);
|
||||
|
||||
if (File.Exists(FileDirectory + @"\" + path))
|
||||
{
|
||||
string filePath = path.Replace('/', '\\');
|
||||
@@ -74,7 +72,6 @@ namespace PepperDash.Essentials
|
||||
{
|
||||
args.Response.Header.ContentType = GetContentType(new FileInfo(localPath).Extension);
|
||||
args.Response.ContentStream = new FileStream(localPath, FileMode.Open, FileAccess.Read);
|
||||
//args.Response.CloseStream = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -206,6 +206,43 @@ namespace PepperDash.Essentials
|
||||
|
||||
// Letter joins start at 2921;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 3101
|
||||
/// </summary>
|
||||
public const uint TechExitButton = 3101;
|
||||
/// <summary>
|
||||
/// 3106
|
||||
/// </summary>
|
||||
public const uint TechCommonItemsVisbible = 3106;
|
||||
/// <summary>
|
||||
/// 3107
|
||||
/// </summary>
|
||||
public const uint TechSystemStatusVisible = 3107;
|
||||
/// <summary>
|
||||
/// 3108
|
||||
/// </summary>
|
||||
public const uint TechDisplayControlsVisible = 3108;
|
||||
/// <summary>
|
||||
/// 3109
|
||||
/// </summary>
|
||||
public const uint TechPanelSetupVisible = 3109;
|
||||
/// <summary>
|
||||
/// 3110
|
||||
/// </summary>
|
||||
public const uint TechAdvancedVolumeVisible = 3110;
|
||||
/// <summary>
|
||||
/// 3111
|
||||
/// </summary>
|
||||
public const uint TechAboutVisible = 3111;
|
||||
/// <summary>
|
||||
/// 3112
|
||||
/// </summary>
|
||||
public const uint TechSchedulerVisible = 3112;
|
||||
|
||||
|
||||
|
||||
//******************************************************
|
||||
/// <summary>
|
||||
/// 3811
|
||||
@@ -300,14 +337,8 @@ namespace PepperDash.Essentials
|
||||
/// 3891
|
||||
/// </summary>
|
||||
public const uint VolumeDefaultPress = 3891;
|
||||
/// <summary>
|
||||
/// 3901
|
||||
/// </summary>
|
||||
public const uint TechPagesExitButton = 3901;
|
||||
/// <summary>
|
||||
/// 3902
|
||||
/// </summary>
|
||||
public const uint TechPanelSetupVisible = 3902;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 3999
|
||||
/// </summary>
|
||||
|
||||
@@ -29,6 +29,10 @@
|
||||
/// 15022 The main activity footer
|
||||
/// </summary>
|
||||
public const uint ActivityFooterSRL = 15022;
|
||||
/// <summary>
|
||||
/// 3901 The Tech page menu list
|
||||
/// </summary>
|
||||
public const uint TechMenuList = 3901;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,14 @@ namespace PepperDash.Essentials
|
||||
/// </summary>
|
||||
//public const uint KeypadText = 2901;
|
||||
|
||||
/// <summary>
|
||||
/// 3101 - This is the start of the range 3101 - 3120
|
||||
/// </summary>
|
||||
public const uint TechMenuButtonTextStart = 3101;
|
||||
|
||||
//----- through 3120
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 3812
|
||||
/// </summary>
|
||||
|
||||
@@ -220,7 +220,7 @@ namespace PepperDash.Essentials
|
||||
// Setup button
|
||||
TriList.SetSigHeldAction(UIBoolJoin.GearHeaderButtonPress, 2000,
|
||||
() => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.TechPanelSetupVisible));// ShowInterlockedModal(UIBoolJoin.TechPanelSetupVisible));
|
||||
TriList.SetSigFalseAction(UIBoolJoin.TechPagesExitButton, () =>
|
||||
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
|
||||
PopupInterlock.HideAndClear()); // HideCurrentInterlockedModal());
|
||||
#warning This gets overridden by config after NYU demo
|
||||
if(TriList is CrestronApp)
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using Crestron.SimplSharp;
|
||||
using Crestron.SimplSharpPro.DeviceSupport;
|
||||
|
||||
using PepperDash.Core;
|
||||
using PepperDash.Essentials;
|
||||
using PepperDash.Essentials.Core;
|
||||
using PepperDash.Essentials.Core.SmartObjects;
|
||||
using PepperDash.Essentials.Core.Touchpanels.Keyboards;
|
||||
|
||||
namespace PepperDash.Essentials.UIDrivers
|
||||
{
|
||||
public class EssentialsHuddleTechPageDriver : PanelDriverBase
|
||||
{
|
||||
SmartObjectDynamicList MenuList;
|
||||
IAVDriver Parent;
|
||||
JoinedSigInterlock PagesInterlock;
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="trilist"></param>
|
||||
/// <param name="parent"></param>
|
||||
public EssentialsHuddleTechPageDriver(BasicTriListWithSmartObject trilist, IAVDriver parent)
|
||||
: base(trilist)
|
||||
{
|
||||
Parent = parent;
|
||||
PagesInterlock = new JoinedSigInterlock(trilist);
|
||||
PagesInterlock.SetButDontShow(UIBoolJoin.TechSystemStatusVisible);
|
||||
|
||||
trilist.SetSigFalseAction(UIBoolJoin.TechExitButton, Hide);
|
||||
|
||||
MenuList = new SmartObjectDynamicList(trilist.SmartObjects[UISmartObjectJoin.TechMenuList],
|
||||
true, 3100);
|
||||
|
||||
MenuList.SetFeedback(1, true); // initial fb
|
||||
|
||||
MenuList.SetItemMainText(1, "System Status");
|
||||
MenuList.SetItemButtonAction(1, b => {
|
||||
if (b) PagesInterlock.ShowInterlocked(UIBoolJoin.TechSystemStatusVisible);
|
||||
MenuList.SetFeedback(1, true);
|
||||
});
|
||||
|
||||
MenuList.SetItemMainText(2, "Panel Setup");
|
||||
MenuList.SetItemButtonAction(2, b => {
|
||||
if (b) PagesInterlock.ShowInterlocked(UIBoolJoin.TechPanelSetupVisible);
|
||||
MenuList.SetFeedback(2, true);
|
||||
});
|
||||
|
||||
MenuList.SetItemMainText(3, "System Status");
|
||||
MenuList.SetItemButtonAction(3, b => {
|
||||
if (b) PagesInterlock.ShowInterlocked(UIBoolJoin.TechDisplayControlsVisible);
|
||||
MenuList.SetFeedback(3, true);
|
||||
});
|
||||
|
||||
MenuList.Count = 3;
|
||||
}
|
||||
|
||||
public override void Show()
|
||||
{
|
||||
TriList.SetBool(UIBoolJoin.TechCommonItemsVisbible, true);
|
||||
PagesInterlock.Show();
|
||||
base.Show();
|
||||
}
|
||||
|
||||
public override void Hide()
|
||||
{
|
||||
TriList.SetBool(UIBoolJoin.TechCommonItemsVisbible, false);
|
||||
PagesInterlock.Hide();
|
||||
base.Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -121,16 +121,47 @@ namespace PepperDash.Essentials
|
||||
/// </summary>
|
||||
JoinedSigInterlock StagingBarInterlock;
|
||||
|
||||
/// <summary>
|
||||
/// Interlocks the various call-related subpages
|
||||
/// </summary>
|
||||
JoinedSigInterlock CallPagesInterlock;
|
||||
|
||||
/// <summary>
|
||||
/// The Video codec driver
|
||||
/// </summary>
|
||||
PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver VCDriver;
|
||||
|
||||
/// <summary>
|
||||
/// The driver for the tech page. Lazy getter for memory usage
|
||||
/// </summary>
|
||||
PepperDash.Essentials.UIDrivers.EssentialsHuddleTechPageDriver TechDriver
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_TechDriver == null)
|
||||
_TechDriver = new PepperDash.Essentials.UIDrivers.EssentialsHuddleTechPageDriver(TriList, this);
|
||||
return _TechDriver;
|
||||
}
|
||||
}
|
||||
PepperDash.Essentials.UIDrivers.EssentialsHuddleTechPageDriver _TechDriver;
|
||||
|
||||
/// <summary>
|
||||
/// Controls timeout of notification ribbon timer
|
||||
/// </summary>
|
||||
CTimer RibbonTimer;
|
||||
|
||||
/// <summary>
|
||||
/// The keyboard
|
||||
/// </summary>
|
||||
public PepperDash.Essentials.Core.Touchpanels.Keyboards.HabaneroKeyboardController Keyboard { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
/// The mode showing. Presentation or call.
|
||||
/// </summary>
|
||||
UiDisplayMode CurrentMode = UiDisplayMode.Start;
|
||||
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Constructor
|
||||
/// </summary>
|
||||
@@ -277,9 +308,9 @@ namespace PepperDash.Essentials
|
||||
|
||||
// Setup button - shows volumes with default button OR hold for tech page
|
||||
TriList.SetSigHeldAction(UIBoolJoin.GearHeaderButtonPress, 2000,
|
||||
() => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.TechPanelSetupVisible),
|
||||
ShowTech,
|
||||
() => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible));
|
||||
TriList.SetSigFalseAction(UIBoolJoin.TechPagesExitButton, () =>
|
||||
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
|
||||
PopupInterlock.HideAndClear());
|
||||
|
||||
// Volume related things
|
||||
@@ -379,6 +410,15 @@ namespace PepperDash.Essentials
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reveals the tech page and puts away anything that's in the way.
|
||||
/// </summary>
|
||||
void ShowTech()
|
||||
{
|
||||
PopupInterlock.HideAndClear();
|
||||
TechDriver.Show();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// When the room is off, set the footer SRL
|
||||
/// </summary>
|
||||
99
Essentials/PepperDashEssentials/UIDrivers/SigInterlock.cs
Normal file
99
Essentials/PepperDashEssentials/UIDrivers/SigInterlock.cs
Normal file
@@ -0,0 +1,99 @@
|
||||
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;
|
||||
|
||||
namespace PepperDash.Essentials
|
||||
{
|
||||
/// <summary>
|
||||
/// Used for interlocking sigs, using a set-clears-last-set model.
|
||||
/// </summary>
|
||||
public class SigInterlock
|
||||
{
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public BoolInputSig CurrentSig { get; private set; }
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
public SigInterlock()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hides CurrentJoin and shows join. Does nothing when resending CurrentJoin
|
||||
/// </summary>
|
||||
public void ShowInterlocked(BoolInputSig sig)
|
||||
{
|
||||
if (CurrentSig == sig)
|
||||
return;
|
||||
SetButDontShow(sig);
|
||||
sig.BoolValue = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
///
|
||||
/// </summary>
|
||||
/// <param name="join"></param>
|
||||
public void ShowInterlockedWithToggle(BoolInputSig sig)
|
||||
{
|
||||
if(CurrentSig == sig)
|
||||
HideAndClear();
|
||||
else
|
||||
{
|
||||
if(CurrentSig != null)
|
||||
CurrentSig.BoolValue = false;
|
||||
CurrentSig = sig;
|
||||
CurrentSig.BoolValue = true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hides current Sig and clears CurrentSig
|
||||
/// </summary>
|
||||
public void HideAndClear()
|
||||
{
|
||||
Hide();
|
||||
CurrentSig = null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Hides the current Sig but does not clear the selected Sig in case
|
||||
/// it needs to be reshown
|
||||
/// </summary>
|
||||
public void Hide()
|
||||
{
|
||||
if(CurrentSig != null)
|
||||
CurrentSig.BoolValue = false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// If CurrentSig is set, it restores that Sig
|
||||
/// </summary>
|
||||
public void Show()
|
||||
{
|
||||
if(CurrentSig != null)
|
||||
CurrentSig.BoolValue = true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Useful for pre-setting the interlock but not enabling it. Sets CurrentSig
|
||||
/// </summary>
|
||||
/// <param name="join"></param>
|
||||
public void SetButDontShow(BoolInputSig sig)
|
||||
{
|
||||
if (CurrentSig != null)
|
||||
CurrentSig.BoolValue = false;
|
||||
CurrentSig = sig;
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user