mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-14 20:24:57 +00:00
ecs-481 swapped call/share; ecs-483 phone number and address text code (with backing codec modifications)
This commit is contained in:
@@ -275,6 +275,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
|
|||||||
/// <param name="e"></param>
|
/// <param name="e"></param>
|
||||||
void SyncState_InitialSyncCompleted(object sender, EventArgs e)
|
void SyncState_InitialSyncCompleted(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
// Fire the ready event
|
||||||
|
SetIsReady();
|
||||||
//CommDebuggingIsOn = false;
|
//CommDebuggingIsOn = false;
|
||||||
|
|
||||||
GetCallHistory();
|
GetCallHistory();
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
public MockVC(string key, string name)
|
public MockVC(string key, string name)
|
||||||
: base(key, name)
|
: base(key, name)
|
||||||
{
|
{
|
||||||
|
CodecInfo = new MockCodecInfo();
|
||||||
|
|
||||||
// Debug helpers
|
// Debug helpers
|
||||||
IncomingCallFeedback.OutputChange += (o, a) => Debug.Console(1, this, "IncomingCall={0}", _IncomingCall);
|
IncomingCallFeedback.OutputChange += (o, a) => Debug.Console(1, this, "IncomingCall={0}", _IncomingCall);
|
||||||
MuteFeedback.OutputChange += (o, a) => Debug.Console(1, this, "Mute={0}", _IsMuted);
|
MuteFeedback.OutputChange += (o, a) => Debug.Console(1, this, "Mute={0}", _IsMuted);
|
||||||
@@ -40,6 +42,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
InputPorts.Add(HdmiIn1);
|
InputPorts.Add(HdmiIn1);
|
||||||
InputPorts.Add(HdmiIn2);
|
InputPorts.Add(HdmiIn2);
|
||||||
OutputPorts.Add(HdmiOut);
|
OutputPorts.Add(HdmiOut);
|
||||||
|
|
||||||
|
SetIsReady();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Func<bool> IncomingCallFeedbackFunc
|
protected override Func<bool> IncomingCallFeedbackFunc
|
||||||
@@ -299,4 +303,42 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
|||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Implementation for the mock VC
|
||||||
|
/// </summary>
|
||||||
|
public class MockCodecInfo : VideoCodecInfo
|
||||||
|
{
|
||||||
|
|
||||||
|
public override bool MultiSiteOptionIsEnabled
|
||||||
|
{
|
||||||
|
get { return true; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string IpAddress
|
||||||
|
{
|
||||||
|
get { return "xx.xx.xx.xx"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string PhoneNumber
|
||||||
|
{
|
||||||
|
get { return "333-444-5555"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string SipUri
|
||||||
|
{
|
||||||
|
get { return "mock@someurl.com"; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool AutoAnswerEnabled
|
||||||
|
{
|
||||||
|
get { return _AutoAnswerEnabled; }
|
||||||
|
}
|
||||||
|
bool _AutoAnswerEnabled;
|
||||||
|
|
||||||
|
public void SetAutoAnswer(bool value)
|
||||||
|
{
|
||||||
|
_AutoAnswerEnabled = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -1,185 +1,200 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using Crestron.SimplSharp;
|
using Crestron.SimplSharp;
|
||||||
|
|
||||||
using PepperDash.Core;
|
using PepperDash.Core;
|
||||||
using PepperDash.Essentials.Core;
|
using PepperDash.Essentials.Core;
|
||||||
using PepperDash.Essentials.Devices.Common;
|
using PepperDash.Essentials.Devices.Common;
|
||||||
using PepperDash.Essentials.Devices.Common.Codec;
|
using PepperDash.Essentials.Devices.Common.Codec;
|
||||||
|
|
||||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||||
{
|
{
|
||||||
public abstract class VideoCodecBase : Device, IRoutingInputsOutputs, IUsageTracking, IHasDialer, IHasSharing, ICodecAudio, iCodecInfo
|
public abstract class VideoCodecBase : Device, IRoutingInputsOutputs, IUsageTracking, IHasDialer, IHasSharing, ICodecAudio, iCodecInfo
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Fires when the status of any active, dialing, or incoming call changes or is new
|
/// Fires when the status of any active, dialing, or incoming call changes or is new
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public event EventHandler<CodecCallStatusItemChangeEventArgs> CallStatusChange;
|
public event EventHandler<CodecCallStatusItemChangeEventArgs> CallStatusChange;
|
||||||
|
|
||||||
#region IUsageTracking Members
|
public event EventHandler<EventArgs> IsReadyChange;
|
||||||
|
|
||||||
/// <summary>
|
#region IUsageTracking Members
|
||||||
/// This object can be added by outside users of this class to provide usage tracking
|
|
||||||
/// for various services
|
/// <summary>
|
||||||
/// </summary>
|
/// This object can be added by outside users of this class to provide usage tracking
|
||||||
public UsageTracking UsageTracker { get; set; }
|
/// for various services
|
||||||
|
/// </summary>
|
||||||
#endregion
|
public UsageTracking UsageTracker { get; set; }
|
||||||
|
|
||||||
public RoutingPortCollection<RoutingInputPort> InputPorts { get; private set; }
|
#endregion
|
||||||
|
|
||||||
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
|
public RoutingPortCollection<RoutingInputPort> InputPorts { get; private set; }
|
||||||
|
|
||||||
/// <summary>
|
public RoutingPortCollection<RoutingOutputPort> OutputPorts { get; private set; }
|
||||||
/// Returns true when any call is not in state Unknown, Disconnecting, Disconnected
|
|
||||||
/// </summary>
|
/// <summary>
|
||||||
public bool IsInCall { get { return ActiveCalls.Any(c => c.IsActiveCall); } }
|
/// Returns true when any call is not in state Unknown, Disconnecting, Disconnected
|
||||||
|
/// </summary>
|
||||||
public BoolFeedback IncomingCallFeedback { get; private set; }
|
public bool IsInCall { get { return ActiveCalls.Any(c => c.IsActiveCall); } }
|
||||||
|
|
||||||
abstract protected Func<bool> IncomingCallFeedbackFunc { get; }
|
public BoolFeedback IncomingCallFeedback { get; private set; }
|
||||||
abstract protected Func<bool> PrivacyModeIsOnFeedbackFunc { get; }
|
|
||||||
abstract protected Func<int> VolumeLevelFeedbackFunc { get; }
|
abstract protected Func<bool> IncomingCallFeedbackFunc { get; }
|
||||||
abstract protected Func<bool> MuteFeedbackFunc { get; }
|
abstract protected Func<bool> PrivacyModeIsOnFeedbackFunc { get; }
|
||||||
abstract protected Func<string> SharingSourceFeedbackFunc { get; }
|
abstract protected Func<int> VolumeLevelFeedbackFunc { get; }
|
||||||
|
abstract protected Func<bool> MuteFeedbackFunc { get; }
|
||||||
|
abstract protected Func<string> SharingSourceFeedbackFunc { get; }
|
||||||
|
|
||||||
public List<CodecActiveCallItem> ActiveCalls { get; set; }
|
public List<CodecActiveCallItem> ActiveCalls { get; set; }
|
||||||
|
|
||||||
public VideoCodecInfo CodecInfo { get; protected set; }
|
public VideoCodecInfo CodecInfo { get; protected set; }
|
||||||
|
|
||||||
public VideoCodecBase(string key, string name)
|
public bool IsReady { get; protected set; }
|
||||||
: base(key, name)
|
|
||||||
{
|
public VideoCodecBase(string key, string name)
|
||||||
IncomingCallFeedback = new BoolFeedback(IncomingCallFeedbackFunc);
|
: base(key, name)
|
||||||
PrivacyModeIsOnFeedback = new BoolFeedback(PrivacyModeIsOnFeedbackFunc);
|
{
|
||||||
VolumeLevelFeedback = new IntFeedback(VolumeLevelFeedbackFunc);
|
IncomingCallFeedback = new BoolFeedback(IncomingCallFeedbackFunc);
|
||||||
MuteFeedback = new BoolFeedback(MuteFeedbackFunc);
|
PrivacyModeIsOnFeedback = new BoolFeedback(PrivacyModeIsOnFeedbackFunc);
|
||||||
SharingSourceFeedback = new StringFeedback(SharingSourceFeedbackFunc);
|
VolumeLevelFeedback = new IntFeedback(VolumeLevelFeedbackFunc);
|
||||||
|
MuteFeedback = new BoolFeedback(MuteFeedbackFunc);
|
||||||
InputPorts = new RoutingPortCollection<RoutingInputPort>();
|
SharingSourceFeedback = new StringFeedback(SharingSourceFeedbackFunc);
|
||||||
OutputPorts = new RoutingPortCollection<RoutingOutputPort>();
|
|
||||||
|
InputPorts = new RoutingPortCollection<RoutingInputPort>();
|
||||||
|
OutputPorts = new RoutingPortCollection<RoutingOutputPort>();
|
||||||
|
|
||||||
ActiveCalls = new List<CodecActiveCallItem>();
|
ActiveCalls = new List<CodecActiveCallItem>();
|
||||||
}
|
|
||||||
|
|
||||||
#region IHasDialer Members
|
|
||||||
|
|
||||||
public abstract void Dial(string s);
|
|
||||||
public abstract void EndCall(CodecActiveCallItem call);
|
|
||||||
public abstract void EndAllCalls();
|
|
||||||
public abstract void AcceptCall(CodecActiveCallItem call);
|
|
||||||
public abstract void RejectCall(CodecActiveCallItem call);
|
|
||||||
public abstract void SendDtmf(string s);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
public virtual List<Feedback> Feedbacks
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
return new List<Feedback>
|
|
||||||
{
|
|
||||||
IncomingCallFeedback,
|
|
||||||
PrivacyModeIsOnFeedback,
|
|
||||||
SharingSourceFeedback
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract void ExecuteSwitch(object selector);
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Helper method to fire CallStatusChange event with old and new status
|
|
||||||
/// </summary>
|
|
||||||
protected void SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus newStatus, CodecActiveCallItem call)
|
|
||||||
{
|
|
||||||
var prevStatus = call.Status;
|
|
||||||
call.Status = newStatus;
|
|
||||||
OnCallStatusChange(prevStatus, newStatus, call);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="previousStatus"></param>
|
|
||||||
/// <param name="newStatus"></param>
|
|
||||||
/// <param name="item"></param>
|
|
||||||
protected void OnCallStatusChange(eCodecCallStatus previousStatus, eCodecCallStatus newStatus, CodecActiveCallItem item)
|
|
||||||
{
|
|
||||||
var handler = CallStatusChange;
|
|
||||||
if (handler != null)
|
|
||||||
handler(this, new CodecCallStatusItemChangeEventArgs(previousStatus, newStatus, item));
|
|
||||||
}
|
|
||||||
|
|
||||||
#region ICodecAudio Members
|
|
||||||
|
|
||||||
public abstract void PrivacyModeOn();
|
|
||||||
public abstract void PrivacyModeOff();
|
|
||||||
public abstract void PrivacyModeToggle();
|
|
||||||
public BoolFeedback PrivacyModeIsOnFeedback { get; private set; }
|
|
||||||
|
|
||||||
|
|
||||||
public BoolFeedback MuteFeedback { get; private set; }
|
|
||||||
|
|
||||||
public abstract void MuteOff();
|
|
||||||
|
|
||||||
public abstract void MuteOn();
|
|
||||||
|
|
||||||
public abstract void SetVolume(ushort level);
|
|
||||||
|
|
||||||
public IntFeedback VolumeLevelFeedback { get; private set; }
|
|
||||||
|
|
||||||
public abstract void MuteToggle();
|
|
||||||
|
|
||||||
public abstract void VolumeDown(bool pressRelease);
|
|
||||||
|
|
||||||
|
|
||||||
public abstract void VolumeUp(bool pressRelease);
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region IHasSharing Members
|
|
||||||
|
|
||||||
public abstract void StartSharing();
|
|
||||||
public abstract void StopSharing();
|
|
||||||
|
|
||||||
public StringFeedback SharingSourceFeedback { get; private set; }
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
// **** DEBUGGING THINGS ****
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public virtual void ListCalls()
|
|
||||||
{
|
|
||||||
var sb = new StringBuilder();
|
|
||||||
foreach (var c in ActiveCalls)
|
|
||||||
sb.AppendFormat("{0} {1} -- {2} {3}\r", c.Id, c.Number, c.Name, c.Status);
|
|
||||||
Debug.Console(1, "{0}", sb.ToString());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
#region IHasDialer Members
|
||||||
|
|
||||||
/// <summary>
|
public abstract void Dial(string s);
|
||||||
///
|
public abstract void EndCall(CodecActiveCallItem call);
|
||||||
/// </summary>
|
public abstract void EndAllCalls();
|
||||||
public class CodecCallStatusItemChangeEventArgs : EventArgs
|
public abstract void AcceptCall(CodecActiveCallItem call);
|
||||||
{
|
public abstract void RejectCall(CodecActiveCallItem call);
|
||||||
public CodecActiveCallItem CallItem { get; private set; }
|
public abstract void SendDtmf(string s);
|
||||||
|
|
||||||
public eCodecCallStatus PreviousStatus { get; private set; }
|
#endregion
|
||||||
|
|
||||||
public eCodecCallStatus NewStatus { get; private set; }
|
public virtual List<Feedback> Feedbacks
|
||||||
|
{
|
||||||
public CodecCallStatusItemChangeEventArgs(eCodecCallStatus previousStatus,
|
get
|
||||||
eCodecCallStatus newStatus, CodecActiveCallItem item)
|
{
|
||||||
{
|
return new List<Feedback>
|
||||||
PreviousStatus = previousStatus;
|
{
|
||||||
NewStatus = newStatus;
|
IncomingCallFeedback,
|
||||||
CallItem = item;
|
PrivacyModeIsOnFeedback,
|
||||||
}
|
SharingSourceFeedback
|
||||||
}
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void ExecuteSwitch(object selector);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Helper method to fire CallStatusChange event with old and new status
|
||||||
|
/// </summary>
|
||||||
|
protected void SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus newStatus, CodecActiveCallItem call)
|
||||||
|
{
|
||||||
|
var prevStatus = call.Status;
|
||||||
|
call.Status = newStatus;
|
||||||
|
OnCallStatusChange(prevStatus, newStatus, call);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="previousStatus"></param>
|
||||||
|
/// <param name="newStatus"></param>
|
||||||
|
/// <param name="item"></param>
|
||||||
|
protected void OnCallStatusChange(eCodecCallStatus previousStatus, eCodecCallStatus newStatus, CodecActiveCallItem item)
|
||||||
|
{
|
||||||
|
var handler = CallStatusChange;
|
||||||
|
if (handler != null)
|
||||||
|
handler(this, new CodecCallStatusItemChangeEventArgs(previousStatus, newStatus, item));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Sets IsReady property and fires the event. Used for dependent classes to sync up their data.
|
||||||
|
/// </summary>
|
||||||
|
protected void SetIsReady()
|
||||||
|
{
|
||||||
|
IsReady = true;
|
||||||
|
var h = IsReadyChange;
|
||||||
|
if(h != null)
|
||||||
|
h(this, new EventArgs());
|
||||||
|
}
|
||||||
|
|
||||||
|
#region ICodecAudio Members
|
||||||
|
|
||||||
|
public abstract void PrivacyModeOn();
|
||||||
|
public abstract void PrivacyModeOff();
|
||||||
|
public abstract void PrivacyModeToggle();
|
||||||
|
public BoolFeedback PrivacyModeIsOnFeedback { get; private set; }
|
||||||
|
|
||||||
|
|
||||||
|
public BoolFeedback MuteFeedback { get; private set; }
|
||||||
|
|
||||||
|
public abstract void MuteOff();
|
||||||
|
|
||||||
|
public abstract void MuteOn();
|
||||||
|
|
||||||
|
public abstract void SetVolume(ushort level);
|
||||||
|
|
||||||
|
public IntFeedback VolumeLevelFeedback { get; private set; }
|
||||||
|
|
||||||
|
public abstract void MuteToggle();
|
||||||
|
|
||||||
|
public abstract void VolumeDown(bool pressRelease);
|
||||||
|
|
||||||
|
|
||||||
|
public abstract void VolumeUp(bool pressRelease);
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region IHasSharing Members
|
||||||
|
|
||||||
|
public abstract void StartSharing();
|
||||||
|
public abstract void StopSharing();
|
||||||
|
|
||||||
|
public StringFeedback SharingSourceFeedback { get; private set; }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
// **** DEBUGGING THINGS ****
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public virtual void ListCalls()
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder();
|
||||||
|
foreach (var c in ActiveCalls)
|
||||||
|
sb.AppendFormat("{0} {1} -- {2} {3}\r", c.Id, c.Number, c.Name, c.Status);
|
||||||
|
Debug.Console(1, "{0}", sb.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class CodecCallStatusItemChangeEventArgs : EventArgs
|
||||||
|
{
|
||||||
|
public CodecActiveCallItem CallItem { get; private set; }
|
||||||
|
|
||||||
|
public eCodecCallStatus PreviousStatus { get; private set; }
|
||||||
|
|
||||||
|
public eCodecCallStatus NewStatus { get; private set; }
|
||||||
|
|
||||||
|
public CodecCallStatusItemChangeEventArgs(eCodecCallStatus previousStatus,
|
||||||
|
eCodecCallStatus newStatus, CodecActiveCallItem item)
|
||||||
|
{
|
||||||
|
PreviousStatus = previousStatus;
|
||||||
|
NewStatus = newStatus;
|
||||||
|
CallItem = item;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -40,47 +40,46 @@ namespace PepperDash.Essentials
|
|||||||
|
|
||||||
|
|
||||||
// Audio Conference
|
// Audio Conference
|
||||||
#warning Move these to 1100's
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1001
|
/// 1101
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACKeypadVisible = 1001;
|
public const uint ACKeypadVisible = 1101;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1002
|
/// 1102
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACStagingPopoverVisible = 1002;
|
public const uint ACStagingPopoverVisible = 1102;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1011
|
/// 1111
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial1Press = 1011;
|
public const uint ACSpeedDial1Press = 1111;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1012
|
/// 1112
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial2Press = 1012;
|
public const uint ACSpeedDial2Press = 1112;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1013
|
/// 1113
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial3Press = 1013;
|
public const uint ACSpeedDial3Press = 1113;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1014
|
/// 1114
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial4Press = 1014;
|
public const uint ACSpeedDial4Press = 1114;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1021
|
/// 1121
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial1Visible = 1021;
|
public const uint ACSpeedDial1Visible = 1121;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1022
|
/// 1122
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial2Visible = 1022;
|
public const uint ACSpeedDial2Visible = 1122;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1023
|
/// 1123
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial3Visible = 1023;
|
public const uint ACSpeedDial3Visible = 1123;
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 1024
|
/// 1124
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public const uint ACSpeedDial4Visible = 1024;
|
public const uint ACSpeedDial4Visible = 1124;
|
||||||
|
|
||||||
//******************************************************
|
//******************************************************
|
||||||
// Video Conference
|
// Video Conference
|
||||||
|
|||||||
@@ -232,7 +232,6 @@ namespace PepperDash.Essentials
|
|||||||
TriList.SetSigFalseAction(UIBoolJoin.RoomHeaderButtonPress, () =>
|
TriList.SetSigFalseAction(UIBoolJoin.RoomHeaderButtonPress, () =>
|
||||||
ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible));
|
ShowInterlockedModal(UIBoolJoin.RoomHeaderPageVisible));
|
||||||
|
|
||||||
#warning Add press and hold to gear button here
|
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.GearHeaderButtonPress, () =>
|
TriList.SetSigFalseAction(UIBoolJoin.GearHeaderButtonPress, () =>
|
||||||
ShowInterlockedModal(UIBoolJoin.VolumesPageVisible));
|
ShowInterlockedModal(UIBoolJoin.VolumesPageVisible));
|
||||||
|
|
||||||
|
|||||||
@@ -178,8 +178,8 @@ namespace PepperDash.Essentials
|
|||||||
SourceStagingSrl = new SubpageReferenceList(TriList, UISmartObjectJoin.SourceStagingSRL, 3, 3, 3);
|
SourceStagingSrl = new SubpageReferenceList(TriList, UISmartObjectJoin.SourceStagingSRL, 3, 3, 3);
|
||||||
|
|
||||||
ActivityFooterSrl = new SubpageReferenceList(TriList, UISmartObjectJoin.ActivityFooterSRL, 3, 3, 3);
|
ActivityFooterSrl = new SubpageReferenceList(TriList, UISmartObjectJoin.ActivityFooterSRL, 3, 3, 3);
|
||||||
CallButtonSig = ActivityFooterSrl.BoolInputSig(1, 1);
|
CallButtonSig = ActivityFooterSrl.BoolInputSig(2, 1);
|
||||||
ShareButtonSig = ActivityFooterSrl.BoolInputSig(2, 1);
|
ShareButtonSig = ActivityFooterSrl.BoolInputSig(1, 1);
|
||||||
EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(3, 1);
|
EndMeetingButtonSig = ActivityFooterSrl.BoolInputSig(3, 1);
|
||||||
|
|
||||||
SetupActivityFooterWhenRoomOff();
|
SetupActivityFooterWhenRoomOff();
|
||||||
@@ -425,13 +425,13 @@ namespace PepperDash.Essentials
|
|||||||
void SetupActivityFooterWhenRoomOff()
|
void SetupActivityFooterWhenRoomOff()
|
||||||
{
|
{
|
||||||
ActivityFooterSrl.Clear();
|
ActivityFooterSrl.Clear();
|
||||||
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 1,
|
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 0,
|
||||||
b => { if (!b) ActivityCallButtonPressed(); }));
|
|
||||||
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 0,
|
|
||||||
b => { if (!b) ActivityShareButtonPressed(); }));
|
b => { if (!b) ActivityShareButtonPressed(); }));
|
||||||
|
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 3,
|
||||||
|
b => { if (!b) ActivityCallButtonPressed(); }));
|
||||||
ActivityFooterSrl.Count = 2;
|
ActivityFooterSrl.Count = 2;
|
||||||
TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 5); // right one slot
|
TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 1); // right one slot
|
||||||
TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 1); // left one slot
|
TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 5); // left one slot
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -440,15 +440,15 @@ namespace PepperDash.Essentials
|
|||||||
void SetupActivityFooterWhenRoomOn()
|
void SetupActivityFooterWhenRoomOn()
|
||||||
{
|
{
|
||||||
ActivityFooterSrl.Clear();
|
ActivityFooterSrl.Clear();
|
||||||
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 1,
|
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(1, ActivityFooterSrl, 0,
|
||||||
b => { if (!b) ActivityCallButtonPressed(); }));
|
|
||||||
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 0,
|
|
||||||
b => { if (!b) ActivityShareButtonPressed(); }));
|
b => { if (!b) ActivityShareButtonPressed(); }));
|
||||||
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(3, ActivityFooterSrl,
|
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(2, ActivityFooterSrl, 3,
|
||||||
3, b => { if (!b) PowerButtonPressed(); }));
|
b => { if (!b) ActivityCallButtonPressed(); }));
|
||||||
|
ActivityFooterSrl.AddItem(new SubpageReferenceListActivityItem(3, ActivityFooterSrl, 4,
|
||||||
|
b => { if (!b) PowerButtonPressed(); }));
|
||||||
ActivityFooterSrl.Count = 3;
|
ActivityFooterSrl.Count = 3;
|
||||||
TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 0); // center
|
TriList.SetUshort(UIUshortJoin.PresentationStagingCaretMode, 2); // center
|
||||||
TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 2); // left -2
|
TriList.SetUshort(UIUshortJoin.CallStagingCaretMode, 0); // left -2
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -85,6 +85,12 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
|
|
||||||
codec.CallStatusChange += new EventHandler<CodecCallStatusItemChangeEventArgs>(Codec_CallStatusChange);
|
codec.CallStatusChange += new EventHandler<CodecCallStatusItemChangeEventArgs>(Codec_CallStatusChange);
|
||||||
|
|
||||||
|
// If the codec is ready, then get the values we want, otherwise wait
|
||||||
|
if (Codec.IsReady)
|
||||||
|
Codec_IsReady();
|
||||||
|
else
|
||||||
|
codec.IsReadyChange += (o, a) => Codec_IsReady();
|
||||||
|
|
||||||
InCall = new BoolFeedback(() => false);
|
InCall = new BoolFeedback(() => false);
|
||||||
LocalPrivacyIsMuted = new BoolFeedback(() => false);
|
LocalPrivacyIsMuted = new BoolFeedback(() => false);
|
||||||
|
|
||||||
@@ -113,6 +119,19 @@ namespace PepperDash.Essentials.UIDrivers.VC
|
|||||||
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VCKeypadBackspaceVisible]);
|
.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VCKeypadBackspaceVisible]);
|
||||||
|
|
||||||
TriList.SetSigFalseAction(UIBoolJoin.VCKeypadTextPress, RevealKeyboard);
|
TriList.SetSigFalseAction(UIBoolJoin.VCKeypadTextPress, RevealKeyboard);
|
||||||
|
|
||||||
|
// Address and number
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
void Codec_IsReady()
|
||||||
|
{
|
||||||
|
TriList.SetString(UIStringJoin.RoomPhoneText, Codec.CodecInfo.PhoneNumber);
|
||||||
|
TriList.SetString(UIStringJoin.RoomSipText, Codec.CodecInfo.SipUri);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user