diff --git a/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs b/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs
index f8685671..aaecb81a 100644
--- a/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs
+++ b/PepperDashEssentials/UI/JoinConstants/UIBoolJoin.cs
@@ -248,6 +248,10 @@ namespace PepperDash.Essentials
///
public const uint VCCameraSelectBarWithoutModeVisible = 1261;
+ ///
+ /// 1262
+ ///
+ public const uint VCCameraAutoModeIsOnFb = 1262;
///
/// 1271
diff --git a/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs b/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs
index 6d5521a8..e95ab5e5 100644
--- a/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs
+++ b/PepperDashEssentials/UIDrivers/VC/EssentialsVideoCodecUiDriver.cs
@@ -532,6 +532,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
CameraModeList.SetItemButtonAction(1,(b) => codecAutoCameras.CameraAutoModeOn());
TriList.SmartObjects[UISmartObjectJoin.VCCameraMode].BooleanInput["Item 1 Visible"].BoolValue = true;
codecAutoCameras.CameraAutoModeIsOnFeedback.LinkInputSig(CameraModeList.SmartObject.BooleanInput["Item 1 Selected"]);
+ codecAutoCameras.CameraAutoModeIsOnFeedback.LinkInputSig(TriList.BooleanInput[UIBoolJoin.VCCameraAutoModeIsOnFb]);
//TriList.SmartObjects[UISmartObjectJoin.VCCameraMode].BooleanOutput["Item 1 Pressed"].SetSigFalseAction(
//() => codecAutoCameras.CameraAutoModeOn());
@@ -857,19 +858,32 @@ namespace PepperDash.Essentials.UIDrivers.VC
// Determines if codec is in manual camera control mode and shows feedback
void ShowCameraManualMode()
{
+ Debug.Console(2, "ShowCameraManualMode");
+
var inManualMode = true;
var codecOffCameras = Codec as IHasCameraOff;
var codecAutoCameras = Codec as IHasCameraAutoMode;
+ var supportsAutoCameras = codecAutoCameras != null && Codec.SupportsCameraAutoMode;
+
if (codecOffCameras != null && codecOffCameras.CameraIsOffFeedback.BoolValue)
{
inManualMode = false;
+
+ var codecCameraMute = Codec as IHasCameraMute;
+
+ if (codecCameraMute != null)
+ {
+ codecCameraMute.CameraMuteOff();
+ inManualMode = true;
+
+ }
}
// Clear auto mode
- if (codecAutoCameras != null )
+ if (supportsAutoCameras)
{
if (codecAutoCameras.CameraAutoModeIsOnFeedback.BoolValue)
{
@@ -1213,7 +1227,7 @@ namespace PepperDash.Essentials.UIDrivers.VC
var lc = Codec as IHasCodecLayouts;
if (lc != null)
{
- TriList.SetSigFalseAction(UIBoolJoin.VCLayoutTogglePress, lc.LocalLayoutToggleSingleProminent);
+
lc.LocalLayoutFeedback.LinkInputSig(TriList.StringInput[UIStringJoin.VCLayoutModeText]);
lc.LocalLayoutFeedback.OutputChange += (o,a) =>
{
@@ -1226,14 +1240,24 @@ namespace PepperDash.Essentials.UIDrivers.VC
var cisco = Codec as PepperDash.Essentials.Devices.Common.VideoCodec.Cisco.CiscoSparkCodec;
if (cisco != null)
{
+ TriList.SetSigFalseAction(UIBoolJoin.VCLayoutTogglePress, lc.LocalLayoutToggleSingleProminent);
// Cisco has min/max buttons that need special sauce
cisco.SharingContentIsOnFeedback.OutputChange += CiscoSharingAndPresentation_OutputChanges;
//cisco.PresentationViewMaximizedFeedback.OutputChange += CiscoSharingAndPresentation_OutputChanges;
TriList.SetSigFalseAction(UIBoolJoin.VCMinMaxPress, cisco.MinMaxLayoutToggle);
}
+
+ var zoomRoom = Codec as PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom.ZoomRoom;
+ if (zoomRoom != null)
+ {
+ TriList.BooleanInput[UIBoolJoin.VCLayoutToggleEnable].BoolValue = true;
+ TriList.SetSigFalseAction(UIBoolJoin.VCLayoutTogglePress, lc.LocalLayoutToggle);
+ }
}
+
+
}
///
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs
index c2ec5c38..eb55db9f 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ZoomRoom.cs
@@ -123,7 +123,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
Participants = new CodecParticipants();
- SupportsCameraOff = _props.SupportsCameraOff;
+ SupportsCameraOff = true; // Always allow turning off the camera for zoom calls?
SupportsCameraAutoMode = _props.SupportsCameraAutoMode;
PhoneOffHookFeedback = new BoolFeedback(PhoneOffHookFeedbackFunc);
@@ -2446,9 +2446,51 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
public void LocalLayoutToggle()
{
- throw new NotImplementedException();
+ var currentLayout = LocalLayoutFeedback.StringValue;
+
+ var eCurrentLayout = (int)Enum.Parse(typeof(zConfiguration.eLayoutStyle), currentLayout, true);
+
+ var nextLayout = GetNextLayout(eCurrentLayout);
+
+ if (nextLayout != zConfiguration.eLayoutStyle.None)
+ {
+ SetLayout(nextLayout);
+ }
}
+ ///
+ /// Tries to get the next available layout
+ ///
+ ///
+ ///
+ private zConfiguration.eLayoutStyle GetNextLayout(int currentLayout)
+ {
+ if (AvailableLayouts == zConfiguration.eLayoutStyle.None)
+ {
+ return zConfiguration.eLayoutStyle.None;
+ }
+
+ zConfiguration.eLayoutStyle nextLayout;
+
+ if (((zConfiguration.eLayoutStyle)currentLayout & zConfiguration.eLayoutStyle.ShareAll) == zConfiguration.eLayoutStyle.ShareAll)
+ {
+ nextLayout = zConfiguration.eLayoutStyle.Gallery;
+ }
+ else
+ {
+ nextLayout = (zConfiguration.eLayoutStyle)(currentLayout << 1);
+ }
+
+ if ((AvailableLayouts & nextLayout) == nextLayout)
+ {
+ return nextLayout;
+ }
+ else
+ {
+ return GetNextLayout((int)nextLayout);
+ }
+ }
+
public void LocalLayoutToggleSingleProminent()
{
throw new NotImplementedException();