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