diff --git a/PepperDashEssentials/AppServer/Messengers/Ddvc01VtcMessenger.cs b/PepperDashEssentials/AppServer/Messengers/Ddvc01VtcMessenger.cs index f94b9f18..16063b3e 100644 --- a/PepperDashEssentials/AppServer/Messengers/Ddvc01VtcMessenger.cs +++ b/PepperDashEssentials/AppServer/Messengers/Ddvc01VtcMessenger.cs @@ -78,6 +78,10 @@ namespace PepperDash.Essentials.AppServer.Messengers /// const uint BDirectoryFolderBack = 805; /// + /// 806 + /// + const uint BDirectoryDialSelectedLine = 806; + /// /// 811 /// const uint BCameraControlUp = 811; @@ -184,8 +188,19 @@ namespace PepperDash.Essentials.AppServer.Messengers CodecActiveCallItem CurrentCallItem; CodecActiveCallItem IncomingCallItem; + ushort PreviousDirectoryLength = 0; + /// + /// For tracking the directory-selected name while waiting for number + /// + string QueuedDirectorySelectedName; + + /// + /// For tracking the directory-selected number while waiting for the name + /// + string QueuedDirectorySelectedNumber; + /// /// /// @@ -201,61 +216,6 @@ namespace PepperDash.Essentials.AppServer.Messengers CurrentCallItem.Id = "-video-"; } - /// - /// - /// - void SendFullStatus() - { - this.PostStatusMessage(new - { - calls = GetCurrentCallList(), - currentCallString = EISC.GetString(SCurrentCallNumber), - currentDialString = EISC.GetString(SCurrentDialString), - isInCall = EISC.GetString(SHookState) == "Connected", - hasDirectory = true, - hasRecents = true, - hasCameras = true - }); - } - - void PostDirectory() - { - var u = EISC.GetUshort(UDirectoryRowCount); - var items = new List(); - for (uint i = 0; i < u; i++) - { - var name = EISC.GetString(SDirectoryEntriesStart + i); - var id = (i + 1).ToString(); - // is folder or contact? - if(name.StartsWith("[+]")) - { - items.Add(new - { - folderId = id, - name = name - }); - } - else - { - items.Add(new - { - contactId = id, - name = name - }); - } - } - - var directoryMessage = new - { - currentDirectory = new - { - isRootDirectory = EISC.GetBool(BDirectoryIsRoot), - directoryResults = items - } - }; - PostStatusMessage(directoryMessage); - } - /// /// /// @@ -321,19 +281,28 @@ namespace PepperDash.Essentials.AppServer.Messengers } EISC.SetStringSigAction(SDirectoryEntriesStart + u - 1, s => PostDirectory()); PreviousDirectoryLength = u; - //PostDirectory(); }); EISC.SetStringSigAction(SDirectoryEntrySelectedName, s => { - PostStatusMessage(new { content = new { - directorySelectedEntryName = EISC.GetString(SDirectoryEntrySelectedName) } }); + PostStatusMessage(new + { + directoryContactSelected = new + { + name = EISC.GetString(SDirectoryEntrySelectedName), + } + }); }); EISC.SetStringSigAction(SDirectoryEntrySelectedNumber, s => { - PostStatusMessage(new { content = new { - directorySelectedEntryNumber = EISC.GetString(SDirectoryEntrySelectedNumber) } }); + PostStatusMessage(new + { + directoryContactSelected = new + { + number = EISC.GetString(SDirectoryEntrySelectedNumber), + } + }); }); // Add press and holds using helper action @@ -407,6 +376,9 @@ namespace PepperDash.Essentials.AppServer.Messengers } })); + asc.AddAction(MessagePath + "/directoryDialContact", new Action(() => { + EISC.PulseBool(BDirectoryDialSelectedLine); + })); asc.AddAction(MessagePath + "/getDirectory", new Action(() => { if (EISC.GetUshort(UDirectoryRowCount) > 0) @@ -425,6 +397,94 @@ namespace PepperDash.Essentials.AppServer.Messengers //})); } + /// + /// + /// + void SendFullStatus() + { + this.PostStatusMessage(new + { + calls = GetCurrentCallList(), + currentCallString = EISC.GetString(SCurrentCallNumber), + currentDialString = EISC.GetString(SCurrentDialString), + directoryContactSelected = new + { + name = EISC.GetString(SDirectoryEntrySelectedName), + number = EISC.GetString(SDirectoryEntrySelectedNumber) + }, + isInCall = EISC.GetString(SHookState) == "Connected", + hasDirectory = true, + hasRecents = true, + hasCameras = true + }); + } + + /// + /// + /// + void PostDirectory() + { + var u = EISC.GetUshort(UDirectoryRowCount); + var items = new List(); + for (uint i = 0; i < u; i++) + { + var name = EISC.GetString(SDirectoryEntriesStart + i); + var id = (i + 1).ToString(); + // is folder or contact? + if (name.StartsWith("[+]")) + { + items.Add(new + { + folderId = id, + name = name + }); + } + else + { + items.Add(new + { + contactId = id, + name = name + }); + } + } + + var directoryMessage = new + { + currentDirectory = new + { + isRootDirectory = EISC.GetBool(BDirectoryIsRoot), + directoryResults = items + } + }; + PostStatusMessage(directoryMessage); + } + + + /// + /// + /// + //void SendDirectorySelectedNameNumberWhenReady() + //{ + // if (!string.IsNullOrEmpty(QueuedDirectorySelectedName) && + // !string.IsNullOrEmpty(QueuedDirectorySelectedNumber)) + // { + // var qName = QueuedDirectorySelectedName; + // var qNum = QueuedDirectorySelectedNumber; + // QueuedDirectorySelectedName = null; + // QueuedDirectorySelectedNumber = null; + // PostStatusMessage(new + // { + // directoryContactSelected = new + // { + // name = qName, + // number = qNum + // } + // }); + + // } + //} + /// /// ///