diff --git a/Essentials Core/PepperDashEssentialsBase/Touchpanels/Keyboards/HabaneroKeyboardController.cs b/Essentials Core/PepperDashEssentialsBase/Touchpanels/Keyboards/HabaneroKeyboardController.cs index a5e2fead..8422ed0a 100644 --- a/Essentials Core/PepperDashEssentialsBase/Touchpanels/Keyboards/HabaneroKeyboardController.cs +++ b/Essentials Core/PepperDashEssentialsBase/Touchpanels/Keyboards/HabaneroKeyboardController.cs @@ -11,11 +11,15 @@ namespace PepperDash.Essentials.Core.Touchpanels.Keyboards { public BasicTriList TriList { get; private set; } - int ShiftMode; - public StringFeedback OutputFeedback { get; private set; } - StringBuilder Output; + + public bool IsVisible { get; private set; } + + int ShiftMode; + StringBuilder Output; + + public Action HideAction { get; set; } /// /// @@ -30,12 +34,14 @@ namespace PepperDash.Essentials.Core.Touchpanels.Keyboards } /// - /// Puts actions on buttons + /// Shows the keyboard and attaches sig handlers in the range of 2901-2969 /// - void SetUp() + public void Show() { - TriList.SetSigTrueAction(KeyboardClosePress, Hide); + if (IsVisible) + return; + TriList.SetSigTrueAction(KeyboardClosePress, Hide); TriList.SetSigTrueAction(2921, () => Append(A(ShiftMode))); TriList.SetSigTrueAction(2922, () => Append(B(ShiftMode))); TriList.SetSigTrueAction(2923, () => Append(C(ShiftMode))); @@ -70,24 +76,49 @@ namespace PepperDash.Essentials.Core.Touchpanels.Keyboards TriList.SetSigTrueAction(2952, Shift); TriList.SetSigTrueAction(2953, NumShift); - } - - public void Show() - { TriList.SetBool(KeyboardVisible, true); + IsVisible = true; } + /// + /// Hides the keyboard and disconnects ALL sig handlers from 2901 - 2969 + /// public void Hide() { + if (!IsVisible) + return; + + for (uint i = 2901; i < 2970; i++) + TriList.ClearBoolSigAction(i); + + // run attached actions + if(HideAction != null) + HideAction(); + TriList.SetBool(KeyboardVisible, false); + IsVisible = false; } - void Append(char c) + /// + /// + /// + /// + public void Append(char c) { Output.Append(c); OutputFeedback.FireUpdate(); } + /// + /// + /// + /// + public void Append(string s) + { + Output.Append(s); + OutputFeedback.FireUpdate(); + } + char A(int i) { return new char[] { 'a', 'A', '?', '?' }[i]; } char B(int i) { return new char[] { 'b', 'B', ':', ':' }[i]; } char C(int i) { return new char[] { 'c', 'C', '>', '>' }[i]; } @@ -171,7 +202,7 @@ namespace PepperDash.Essentials.Core.Touchpanels.Keyboards /// /// 2904 /// - public const uint KeyboardButton1Press = 2904; + public const uint KeyboardButton2Press = 2904; /// /// 2910 /// @@ -182,4 +213,39 @@ namespace PepperDash.Essentials.Core.Touchpanels.Keyboards public const uint KeyboardClearVisible = 2911; } + + /* When in mode 0 (lowercase): + * shift button: up arrow 0 + * numShift button: 123/#$@#$ 0 + * + * - shift --> mode 1 + * - double-tap shift --> caps lock + * - numShift --> mode 2 + * + * mode 1 (uppercase) + * shift button: down arrow 1 + * numShift button: 123/##$# 0 + * + * - shift --> mode 0 + * - numShift --> mode 2 + * + * - Tapping any key will go back to mode 0 + * + * mode 2 (numbers-sym) + * Shift button: #$#$#$ 2 + * numShift: ABC 1 + * + * - shift --> mode 3 + * - double-tap shift --> caps lock + * - numShift --> mode 0 + * + * mode 3 (sym) + * Shift button: 123 3 + * numShift: ABC 1 + * + * - shift --> mode 2 + * - numShift --> mode 0 + * + * - Tapping any key will go back to mode 2 + */ } \ No newline at end of file diff --git a/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs b/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs index ed2bc949..307f26f1 100644 --- a/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs +++ b/Essentials Devices Common/Essentials Devices Common/VideoCodec/MockVC/MockVC.cs @@ -91,8 +91,9 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec public override void EndAllCalls() { Debug.Console(1, this, "EndAllCalls"); - foreach (var call in ActiveCalls) + for(int i = ActiveCalls.Count - 1; i >= 0; i--) { + var call = ActiveCalls[i]; ActiveCalls.Remove(call); SetNewCallStatusAndFireCallStatusChange(eCodecCallStatus.Disconnected, call); } diff --git a/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs b/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs index 1cf624a1..47da3076 100644 --- a/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs +++ b/Essentials/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs @@ -33,6 +33,10 @@ namespace PepperDash.Essentials /// 1002 /// public const uint CallEndAllConfirmPress = 1002; + /// + /// 1003 - For tapping the text field to reveal the keyboard + /// + public const uint CodecDirectorySearchTextPress = 1003; // Audio Conference @@ -178,7 +182,7 @@ namespace PepperDash.Essentials /// /// 2904 /// - public const uint KeyboardButton1Press = 2904; + public const uint KeyboardButton2Press = 2904; /// diff --git a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs index e511d7d0..60745dec 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/EssentialsHuddleVTC/HuddleVTCPanelAvFunctionsDriver.cs @@ -16,7 +16,7 @@ namespace PepperDash.Essentials /// /// /// - public class EssentialsHuddleVtc1PanelAvFunctionsDriver : PanelDriverBase, IHasPopupInterlock + public class EssentialsHuddleVtc1PanelAvFunctionsDriver : PanelDriverBase, IAVDriver { CrestronTouchpanelPropertiesConfig Config; @@ -130,6 +130,8 @@ namespace PepperDash.Essentials PepperDash.Essentials.UIDrivers.VC.EssentialsVideoCodecUiDriver VCDriver; + public PepperDash.Essentials.Core.Touchpanels.Keyboards.HabaneroKeyboardController Keyboard { get; private set; } + /// /// Constructor /// @@ -152,9 +154,7 @@ namespace PepperDash.Essentials SetupActivityFooterWhenRoomOff(); ShowVolumeGauge = true; - //PowerOffTimeout = 30000; - - //TriList.StringInput[UIStringJoin.StartActivityText].StringValue = "Tap an activity below"; + Keyboard = new PepperDash.Essentials.Core.Touchpanels.Keyboards.HabaneroKeyboardController(TriList); } /// @@ -306,34 +306,6 @@ namespace PepperDash.Essentials base.Show(); } - ///// - ///// Puts the UI into the "start" mode. System is off. Logo shows. Activity SRL is clear - ///// - //void ShowStartMode() - //{ - // SetupActivityFooterWhenRoomOff(); - - // ShareButtonSig.BoolValue = false; - // CallButtonSig.BoolValue = false; - // ShowLogo(); - // StagingBarInterlock.ShowInterlocked(UIBoolJoin.StartPageVisible); - // StagingBarInterlock.HideAndClear(); - //} - - //void ShowShareMode() - //{ - // ShareButtonSig.BoolValue = true; - // CallButtonSig.BoolValue = false; - // StagingBarInterlock.ShowInterlocked(UIBoolJoin.SourceStagingBarVisible); - //} - - //void ShowVideoCallMode() - //{ - // ShareButtonSig.BoolValue = false; - // CallButtonSig.BoolValue = true; - // StagingBarInterlock.ShowInterlocked(UIBoolJoin.CallStagingBarVisible); - //} - /// /// /// @@ -978,8 +950,12 @@ namespace PepperDash.Essentials } } - public interface IHasPopupInterlock + /// + /// For hanging off various common things that child drivers might need from a parent AV driver + /// + public interface IAVDriver { + PepperDash.Essentials.Core.Touchpanels.Keyboards.HabaneroKeyboardController Keyboard { get; } JoinedSigInterlock PopupInterlock { get; } } } diff --git a/Essentials/PepperDashEssentials/UIDrivers/JoinedSigInterlock.cs b/Essentials/PepperDashEssentials/UIDrivers/JoinedSigInterlock.cs index c383c7d3..09df5b1d 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/JoinedSigInterlock.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/JoinedSigInterlock.cs @@ -5,6 +5,9 @@ using System.Text; using Crestron.SimplSharp; using Crestron.SimplSharpPro.DeviceSupport; +using PepperDash.Core; +using PepperDash.Essentials.Core; + namespace PepperDash.Essentials { public class JoinedSigInterlock @@ -26,7 +29,7 @@ namespace PepperDash.Essentials if (CurrentJoin == join) return; SetButDontShow(join); - TriList.BooleanInput[CurrentJoin].BoolValue = true; + TriList.SetBool(CurrentJoin, true); } /// @@ -74,7 +77,7 @@ namespace PepperDash.Essentials } /// - /// Useful for pre-setting the interlock but not enabling it. + /// Useful for pre-setting the interlock but not enabling it. Sets CurrentJoin /// /// public void SetButDontShow(uint join) diff --git a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs index 471cf8d0..78cf336c 100644 --- a/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs +++ b/Essentials/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs @@ -24,7 +24,7 @@ namespace PepperDash.Essentials.UIDrivers.VC /// public class EssentialsVideoCodecUiDriver : PanelDriverBase { - IHasPopupInterlock Parent; + IAVDriver Parent; /// /// @@ -76,10 +76,11 @@ namespace PepperDash.Essentials.UIDrivers.VC /// /// /// - public EssentialsVideoCodecUiDriver(BasicTriListWithSmartObject triList, IHasPopupInterlock parent, VideoCodecBase codec) + public EssentialsVideoCodecUiDriver(BasicTriListWithSmartObject triList, IAVDriver parent, VideoCodecBase codec) : base(triList) { Codec = codec; + Parent = parent; SetupCallStagingPopover(); SetupDialKeypad(); ActiveCallsSRL = new SubpageReferenceList(TriList, UISmartObjectJoin.CodecActiveCallsHeaderList, 3, 3, 3); @@ -264,7 +265,10 @@ namespace PepperDash.Essentials.UIDrivers.VC TriList.SetSigFalseAction(UIBoolJoin.CallEndPress, () => { if (Codec.ActiveCalls.Count > 1) + { + Debug.Console(1, "#*#*#*# FUCK ME!!!!"); Parent.PopupInterlock.ShowInterlocked(UIBoolJoin.HeaderActiveCallsListVisible); + } else Codec.EndAllCalls(); }); @@ -320,6 +324,25 @@ namespace PepperDash.Essentials.UIDrivers.VC // populate directory VCControlsInterlock.ShowInterlocked(UIBoolJoin.VCDirectoryVisible); StagingButtonFeedbackInterlock.ShowInterlocked(UIBoolJoin.VCStagingDirectoryPress); + + TriList.SetSigFalseAction(UIBoolJoin.CodecDirectorySearchTextPress, () => + { + var kb = Parent.Keyboard; + kb.OutputFeedback.OutputChange += new EventHandler(DirectoryKeyboardChange); + kb.HideAction += () => + { + kb.OutputFeedback.OutputChange -= DirectoryKeyboardChange; + }; + + }); + } + + /// + /// + /// + void DirectoryKeyboardChange(object sender, EventArgs e) + { + } void ShowRecents() diff --git a/Release Package/PepperDashEssentials.cpz b/Release Package/PepperDashEssentials.cpz index 6abfc342..67efe333 100644 Binary files a/Release Package/PepperDashEssentials.cpz and b/Release Package/PepperDashEssentials.cpz differ diff --git a/Release Package/PepperDashEssentials.dll b/Release Package/PepperDashEssentials.dll index ec9a3d7e..e104408c 100644 Binary files a/Release Package/PepperDashEssentials.dll and b/Release Package/PepperDashEssentials.dll differ