General code cleanup and updates to Huddle UI drivers to comply with Vtc1 changes

This commit is contained in:
Neil Dorin
2017-10-30 11:50:22 -06:00
parent 5f5c963fa4
commit 0ede2e9973
13 changed files with 1319 additions and 1017 deletions

View File

@@ -21,7 +21,9 @@ namespace PepperDash.Essentials.Devices.Common.Codec
{ {
public abstract bool MultiSiteOptionIsEnabled { get; } public abstract bool MultiSiteOptionIsEnabled { get; }
public abstract string IpAddress { get; } public abstract string IpAddress { get; }
public abstract string PhoneNumber { get; } public abstract string SipPhoneNumber { get; }
public abstract string E164Alias { get; }
public abstract string H323Id { get; }
public abstract string SipUri { get; } public abstract string SipUri { get; }
public abstract bool AutoAnswerEnabled { get; } public abstract bool AutoAnswerEnabled { get; }
} }

View File

@@ -1285,7 +1285,27 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
return string.Empty; return string.Empty;
} }
} }
public override string PhoneNumber public override string E164Alias
{
get
{
if (CodecConfiguration.Configuration.H323.H323Alias.E164 != null)
return CodecConfiguration.Configuration.H323.H323Alias.E164.Value;
else
return string.Empty;
}
}
public override string H323Id
{
get
{
if (CodecConfiguration.Configuration.H323.H323Alias.ID != null)
return CodecConfiguration.Configuration.H323.H323Alias.E164.Value;
else
return string.Empty;
}
}
public override string SipPhoneNumber
{ {
get get
{ {

View File

@@ -5,7 +5,10 @@ using System.Text;
using Crestron.SimplSharp; using Crestron.SimplSharp;
using PepperDash.Core;
using Newtonsoft.Json; using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
@@ -212,9 +215,16 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
public Mode7 Mode { get; set; } public Mode7 Mode { get; set; }
} }
public class Framerate
{
public string valueSpaceRef { get; set; }
public string Value { get; set; }
}
public class Camera public class Camera
{ {
public string id { get; set; } public string id { get; set; }
public Framerate Framerate { get; set; }
public Backlight Backlight { get; set; } public Backlight Backlight { get; set; }
public Brightness Brightness { get; set; } public Brightness Brightness { get; set; }
public Focus Focus { get; set; } public Focus Focus { get; set; }
@@ -243,9 +253,68 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
public class Cameras public class Cameras
{ {
//[JsonConverter(typeof(CameraConverter))] //[JsonConverter(typeof(CameraConverter)), JsonProperty("Camera")]
//public List<Camera> Camera { get; set; } //public List<Camera> Camera { get; set; }
//[JsonProperty("SpeakerTrack")]
public SpeakerTrack SpeakerTrack { get; set; } public SpeakerTrack SpeakerTrack { get; set; }
public Cameras()
{
//Camera = new List<Camera>();
SpeakerTrack = new SpeakerTrack();
}
}
public class CameraConverter : JsonConverter
{
// this is currently not working
public override bool CanConvert(System.Type objectType)
{
return objectType == typeof(Camera) || objectType == typeof(List<Camera>); // This should not be called but is required for implmentation
}
public override object ReadJson(JsonReader reader, System.Type objectType, object existingValue, JsonSerializer serializer)
{
try
{
if (reader.TokenType == JsonToken.StartArray)
{
var l = new List<Camera>();
reader.Read();
while (reader.TokenType != JsonToken.EndArray)
{
l.Add(reader.Value as Camera);
reader.Read();
}
Debug.Console(1, "[xConfiguration]: Cameras converted as list");
return l;
}
else
{
Debug.Console(1, "[xConfiguration]: Camera converted as single object and added to list");
return new List<Camera> { reader.Value as Camera };
}
}
catch (Exception e)
{
Debug.Console(1, "[xConfiguration]: Unable to convert JSON for camera objects: {0}", e);
return new List<Camera>();
}
}
public override bool CanWrite
{
get
{
return false;
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException("Write not implemented");
}
} }
public class Delay public class Delay

View File

@@ -316,16 +316,69 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
public class Cameras public class Cameras
{ {
// [JsonConverter(typeof(CameraConverter))] // [JsonConverter(typeof(CameraConverter))]
//public List<Camera> Camera { get; set; } public List<Camera> Camera { get; set; }
public SpeakerTrack SpeakerTrack { get; set; } public SpeakerTrack SpeakerTrack { get; set; }
public Cameras() public Cameras()
{ {
//Camera = new List<Camera>(); Camera = new List<Camera>();
SpeakerTrack = new SpeakerTrack(); SpeakerTrack = new SpeakerTrack();
} }
} }
//public class CameraConverter : JsonConverter
//{
// public override bool CanConvert(System.Type objectType)
// {
// return true; // objectType == typeof(Camera) || objectType == typeof(List<Camera>); // This should not be called but is required for implmentation
// }
// public override object ReadJson(JsonReader reader, System.Type objectType, object existingValue, JsonSerializer serializer)
// {
// try
// {
// if (reader.TokenType == JsonToken.StartArray)
// {
// var l = new List<Camera>();
// reader.Read();
// while (reader.TokenType != JsonToken.EndArray)
// {
// l.Add(reader.Value as Camera);
// reader.Read();
// }
// Debug.Console(1, "[xStatus]: Cameras converted as list");
// return l;
// }
// else
// {
// Debug.Console(1, "[xStatus]: Camera converted as single object and added to list");
// return new List<Camera> { reader.Value as Camera };
// }
// }
// catch (Exception e)
// {
// Debug.Console(1, "[xStatus]: Unable to convert JSON for camera objects: {0}", e);
// return new List<Camera>();
// }
// }
// public override bool CanWrite
// {
// get
// {
// return false;
// }
// }
// public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
// {
// throw new NotImplementedException("Write not implemented");
// }
//}
public class MaxActiveCalls public class MaxActiveCalls
{ {
public string Value { get; set; } public string Value { get; set; }

View File

@@ -402,12 +402,22 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
get { return true; } get { return true; }
} }
public override string IpAddress public override string E164Alias
{ {
get { return "xx.xx.xx.xx"; } get { return "someE164alias"; }
} }
public override string PhoneNumber public override string H323Id
{
get { return "someH323Id"; }
}
public override string IpAddress
{
get { return "xxx.xxx.xxx.xxx"; }
}
public override string SipPhoneNumber
{ {
get { return "333-444-5555"; } get { return "333-444-5555"; }
} }

View File

@@ -43,8 +43,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; } public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
bool wasIsInCall;
/// <summary> /// <summary>
/// Returns true when any call is not in state Unknown, Disconnecting, Disconnected /// Returns true when any call is not in state Unknown, Disconnecting, Disconnected
/// </summary> /// </summary>

View File

@@ -169,7 +169,7 @@
<Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.cs" /> <Compile Include="FOR REFERENCE UI\Panels\SmartGraphicsTouchpanelControllerBase.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\EssentialsHuddleVTC\EssentialsHuddleTechPageDriver.cs" /> <Compile Include="UIDrivers\EssentialsHuddle\EssentialsHuddleTechPageDriver.cs" />
<Compile Include="UI\HttpLogoServer.cs" /> <Compile Include="UI\HttpLogoServer.cs" />
<Compile Include="UI\SmartObjectHeaderButtonList.cs" /> <Compile Include="UI\SmartObjectHeaderButtonList.cs" />
<Compile Include="UI\SubpageReferenceListCallStagingItem.cs" /> <Compile Include="UI\SubpageReferenceListCallStagingItem.cs" />
@@ -185,7 +185,7 @@
<Compile Include="UIDrivers\Page Drivers\SingleSubpageModalDriver.cs" /> <Compile Include="UIDrivers\Page Drivers\SingleSubpageModalDriver.cs" />
<Compile Include="UIDrivers\Essentials\EssentialsPanelMainInterfaceDriver.cs" /> <Compile Include="UIDrivers\Essentials\EssentialsPanelMainInterfaceDriver.cs" />
<Compile Include="UIDrivers\enums and base.cs" /> <Compile Include="UIDrivers\enums and base.cs" />
<Compile Include="UIDrivers\Essentials\EssentialsHuddlePanelAvFunctionsDriver.cs" /> <Compile Include="UIDrivers\EssentialsHuddle\EssentialsHuddlePanelAvFunctionsDriver.cs" />
<Compile Include="UIDrivers\Page Drivers\SingleSubpageModalAndBackDriver.cs" /> <Compile Include="UIDrivers\Page Drivers\SingleSubpageModalAndBackDriver.cs" />
<Compile Include="UIDrivers\SmartObjectRoomsList.cs" /> <Compile Include="UIDrivers\SmartObjectRoomsList.cs" />
<Compile Include="UI\JoinConstants\UIBoolJoin.cs" /> <Compile Include="UI\JoinConstants\UIBoolJoin.cs" />

View File

@@ -24,8 +24,8 @@ namespace PepperDash.Essentials
var disp = DefaultDisplay as DisplayBase; var disp = DefaultDisplay as DisplayBase;
var val = CurrentSourceInfo != null var val = CurrentSourceInfo != null
&& CurrentSourceInfo.Type == eSourceListItemType.Route && CurrentSourceInfo.Type == eSourceListItemType.Route
&& disp != null && disp != null;
&& disp.PowerIsOnFeedback.BoolValue; //&& disp.PowerIsOnFeedback.BoolValue;
return val; return val;
}; };
} }

View File

@@ -118,10 +118,6 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public const uint RoomPhoneText = 3904; public const uint RoomPhoneText = 3904;
/// <summary> /// <summary>
/// 3905 - SIP address for room header
/// </summary>
public const uint RoomSipText = 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;

View File

@@ -66,6 +66,11 @@ namespace PepperDash.Essentials
} }
string _DefaultRoomKey; string _DefaultRoomKey;
/// <summary>
/// Indicates that the SetHeaderButtons method has completed successfully
/// </summary>
public bool HeaderButtonsAreSetUp { get; private set; }
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
@@ -148,10 +153,28 @@ namespace PepperDash.Essentials
ModalDialog PowerDownModal; ModalDialog PowerDownModal;
ModalDialog WarmingCoolingModal;
JoinedSigInterlock PopupInterlock; JoinedSigInterlock PopupInterlock;
/// <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, CurrentRoom.Config.Tech);
return _TechDriver;
}
}
PepperDash.Essentials.UIDrivers.EssentialsHuddleTechPageDriver _TechDriver;
/// <summary>
/// Controls timeout of notification ribbon timer
/// </summary>
CTimer RibbonTimer;
/// <summary> /// <summary>
/// Constructor /// Constructor
/// </summary> /// </summary>
@@ -190,53 +213,80 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
public override void Show() public override void Show()
{ {
TriList.BooleanInput[UIBoolJoin.TopBarHabaneroVisible].BoolValue = true; if (CurrentRoom == null)
{
Debug.Console(1, "ERROR: AVUIFunctionsDriver, Cannot show. No room assigned");
return;
}
var roomConf = CurrentRoom.Config;
TriList.SetString(UIStringJoin.CurrentRoomName, CurrentRoom.Name);
if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Habanero)
{
TriList.SetSigFalseAction(UIBoolJoin.HeaderRoomButtonPress, () =>
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.RoomHeaderPageVisible));
}
else if (Config.HeaderStyle.ToLower() == CrestronTouchpanelPropertiesConfig.Verbose)
{
// room name on join 1, concat phone and sip on join 2, no button method
//var addr = roomConf.Addresses;
//if (addr == null) // protect from missing values by using default empties
// addr = new EssentialsRoomAddressPropertiesConfig();
//// empty string when either missing, pipe when both showing
//TriList.SetString(UIStringJoin.RoomAddressPipeText,
// (string.IsNullOrEmpty(addr.PhoneNumber.Trim())
// || string.IsNullOrEmpty(addr.SipAddress.Trim())) ? "" : " | ");
//TriList.SetString(UIStringJoin.RoomPhoneText, addr.PhoneNumber);
//TriList.SetString(UIStringJoin.RoomSipText, addr.SipAddress);
}
TriList.SetBool(UIBoolJoin.DateAndTimeVisible, Config.ShowDate && Config.ShowTime);
TriList.SetBool(UIBoolJoin.DateOnlyVisible, Config.ShowDate && !Config.ShowTime);
TriList.SetBool(UIBoolJoin.TimeOnlyVisible, !Config.ShowDate && Config.ShowTime);
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = true; TriList.BooleanInput[UIBoolJoin.ActivityFooterVisible].BoolValue = true;
// Default to showing rooms/sources now. // Default to showing rooms/sources now.
ShowMode(UiDisplayMode.PresentationMode); if (CurrentRoom.OnFeedback.BoolValue)
{
TriList.SetBool(UIBoolJoin.TapToBeginVisible, false);
SetupActivityFooterWhenRoomOn();
}
else
{
TriList.SetBool(UIBoolJoin.StartPageVisible, true);
TriList.SetBool(UIBoolJoin.TapToBeginVisible, true);
SetupActivityFooterWhenRoomOff();
}
ShowCurrentDisplayModeSigsInUse();
// Attach actions // Attach actions
TriList.SetSigFalseAction(UIBoolJoin.VolumeButtonPopupPress, VolumeButtonsTogglePress); TriList.SetSigFalseAction(UIBoolJoin.VolumeButtonPopupPress, VolumeButtonsTogglePress);
//Interlocked modals // Generic "close" button for popup modals
TriList.SetSigFalseAction(UIBoolJoin.InterlockedModalClosePress, PopupInterlock.HideAndClear);// HideCurrentInterlockedModal); TriList.SetSigFalseAction(UIBoolJoin.InterlockedModalClosePress, PopupInterlock.HideAndClear);
TriList.SetSigFalseAction(UIBoolJoin.HelpPress, () =>
{ // Volume related things
string message = null; TriList.SetSigFalseAction(UIBoolJoin.VolumeDefaultPress, () => CurrentRoom.SetDefaultLevels());
var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey) TriList.SetString(UIStringJoin.AdvancedVolumeSlider1Text, "Room");
as EssentialsHuddleSpaceRoom;
if (room != null)
message = room.Config.HelpMessage;
else
message = "Sorry, no help message available. No room connected.";
TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible); // ShowInterlockedModal(UIBoolJoin.HelpPageVisible);
});
//TriList.SetSigFalseAction(UIBoolJoin.RoomHeaderButtonPress, () => //TriList.SetSigFalseAction(UIBoolJoin.RoomHeaderButtonPress, () =>
// ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible)); // ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible));
// Setup button
TriList.SetSigHeldAction(UIBoolJoin.FIXFIX_HeaderGearButtonPress_FIXFIX, 2000, //if(TriList is CrestronApp)
() => PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.TechPanelSetupVisible));// ShowInterlockedModal(UIBoolJoin.TechPanelSetupVisible)); // TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = false;
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () => //else
PopupInterlock.HideAndClear()); // HideCurrentInterlockedModal()); // TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = true;
if(TriList is CrestronApp)
TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = false;
else
TriList.BooleanInput[UIBoolJoin.GearButtonVisible].BoolValue = true;
// power-related functions // power-related functions
// Note: some of these are not directly-related to the huddle space UI, but are held over // Note: some of these are not directly-related to the huddle space UI, but are held over
// in case // in case
TriList.SetSigFalseAction(UIBoolJoin.ShowPowerOffPress, PowerButtonPressed); TriList.SetSigFalseAction(UIBoolJoin.ShowPowerOffPress, EndMeetingPress);
TriList.SetSigFalseAction(UIBoolJoin.PowerOffMorePress, () =>
{
CancelPowerOffTimer();
TriList.BooleanInput[UIBoolJoin.PowerOffStep1Visible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.PowerOffStep2Visible].BoolValue = true;
});
TriList.SetSigFalseAction(UIBoolJoin.DisplayPowerTogglePress, () => TriList.SetSigFalseAction(UIBoolJoin.DisplayPowerTogglePress, () =>
{ {
if (CurrentRoom != null && CurrentRoom.DefaultDisplay is IPower) if (CurrentRoom != null && CurrentRoom.DefaultDisplay is IPower)
@@ -246,13 +296,61 @@ namespace PepperDash.Essentials
base.Show(); base.Show();
} }
/// <summary>
///
/// </summary>
public void EndMeetingPress()
{
if (!CurrentRoom.OnFeedback.BoolValue
|| CurrentRoom.ShutdownPromptTimer.IsRunningFeedback.BoolValue)
return;
CurrentRoom.StartShutdown(eShutdownType.Manual);
}
/// <summary>
/// Reveals the tech page and puts away anything that's in the way.
/// </summary>
void ShowTech()
{
PopupInterlock.HideAndClear();
TechDriver.Show();
}
/// <summary>
///
/// </summary>
void ShowLogo()
{
if (CurrentRoom.LogoUrl == null)
{
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, true);
TriList.SetBool(UIBoolJoin.LogoUrlVisible, false);
}
else
{
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
TriList.SetBool(UIBoolJoin.LogoUrlVisible, true);
TriList.SetString(UIStringJoin.LogoUrl, _CurrentRoom.LogoUrl);
}
}
/// <summary>
///
/// </summary>
void HideLogo()
{
TriList.SetBool(UIBoolJoin.LogoDefaultVisible, false);
TriList.SetBool(UIBoolJoin.LogoUrlVisible, false);
}
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public override void Hide() public override void Hide()
{ {
HideAndClearCurrentDisplayModeSigsInUse(); HideAndClearCurrentDisplayModeSigsInUse();
TriList.BooleanInput[UIBoolJoin.TopBarHabaneroVisible].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[UIBoolJoin.StartPageVisible].BoolValue = false;
TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false; TriList.BooleanInput[UIBoolJoin.TapToBeginVisible].BoolValue = false;
@@ -264,6 +362,40 @@ namespace PepperDash.Essentials
base.Hide(); base.Hide();
} }
/// <summary>
/// Reveals a message on the notification ribbon until cleared
/// </summary>
/// <param name="message">Text to display</param>
/// <param name="timeout">Time in ms to display. 0 to keep on screen</param>
public void ShowNotificationRibbon(string message, int timeout)
{
TriList.SetString(UIStringJoin.NotificationRibbonText, message);
TriList.SetBool(UIBoolJoin.NotificationRibbonVisible, true);
if (timeout > 0)
{
if (RibbonTimer != null)
RibbonTimer.Stop();
RibbonTimer = new CTimer(o =>
{
TriList.SetBool(UIBoolJoin.NotificationRibbonVisible, false);
RibbonTimer = null;
}, timeout);
}
}
/// <summary>
/// Hides the notification ribbon
/// </summary>
public void HideNotificationRibbon()
{
TriList.SetBool(UIBoolJoin.NotificationRibbonVisible, false);
if (RibbonTimer != null)
{
RibbonTimer.Stop();
RibbonTimer = null;
}
}
/// <summary> /// <summary>
/// Shows the various "modes" that this driver controls. Presentation, Setup page /// Shows the various "modes" that this driver controls. Presentation, Setup page
/// </summary> /// </summary>
@@ -330,7 +462,7 @@ namespace PepperDash.Essentials
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl,
0, null)); 0, null));
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl,
3, b => { if (!b) PowerButtonPressed(); })); 4, b => { if (!b) PowerButtonPressed(); }));
ActivityFooterSrl.Count = 2; ActivityFooterSrl.Count = 2;
TriList.UShortInput[UIUshortJoin.PresentationStagingCaretMode].UShortValue = 1; TriList.UShortInput[UIUshortJoin.PresentationStagingCaretMode].UShortValue = 1;
EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(2, 1); EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(2, 1);
@@ -351,34 +483,6 @@ namespace PepperDash.Essentials
CurrentRoom.RunDefaultRoute(); CurrentRoom.RunDefaultRoute();
} }
/// <summary>
/// Hides a current modal if showing and then shows a new.
/// </summary>
/// <param name="join"></param>
//void ShowInterlockedModal(uint join)
//{
// if (CurrentInterlockedModalJoin == join)
// HideCurrentInterlockedModal();
// else
// {
// // sets the sig true if the join is right
// TriList.BooleanInput[UIBoolJoin.HelpPageVisible].BoolValue = join == UIBoolJoin.HelpPageVisible;
// TriList.BooleanInput[UIBoolJoin.RoomHeaderPageVisible].BoolValue = join == UIBoolJoin.RoomHeaderPageVisible;
// TriList.BooleanInput[UIBoolJoin.VolumesPageVisible].BoolValue = join == UIBoolJoin.VolumesPageVisible;
// TriList.BooleanInput[UIBoolJoin.TechPanelSetupVisible].BoolValue = join == UIBoolJoin.TechPanelSetupVisible;
// CurrentInterlockedModalJoin = join;
// }
//}
///// <summary>
///// Helper to hide the current interlocked modal
///// </summary>
//void HideCurrentInterlockedModal()
//{
// TriList.BooleanInput[CurrentInterlockedModalJoin].BoolValue = false;
// CurrentInterlockedModalJoin = 0;
//}
/// <summary> /// <summary>
/// Shows all sigs that are in CurrentDisplayModeSigsInUse /// Shows all sigs that are in CurrentDisplayModeSigsInUse
@@ -493,13 +597,6 @@ namespace PepperDash.Essentials
PowerDownModal = new ModalDialog(TriList); PowerDownModal = new ModalDialog(TriList);
var message = string.Format("Meeting will end in {0} seconds", CurrentRoom.ShutdownPromptSeconds); var message = string.Format("Meeting will end in {0} seconds", CurrentRoom.ShutdownPromptSeconds);
//// figure out a cleaner way to update gauge
//var gauge = CurrentRoom.ShutdownPromptTimer.PercentFeedback;
//EventHandler<EventArgs> gaugeHandler = null;
//gaugeHandler = (o, a) => TriList.UShortInput[ModalDialog.TimerGaugeJoin].UShortValue =
// (ushort)(gauge.UShortValue * 65535 / 100);
//gauge.OutputChange += gaugeHandler;
// Attach timer things to modal // Attach timer things to modal
CurrentRoom.ShutdownPromptTimer.TimeRemainingFeedback.OutputChange += ShutdownPromptTimer_TimeRemainingFeedback_OutputChange; CurrentRoom.ShutdownPromptTimer.TimeRemainingFeedback.OutputChange += ShutdownPromptTimer_TimeRemainingFeedback_OutputChange;
CurrentRoom.ShutdownPromptTimer.PercentFeedback.OutputChange += ShutdownPromptTimer_PercentFeedback_OutputChange; CurrentRoom.ShutdownPromptTimer.PercentFeedback.OutputChange += ShutdownPromptTimer_PercentFeedback_OutputChange;
@@ -710,6 +807,8 @@ namespace PepperDash.Essentials
RefreshAudioDeviceConnections(); RefreshAudioDeviceConnections();
_CurrentRoom.CurrentSingleSourceChange += CurrentRoom_SourceInfoChange; _CurrentRoom.CurrentSingleSourceChange += CurrentRoom_SourceInfoChange;
RefreshSourceInfo(); RefreshSourceInfo();
SetupHeaderButtons();
} }
else else
{ {
@@ -718,6 +817,84 @@ namespace PepperDash.Essentials
} }
} }
void SetupHeaderButtons()
{
HeaderButtonsAreSetUp = false;
TriList.SetBool(UIBoolJoin.TopBarHabaneroDynamicVisible, true);
var roomConf = CurrentRoom.Config;
// Gear
TriList.SetString(UIStringJoin.HeaderButtonIcon5, "Gear");
TriList.SetSigHeldAction(UIBoolJoin.HeaderIcon5Press, 2000,
ShowTech,
null,
() =>
{
if (CurrentRoom.OnFeedback.BoolValue)
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPageVisible);
else
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.VolumesPagePowerOffVisible);
});
TriList.SetSigFalseAction(UIBoolJoin.TechExitButton, () =>
PopupInterlock.HideAndClear());
// Help button and popup
if (CurrentRoom.Config.Help != null)
{
TriList.SetString(UIStringJoin.HelpMessage, roomConf.Help.Message);
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, roomConf.Help.ShowCallButton);
TriList.SetString(UIStringJoin.HelpPageCallButtonText, roomConf.Help.CallButtonText);
if (roomConf.Help.ShowCallButton)
TriList.SetSigFalseAction(UIBoolJoin.HelpPageShowCallButtonPress, () => { }); // ************ FILL IN
else
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
}
else // older config
{
TriList.SetString(UIStringJoin.HelpMessage, CurrentRoom.Config.HelpMessage);
TriList.SetBool(UIBoolJoin.HelpPageShowCallButtonVisible, false);
TriList.SetString(UIStringJoin.HelpPageCallButtonText, null);
TriList.ClearBoolSigAction(UIBoolJoin.HelpPageShowCallButtonPress);
}
TriList.SetString(UIStringJoin.HeaderButtonIcon4, "Help");
TriList.SetSigFalseAction(UIBoolJoin.HeaderIcon4Press, () =>
{
string message = null;
var room = DeviceManager.GetDeviceForKey(Config.DefaultRoomKey)
as EssentialsHuddleSpaceRoom;
if (room != null)
message = room.Config.HelpMessage;
else
message = "Sorry, no help message available. No room connected.";
//TriList.StringInput[UIStringJoin.HelpMessage].StringValue = message;
PopupInterlock.ShowInterlockedWithToggle(UIBoolJoin.HelpPageVisible);
});
uint nextJoin = 3953;
//// Calendar button
//if (_CurrentRoom.ScheduleSource != null)
//{
// TriList.SetString(nextJoin, "Calendar");
// TriList.SetSigFalseAction(nextJoin, CalendarPress);
// nextJoin--;
//}
//nextJoin--;
// blank any that remain
for (var i = nextJoin; i > 3950; i--)
{
TriList.SetString(i, "Blank");
TriList.SetSigFalseAction(i, () => { });
}
HeaderButtonsAreSetUp = true;
}
/// <summary> /// <summary>
/// For room on/off changes /// For room on/off changes
/// </summary> /// </summary>
@@ -744,6 +921,7 @@ namespace PepperDash.Essentials
else else
{ {
SetupActivityFooterWhenRoomOff(); SetupActivityFooterWhenRoomOff();
ShowLogo();
TriList.BooleanInput[UIBoolJoin.StartPageVisible].BoolValue = true; TriList.BooleanInput[UIBoolJoin.StartPageVisible].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;
@@ -755,38 +933,26 @@ namespace PepperDash.Essentials
/// </summary> /// </summary>
void CurrentRoom_IsWarmingFeedback_OutputChange(object sender, EventArgs e) void CurrentRoom_IsWarmingFeedback_OutputChange(object sender, EventArgs e)
{ {
var value = CurrentRoom.IsWarmingUpFeedback.BoolValue; if (CurrentRoom.IsWarmingUpFeedback.BoolValue)
//Debug.Console(2, CurrentRoom, "UI: WARMING event={0}", value);
if (value)
{ {
WarmingCoolingModal = new ModalDialog(TriList); ShowNotificationRibbon("Room is powering on. Please wait...", 0);
WarmingCoolingModal.PresentModalDialog(0, "Powering Up", "Power", "<p>Room is powering up</p><p>Please wait</p>",
"", "", false, false, null);
} }
else else
{ {
if (WarmingCoolingModal != null) ShowNotificationRibbon("Room is powered on. Welcome.", 2000);
WarmingCoolingModal.CancelDialog();
} }
} }
void IsCoolingDownFeedback_OutputChange(object sender, EventArgs e) void IsCoolingDownFeedback_OutputChange(object sender, EventArgs e)
{ {
var value = CurrentRoom.IsCoolingDownFeedback.BoolValue; if (CurrentRoom.IsCoolingDownFeedback.BoolValue)
//Debug.Console(2, CurrentRoom, "UI: Cooldown event={0}", value);
if (value)
{ {
WarmingCoolingModal = new ModalDialog(TriList); ShowNotificationRibbon("Room is powering off. Please wait.", 0);
WarmingCoolingModal.PresentModalDialog(0, "Shut Down", "Power", "<p>Room is shutting down</p><p>Please wait</p>",
"", "", false, false, null);
} }
else else
{ {
if (WarmingCoolingModal != null) HideNotificationRibbon();
WarmingCoolingModal.CancelDialog();
} }
} }

View File

@@ -37,10 +37,6 @@ namespace PepperDash.Essentials.UIDrivers
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
IAVDriver Parent;
/// <summary>
///
/// </summary>
JoinedSigInterlock PagesInterlock; JoinedSigInterlock PagesInterlock;
/// <summary> /// <summary>
@@ -63,10 +59,9 @@ namespace PepperDash.Essentials.UIDrivers
/// </summary> /// </summary>
/// <param name="trilist"></param> /// <param name="trilist"></param>
/// <param name="parent"></param> /// <param name="parent"></param>
public EssentialsHuddleTechPageDriver(BasicTriListWithSmartObject trilist, IAVDriver parent, EssentialsRoomTechConfig config) public EssentialsHuddleTechPageDriver(BasicTriListWithSmartObject trilist, EssentialsRoomTechConfig config)
: base(trilist) : base(trilist)
{ {
Parent = parent;
Config = config; Config = config;
PagesInterlock = new JoinedSigInterlock(trilist); PagesInterlock = new JoinedSigInterlock(trilist);

View File

@@ -164,7 +164,7 @@ namespace PepperDash.Essentials
get get
{ {
if (_TechDriver == null) if (_TechDriver == null)
_TechDriver = new PepperDash.Essentials.UIDrivers.EssentialsHuddleTechPageDriver(TriList, this, CurrentRoom.Config.Tech); _TechDriver = new PepperDash.Essentials.UIDrivers.EssentialsHuddleTechPageDriver(TriList, CurrentRoom.Config.Tech);
return _TechDriver; return _TechDriver;
} }
} }
@@ -1244,15 +1244,10 @@ namespace PepperDash.Essentials
if (CurrentRoom.IsWarmingUpFeedback.BoolValue) if (CurrentRoom.IsWarmingUpFeedback.BoolValue)
{ {
ShowNotificationRibbon("Room is powering on. Please wait...", 0); ShowNotificationRibbon("Room is powering on. Please wait...", 0);
//WarmingCoolingModal = new ModalDialog(TriList);
//WarmingCoolingModal.PresentModalDialog(0, "Powering Up", "Power", "<p>Room is powering up</p><p>Please wait</p>",
// "", "", false, false, null);
} }
else else
{ {
ShowNotificationRibbon("Room is powered on. Welcome.", 2000); ShowNotificationRibbon("Room is powered on. Welcome.", 2000);
//if (WarmingCoolingModal != null)
// WarmingCoolingModal.CancelDialog();
} }
} }
@@ -1266,16 +1261,10 @@ namespace PepperDash.Essentials
if (CurrentRoom.IsCoolingDownFeedback.BoolValue) if (CurrentRoom.IsCoolingDownFeedback.BoolValue)
{ {
ShowNotificationRibbon("Room is powering off. Please wait.", 0); ShowNotificationRibbon("Room is powering off. Please wait.", 0);
//WarmingCoolingModal = new ModalDialog(TriList);
//WarmingCoolingModal.PresentModalDialog(0, "Power Off", "Power", "<p>Room is powering off</p><p>Please wait</p>",
// "", "", false, false, null);
} }
else else
{ {
HideNotificationRibbon(); HideNotificationRibbon();
//if (WarmingCoolingModal != null)
// WarmingCoolingModal.CancelDialog();
} }
} }

View File

@@ -175,7 +175,6 @@ namespace PepperDash.Essentials.UIDrivers.VC
triList.SetSigFalseAction(UIBoolJoin.VCDirectorySearchTextPress, RevealKeyboard); triList.SetSigFalseAction(UIBoolJoin.VCDirectorySearchTextPress, RevealKeyboard);
//TriList.SetSigFalseAction(UIBoolJoin.VCDirectoryBackspacePress, SearchKeypadBackspacePress);
triList.SetSigHeldAction(UIBoolJoin.VCDirectoryBackspacePress, 500, triList.SetSigHeldAction(UIBoolJoin.VCDirectoryBackspacePress, 500,
StartSearchBackspaceRepeat, StopSearchBackspaceRepeat, SearchKeypadBackspacePress); StartSearchBackspaceRepeat, StopSearchBackspaceRepeat, SearchKeypadBackspacePress);
@@ -194,8 +193,13 @@ namespace PepperDash.Essentials.UIDrivers.VC
/// <param name="e"></param> /// <param name="e"></param>
void Codec_IsReady() void Codec_IsReady()
{ {
TriList.SetString(UIStringJoin.RoomPhoneText, GetFormattedPhoneNumber(Codec.CodecInfo.PhoneNumber)); string roomNumberSipUri = "";
TriList.SetString(UIStringJoin.RoomSipText, Codec.CodecInfo.SipUri); if (!string.IsNullOrEmpty(Codec.CodecInfo.SipUri)) // If both values are present, format the string with a pipe divider
roomNumberSipUri = string.Format("{0} | {2}", GetFormattedPhoneNumber(Codec.CodecInfo.PhoneNumber), Codec.CodecInfo.SipUri);
else // If only one value present, just show the phone number
roomNumberSipUri = Codec.CodecInfo.PhoneNumber;
TriList.SetString(UIStringJoin.RoomPhoneText, roomNumberSipUri);
if(Parent.HeaderButtonsAreSetUp) if(Parent.HeaderButtonsAreSetUp)
Parent.ComputeHeaderCallStatus(Codec); Parent.ComputeHeaderCallStatus(Codec);