diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/Extensions/StringExtensions.cs b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Extensions/StringExtensions.cs
new file mode 100644
index 00000000..708ed930
--- /dev/null
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/Extensions/StringExtensions.cs
@@ -0,0 +1,20 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Crestron.SimplSharp;
+
+namespace PepperDash.Essentials.Core
+{
+ public static class StringExtensions
+ {
+ public static string NullIfEmpty(this string s)
+ {
+ return string.IsNullOrEmpty(s) ? null : s;
+ }
+ public static string NullIfWhiteSpace(this string s)
+ {
+ return string.IsNullOrEmpty(s.Trim()) ? null : s;
+ }
+ }
+}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
index 252a881e..7db99df3 100644
--- a/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
+++ b/essentials-framework/Essentials Core/PepperDashEssentialsBase/PepperDash_Essentials_Core.csproj
@@ -217,6 +217,7 @@
+
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasDirectory.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasDirectory.cs
index 57dbbd6b..9ca224dc 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasDirectory.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasDirectory.cs
@@ -49,6 +49,11 @@ namespace PepperDash.Essentials.Devices.Common.Codec
Stack DirectoryBrowseHistoryStack { get; }
}
+ public interface IHasDirectoryClearSelection : IHasDirectory
+ {
+ void DirectoryClearSelection();
+ }
+
///
///
///
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasScheduleAwareness.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasScheduleAwareness.cs
index 06edf7bf..9169fd7c 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasScheduleAwareness.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/Codec/iHasScheduleAwareness.cs
@@ -211,7 +211,7 @@ namespace PepperDash.Essentials.Devices.Common.Codec
get
{
var joinable = StartTime.AddMinutes(-MinutesBeforeMeeting) <= DateTime.Now
- && DateTime.Now <= EndTime.AddMinutes(-5);
+ && DateTime.Now <= EndTime.AddSeconds(-_joinableCooldownSeconds);
//Debug.Console(2, "Meeting Id: {0} joinable: {1}", Id, joinable);
return joinable;
}
@@ -231,11 +231,23 @@ namespace PepperDash.Essentials.Devices.Common.Codec
[JsonIgnore]
public eMeetingEventChangeType NotifiedChangeTypes { get; set; }
+ [JsonIgnore] private readonly int _joinableCooldownSeconds;
+
+
public Meeting()
{
Calls = new List();
+ _joinableCooldownSeconds = 300;
}
+ public Meeting(int joinableCooldownSeconds)
+ {
+ Calls = new List();
+ _joinableCooldownSeconds = joinableCooldownSeconds;
+ }
+
+
+
#region Overrides of Object
public override string ToString()
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/BookingsDataClasses.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/BookingsDataClasses.cs
index cf4d8530..59823bb9 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/BookingsDataClasses.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/BookingsDataClasses.cs
@@ -377,5 +377,70 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
return meetings;
}
+
+ public static List GetGenericMeetingsFromBookingResult(List bookings, int joinableCooldownSeconds)
+ {
+ var meetings = new List();
+
+ if (Debug.Level > 0)
+ {
+ Debug.Console(1, "Meetings List:\n");
+ }
+
+ foreach (Booking b in bookings)
+ {
+ var meeting = new Meeting(joinableCooldownSeconds);
+
+ if (b.Id != null)
+ meeting.Id = b.Id.Value;
+ if (b.Organizer != null)
+ meeting.Organizer = string.Format("{0}, {1}", b.Organizer.LastName.Value, b.Organizer.FirstName.Value);
+ if (b.Title != null)
+ meeting.Title = b.Title.Value;
+ if (b.Agenda != null)
+ meeting.Agenda = b.Agenda.Value;
+ if (b.Time != null)
+ {
+ meeting.StartTime = b.Time.StartTime.Value;
+ meeting.EndTime = b.Time.EndTime.Value;
+ }
+ if (b.Privacy != null)
+ meeting.Privacy = CodecCallPrivacy.ConvertToDirectionEnum(b.Privacy.Value);
+
+ //#warning Update this ConnectMode conversion after testing onsite. Expected value is "OBTP", but in PD NYC Test scenarios, "Manual" is being returned for OBTP meetings
+ if (b.DialInfo.ConnectMode != null)
+ if (b.DialInfo.ConnectMode.Value.ToLower() == "obtp" || b.DialInfo.ConnectMode.Value.ToLower() == "manual")
+ meeting.IsOneButtonToPushMeeting = true;
+
+ if (b.DialInfo.Calls.Call != null)
+ {
+ foreach (Call c in b.DialInfo.Calls.Call)
+ {
+ meeting.Calls.Add(new PepperDash.Essentials.Devices.Common.Codec.Call()
+ {
+ Number = c.Number.Value,
+ Protocol = c.Protocol.Value,
+ CallRate = c.CallRate.Value,
+ CallType = c.CallType.Value
+ });
+ }
+ }
+
+
+ meetings.Add(meeting);
+
+ if (Debug.Level > 0)
+ {
+ Debug.Console(1, "Title: {0}, ID: {1}, Organizer: {2}, Agenda: {3}", meeting.Title, meeting.Id, meeting.Organizer, meeting.Agenda);
+ Debug.Console(1, " Start Time: {0}, End Time: {1}, Duration: {2}", meeting.StartTime, meeting.EndTime, meeting.Duration);
+ Debug.Console(1, " Joinable: {0}\n", meeting.Joinable);
+ }
+ }
+
+ meetings.OrderBy(m => m.StartTime);
+
+ return meetings;
+ }
+
}
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoSparkCodec.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoSparkCodec.cs
index 61983dc5..cf2cca5a 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoSparkCodec.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/CiscoCodec/CiscoSparkCodec.cs
@@ -24,9 +24,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
{
enum eCommandType { SessionStart, SessionEnd, Command, GetStatus, GetConfiguration };
public enum eExternalSourceType {camera, desktop, document_camera, mediaplayer, PC, whiteboard, other}
- public enum eExternalSourceMode {Ready, NotReady, Hidden, Error}
+ public enum eExternalSourceMode {Ready, NotReady, Hidden, Error}
- public class CiscoSparkCodec : VideoCodecBase, IHasCallHistory, IHasCallFavorites, IHasDirectory,
+ public class CiscoSparkCodec : VideoCodecBase, IHasCallHistory, IHasCallFavorites, IHasDirectoryClearSelection,
IHasScheduleAwareness, IOccupancyStatusProvider, IHasCodecLayouts, IHasCodecSelfView,
ICommunicationMonitor, IRouting, IHasCodecCameras, IHasCameraAutoMode, IHasCodecRoomPresets,
IHasExternalSourceSwitching, IHasBranding, IHasCameraOff, IHasCameraMute, IHasDoNotDisturbMode,
@@ -493,6 +493,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Cisco
TieLineCollection.Default.Add(tl);
}
+ public void DirectoryClearSelection()
+ {
+ DirectoryClearSelectionBase();
+ }
+
public void InitializeBranding(string roomKey)
{
Debug.Console(1, this, "Initializing Branding for room {0}", roomKey);
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs
index bfc43db6..44a482e1 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/Interfaces/IHasCodecLayouts.cs
@@ -22,25 +22,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
void MinMaxLayoutToggle();
}
- ///
- /// Defines the required elements for layout control with direct layout selection
- ///
- public interface IHasCodecLayoutsAvailable : IHasCodecLayouts
- {
-
- event EventHandler AvailableLayoutsChanged;
-
- StringFeedback AvailableLocalLayoutsFeedback { get; }
- List AvailableLocalLayouts { get; }
- void LocalLayoutSet(string layout);
- void LocalLayoutSet(CodecCommandWithLabel layout);
-
- }
-
- public class AvailableLayoutChangedEventArgs : EventArgs
- {
- public List AvailableLayouts { get; set; }
- }
///
/// Defines the requirements for Zoom Room layout control
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs
index 53285169..c7db7224 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/VideoCodecBase.cs
@@ -31,6 +31,15 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
private const int XSigEncoding = 28591;
protected const int MaxParticipants = 50;
private readonly byte[] _clearBytes = XSigHelpers.ClearOutputs();
+
+ private IHasDirectory _directoryCodec;
+ private BasicTriList _directoryTrilist;
+ private VideoCodecControllerJoinMap _directoryJoinmap;
+
+ protected string _timeFormatSpecifier;
+ protected string _dateFormatSpecifier;
+
+
protected VideoCodecBase(DeviceConfig config)
: base(config)
{
@@ -371,10 +380,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
LinkVideoCodecCameraLayoutsToApi(codec as IHasCodecLayouts, trilist, joinMap);
}
- if (codec is IHasCodecLayoutsAvailable)
- {
- LinkVideoCodecAvailableLayoutsToApi(codec as IHasCodecLayoutsAvailable, trilist, joinMap);
- }
if (codec is IHasSelfviewPosition)
{
@@ -692,37 +697,37 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
{
if (meetingIndex >= maxParticipants * offset) break;
-// Debug.Console(2, this,
-//@"Updating Participant on xsig:
-//Name: {0} (s{9})
-//AudioMute: {1} (d{10})
-//VideoMute: {2} (d{11})
-//CanMuteVideo: {3} (d{12})
-//CanUMuteVideo: {4} (d{13})
-//IsHost: {5} (d{14})
-//HandIsRaised: {6} (d{15})
-//IsPinned: {7} (d{16})
-//ScreenIndexIsPinnedTo: {8} (a{17})
-//",
-// participant.Name,
-// participant.AudioMuteFb,
-// participant.VideoMuteFb,
-// participant.CanMuteVideo,
-// participant.CanUnmuteVideo,
-// participant.IsHost,
-// participant.HandIsRaisedFb,
-// participant.IsPinnedFb,
-// participant.ScreenIndexIsPinnedToFb,
-// stringIndex + 1,
-// digitalIndex + 1,
-// digitalIndex + 2,
-// digitalIndex + 3,
-// digitalIndex + 4,
-// digitalIndex + 5,
-// digitalIndex + 6,
-// digitalIndex + 7,
-// analogIndex + 1
-// );
+ // Debug.Console(2, this,
+ //@"Updating Participant on xsig:
+ //Name: {0} (s{9})
+ //AudioMute: {1} (d{10})
+ //VideoMute: {2} (d{11})
+ //CanMuteVideo: {3} (d{12})
+ //CanUMuteVideo: {4} (d{13})
+ //IsHost: {5} (d{14})
+ //HandIsRaised: {6} (d{15})
+ //IsPinned: {7} (d{16})
+ //ScreenIndexIsPinnedTo: {8} (a{17})
+ //",
+ // participant.Name,
+ // participant.AudioMuteFb,
+ // participant.VideoMuteFb,
+ // participant.CanMuteVideo,
+ // participant.CanUnmuteVideo,
+ // participant.IsHost,
+ // participant.HandIsRaisedFb,
+ // participant.IsPinnedFb,
+ // participant.ScreenIndexIsPinnedToFb,
+ // stringIndex + 1,
+ // digitalIndex + 1,
+ // digitalIndex + 2,
+ // digitalIndex + 3,
+ // digitalIndex + 4,
+ // digitalIndex + 5,
+ // digitalIndex + 6,
+ // digitalIndex + 7,
+ // analogIndex + 1
+ // );
//digitals
@@ -792,7 +797,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
trilist.SetBoolSigAction(joinMap.SourceShareAutoStart.JoinNumber, b => AutoShareContentWhileInCall = b);
}
- private List _currentMeetings = new List();
+ private List _currentMeetings = new List();
private void LinkVideoCodecScheduleToApi(IHasScheduleAwareness codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
{
@@ -904,90 +909,95 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
public IntFeedback MeetingsToDisplayFeedback { get; set; }
- private string UpdateMeetingsListXSig(List meetings)
- {
+ private string UpdateMeetingsListXSig(List meetings)
+ {
// TODO [ ] hotfix/videocodecbase-max-meeting-xsig-set
//const int _meetingsToDisplay = 3;
- const int maxDigitals = 2;
- const int maxStrings = 7;
- const int offset = maxDigitals + maxStrings;
- var digitalIndex = maxStrings * _meetingsToDisplay; //15
- var stringIndex = 0;
- var meetingIndex = 0;
+ const int maxDigitals = 2;
+ const int maxStrings = 7;
+ const int offset = maxDigitals + maxStrings;
+ var digitalIndex = maxStrings * _meetingsToDisplay; //15
+ var stringIndex = 0;
+ var meetingIndex = 0;
- var tokenArray = new XSigToken[_meetingsToDisplay * offset];
- /*
- * Digitals
- * IsJoinable - 1
- * IsDialable - 2
- *
- * Serials
- * Organizer - 1
- * Title - 2
- * Start Date - 3
- * Start Time - 4
- * End Date - 5
- * End Time - 6
- * Id - 7
- */
+ var tokenArray = new XSigToken[_meetingsToDisplay * offset];
+ /*
+ * Digitals
+ * IsJoinable - 1
+ * IsDialable - 2
+ *
+ * Serials
+ * Organizer - 1
+ * Title - 2
+ * Start Date - 3
+ * Start Time - 4
+ * End Date - 5
+ * End Time - 6
+ * Id - 7
+ */
+
+
+ foreach (var meeting in meetings)
+ {
+ var currentTime = DateTime.Now;
+
+ if (meeting.StartTime < currentTime && meeting.EndTime < currentTime) continue;
+
+ if (meetingIndex >= _meetingsToDisplay * offset)
+ {
+ Debug.Console(2, this, "Max Meetings reached");
+ break;
+ }
+
+ //digitals
+ tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, meeting.Joinable);
+ tokenArray[digitalIndex + 1] = new XSigDigitalToken(digitalIndex + 2, meeting.Id != "0");
+
+ //serials
+ tokenArray[stringIndex] = new XSigSerialToken(stringIndex + 1, meeting.Organizer);
+ tokenArray[stringIndex + 1] = new XSigSerialToken(stringIndex + 2, meeting.Title);
+ tokenArray[stringIndex + 2] = new XSigSerialToken(stringIndex + 3, meeting.StartTime.ToString(_dateFormatSpecifier.NullIfEmpty() ?? "d", Global.Culture));
+ tokenArray[stringIndex + 3] = new XSigSerialToken(stringIndex + 4, meeting.StartTime.ToString(_timeFormatSpecifier.NullIfEmpty() ?? "t", Global.Culture));
+ tokenArray[stringIndex + 4] = new XSigSerialToken(stringIndex + 5, meeting.EndTime.ToString(_dateFormatSpecifier.NullIfEmpty() ?? "d", Global.Culture));
+ tokenArray[stringIndex + 5] = new XSigSerialToken(stringIndex + 6, meeting.EndTime.ToString(_timeFormatSpecifier.NullIfEmpty() ?? "t", Global.Culture));
+ tokenArray[stringIndex + 6] = new XSigSerialToken(stringIndex + 7, meeting.Id);
- foreach (var meeting in meetings)
- {
- var currentTime = DateTime.Now;
+ digitalIndex += maxDigitals;
+ meetingIndex += offset;
+ stringIndex += maxStrings;
+ }
- if (meeting.StartTime < currentTime && meeting.EndTime < currentTime) continue;
+ while (meetingIndex < _meetingsToDisplay * offset)
+ {
+ Debug.Console(2, this, "Clearing unused data. Meeting Index: {0} MaxMeetings * Offset: {1}",
+ meetingIndex, _meetingsToDisplay * offset);
- if (meetingIndex >= _meetingsToDisplay * offset)
- {
- Debug.Console(2, this, "Max Meetings reached");
- break;
- }
+ //digitals
+ tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, false);
+ tokenArray[digitalIndex + 1] = new XSigDigitalToken(digitalIndex + 2, false);
- //digitals
- tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, meeting.Joinable);
- tokenArray[digitalIndex + 1] = new XSigDigitalToken(digitalIndex + 2, meeting.Id != "0");
+ //serials
+ tokenArray[stringIndex] = new XSigSerialToken(stringIndex + 1, String.Empty);
+ tokenArray[stringIndex + 1] = new XSigSerialToken(stringIndex + 2, String.Empty);
+ tokenArray[stringIndex + 2] = new XSigSerialToken(stringIndex + 3, String.Empty);
+ tokenArray[stringIndex + 3] = new XSigSerialToken(stringIndex + 4, String.Empty);
+ tokenArray[stringIndex + 4] = new XSigSerialToken(stringIndex + 5, String.Empty);
+ tokenArray[stringIndex + 5] = new XSigSerialToken(stringIndex + 6, String.Empty);
+ tokenArray[stringIndex + 6] = new XSigSerialToken(stringIndex + 7, String.Empty);
- //serials
- tokenArray[stringIndex] = new XSigSerialToken(stringIndex + 1, meeting.Organizer);
- tokenArray[stringIndex + 1] = new XSigSerialToken(stringIndex + 2, meeting.Title);
- tokenArray[stringIndex + 2] = new XSigSerialToken(stringIndex + 3, meeting.StartTime.ToString("t", Global.Culture));
- tokenArray[stringIndex + 3] = new XSigSerialToken(stringIndex + 4, meeting.StartTime.ToString("t", Global.Culture));
- tokenArray[stringIndex + 4] = new XSigSerialToken(stringIndex + 5, meeting.EndTime.ToString("t", Global.Culture));
- tokenArray[stringIndex + 5] = new XSigSerialToken(stringIndex + 6, meeting.EndTime.ToString("t", Global.Culture));
- tokenArray[stringIndex + 6] = new XSigSerialToken(stringIndex + 7, meeting.Id);
+ digitalIndex += maxDigitals;
+ meetingIndex += offset;
+ stringIndex += maxStrings;
+ }
+ return GetXSigString(tokenArray);
+ }
- digitalIndex += maxDigitals;
- meetingIndex += offset;
- stringIndex += maxStrings;
- }
-
- while (meetingIndex < _meetingsToDisplay * offset)
- {
- Debug.Console(2, this, "Clearing unused data. Meeting Index: {0} MaxMeetings * Offset: {1}",
- meetingIndex, _meetingsToDisplay * offset);
-
- //digitals
- tokenArray[digitalIndex] = new XSigDigitalToken(digitalIndex + 1, false);
- tokenArray[digitalIndex + 1] = new XSigDigitalToken(digitalIndex + 2, false);
-
- //serials
- tokenArray[stringIndex] = new XSigSerialToken(stringIndex + 1, String.Empty);
- tokenArray[stringIndex + 1] = new XSigSerialToken(stringIndex + 2, String.Empty);
- tokenArray[stringIndex + 2] = new XSigSerialToken(stringIndex + 3, String.Empty);
- tokenArray[stringIndex + 3] = new XSigSerialToken(stringIndex + 4, String.Empty);
- tokenArray[stringIndex + 4] = new XSigSerialToken(stringIndex + 5, String.Empty);
- tokenArray[stringIndex + 5] = new XSigSerialToken(stringIndex + 6, String.Empty);
- tokenArray[stringIndex + 6] = new XSigSerialToken(stringIndex + 7, String.Empty);
-
- digitalIndex += maxDigitals;
- meetingIndex += offset;
- stringIndex += maxStrings;
- }
-
- return GetXSigString(tokenArray);
- }
+ protected void DirectoryClearSelectionBase()
+ {
+ SelectDirectoryEntry(_directoryCodec, 0, _directoryTrilist, _directoryJoinmap);
+ }
private void LinkVideoCodecDirectoryToApi(IHasDirectory codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
{
@@ -998,10 +1008,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
trilist.SetUShortSigAction(joinMap.DirectorySelectRow.JoinNumber, (i) => SelectDirectoryEntry(codec, i, trilist, joinMap));
- trilist.SetBoolSigAction(joinMap.DirectoryClearSelection.JoinNumber,
- delegate { SelectDirectoryEntry(codec, 0, trilist, joinMap); });
+ //Special Change for protected directory clear
+ _directoryCodec = codec as IHasDirectoryClearSelection;
- // Report feedback for number of contact methods for selected contact
+ if (_directoryCodec != null)
+ {
+ _directoryTrilist = trilist;
+ _directoryJoinmap = joinMap;
+ trilist.SetBoolSigAction(joinMap.DirectoryClearSelection.JoinNumber, (b) => DirectoryClearSelectionBase());
+ }
+
+
+ // Report feedback for number of contact methods for selected contact
trilist.SetSigFalseAction(joinMap.DirectoryRoot.JoinNumber, codec.SetCurrentDirectoryToRoot);
@@ -1037,7 +1055,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
trilist.SetString(joinMap.DirectoryEntries.JoinNumber, directoryXSig);
};
-
+
trilist.OnlineStatusChange += (device, args) =>
{
if (!args.DeviceOnLine) return;
@@ -1050,13 +1068,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
};
}
-
private void SelectDirectoryEntry(IHasDirectory codec, ushort i, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
{
if (i > codec.CurrentDirectoryResult.CurrentDirectoryResults.Count) return;
_selectedDirectoryItem = i == 0 ? null : codec.CurrentDirectoryResult.CurrentDirectoryResults[i - 1];
+ trilist.SetUshort(joinMap.DirectorySelectRowFeedback.JoinNumber, i);
+
+ if (_selectedDirectoryItem == null) trilist.SetBool(joinMap.DirectoryEntryIsContact.JoinNumber, false);
- trilist.SetUshort(joinMap.DirectorySelectRow.JoinNumber, i);
if (_selectedDirectoryItem is DirectoryFolder)
{
@@ -1067,6 +1086,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
trilist.ClearUShortSigAction(joinMap.SelectContactMethod.JoinNumber);
trilist.ClearBoolSigAction(joinMap.DirectoryDialSelectedLine.JoinNumber);
trilist.ClearBoolSigAction(joinMap.DirectoryDialSelectedContactMethod.JoinNumber);
+ trilist.SetBool(joinMap.DirectoryEntryIsContact.JoinNumber, false);
return;
}
@@ -1075,6 +1095,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
var selectedContact = _selectedDirectoryItem as DirectoryContact;
+ if (selectedContact != null && selectedContact.ContactMethods.Count >= 1)
+ {
+ trilist.SetBool(joinMap.DirectoryEntryIsContact.JoinNumber, true);
+ }
+
trilist.SetString(joinMap.DirectoryEntrySelectedName.JoinNumber,
selectedContact != null ? selectedContact.Name : string.Empty);
@@ -1488,14 +1513,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
codec.LocalLayoutFeedback.LinkInputSig(trilist.StringInput[joinMap.CurrentLayoutStringFb.JoinNumber]);
}
- private void LinkVideoCodecAvailableLayoutsToApi(IHasCodecLayoutsAvailable codec, BasicTriList trilist,
- VideoCodecControllerJoinMap joinMap)
- {
- codec.AvailableLocalLayoutsFeedback.LinkInputSig(trilist.StringInput[joinMap.AvailableLayoutsFb.JoinNumber]);
-
- trilist.SetStringSigAction(joinMap.SelectLayout.JoinNumber, codec.LocalLayoutSet);
- }
-
private void LinkVideoCodecCameraModeToApi(IHasCameraAutoMode codec, BasicTriList trilist, VideoCodecControllerJoinMap joinMap)
{
trilist.SetSigFalseAction(joinMap.CameraModeAuto.JoinNumber, codec.CameraAutoModeOn);
@@ -2022,4 +2039,6 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
}
}
+
+
}
\ No newline at end of file