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 131d610f..139935c0 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
@@ -19,4 +19,26 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
void LocalLayoutToggleSingleProminent();
void MinMaxLayoutToggle();
}
+
+ ///
+ /// Defines the requirements for Zoom Room layout control
+ ///
+ public interface IHasZoomRoomLayouts : IHasCodecLayouts
+ {
+ BoolFeedback LayoutViewIsOnFirstPage { get; }
+ BoolFeedback LayoutViewIsOnLastPage { get; }
+ BoolFeedback CanSwitchWallView { get; }
+ BoolFeedback CanSwitchSpeakerView { get; }
+ BoolFeedback CanSwitchShareOnAllScreens { get; }
+ BoolFeedback CanSwapContentWithThumbnail { get; }
+
+ List AvailableLayouts { get; }
+
+ void GetLayouts(); // Mot sure this is necessary if we're already subscribed to zStatus Call Layout
+ void SetLayout(ZoomRoom.eZoomRoomLayoutStyle layoutStyle);
+ void SwapContentWithThumbnail();
+
+ void LayoutTurnNextPage();
+ void LayoutTurnPreviousPage();
+ }
}
\ No newline at end of file
diff --git a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs
index 36cce89f..a3ad932c 100644
--- a/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs
+++ b/essentials-framework/Essentials Devices Common/Essentials Devices Common/VideoCodec/ZoomRoom/ResponseObjects.cs
@@ -23,6 +23,46 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
zCommand
}
+ ///
+ /// The available layout styles
+ ///
+ public enum eZoomRoomLayoutStyle
+ {
+ Gallery,
+ Speaker,
+ Strip,
+ ShareAll
+ }
+
+ ///
+ /// The avaliable layout positions for the thumbnails
+ ///
+ public enum eZoomRoomLayoutPosition
+ {
+ Center,
+ Up,
+ Right,
+ UpRight,
+ Down,
+ DownRight,
+ Left,
+ UpLeft,
+ DownLeft
+ }
+
+ ///
+ /// The available layout sizes
+ ///
+ public enum eZoomRoomLayoutSize
+ {
+ Off,
+ Size1,
+ Size2,
+ Size3,
+ Strip
+ }
+
+
public abstract class NotifiableObject : INotifyPropertyChanged
{
#region INotifyPropertyChanged Members
@@ -551,18 +591,136 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
}
- public class Layout
+ public class Layout : NotifiableObject
{
+ // backer variables
+ private bool _can_Switch_Speaker_View;
+ private bool _can_Switch_Wall_View;
+ private bool _can_Switch_Share_On_All_Screens;
+ private bool _is_In_First_Page;
+ private bool _is_In_Last_Page;
+ private string _video_type;
+
+
public bool can_Adjust_Floating_Video { get; set; }
public bool can_Switch_Floating_Share_Content { get; set; }
- public bool can_Switch_Share_On_All_Screens { get; set; }
- public bool can_Switch_Speaker_View { get; set; }
- public bool can_Switch_Wall_View { get; set; }
- public bool is_In_First_Page { get; set; }
- public bool is_In_Last_Page { get; set; }
+
+ ///
+ /// [on/off] // Set to On if it is possible to switch to Speaker view by invoking zConfiguration Call Layout Style: Speaker. The active speaker is shown full screen, and other video streams, like self-view, are shown in thumbnails.
+ ///
+ [JsonProperty("can_Switch_Share_On_All_Screens")]
+ public bool can_Switch_Share_On_All_Screens
+ {
+ get
+ {
+ return _can_Switch_Share_On_All_Screens;
+ }
+ set
+ {
+ if (value != _can_Switch_Share_On_All_Screens)
+ {
+ _can_Switch_Share_On_All_Screens = value;
+ NotifyPropertyChanged("can_Switch_Share_On_All_Screens");
+ }
+ }
+ }
+
+ ///
+ /// [on/off] // Set to On if it is possible to switch to Speaker view by invoking zConfiguration Call Layout Style: Speaker. The active speaker is shown full screen, and other video streams, like self-view, are shown in thumbnails.
+ ///
+ [JsonProperty("can_Switch_Speaker_View")]
+ public bool can_Switch_Speaker_View
+ {
+ get
+ {
+ return _can_Switch_Speaker_View;
+ }
+ set
+ {
+ if (value != _can_Switch_Speaker_View)
+ {
+ _can_Switch_Speaker_View = value;
+ NotifyPropertyChanged("can_Switch_Speaker_View");
+ }
+ }
+ }
+
+ ///
+ /// [on/off] On if it is possible to invoke zConfiguration Call Layout Style: Gallery, to switch to the Gallery mode, showing video participants in tiled windows: The Zoom Room shows up to a 5x5 array of tiled windows per page.
+ ///
+ [JsonProperty("can_Switch_Wall_View")]
+ public bool can_Switch_Wall_View
+ {
+ get
+ {
+ return _can_Switch_Wall_View;
+ }
+ set
+ {
+ if (value != _can_Switch_Wall_View)
+ {
+ _can_Switch_Wall_View = value;
+ NotifyPropertyChanged("can_Switch_Wall_View");
+ }
+ }
+ }
+
+ [JsonProperty("is_In_First_Page")]
+ public bool is_In_First_Page
+ {
+ get
+ {
+ return _is_In_First_Page;
+ }
+ set
+ {
+ if (value != _is_In_First_Page)
+ {
+ _is_In_First_Page = value;
+ NotifyPropertyChanged("is_In_First_Page");
+ }
+ }
+ }
+
+ [JsonProperty("is_In_Last_Page")]
+ public bool is_In_Last_Page
+ {
+ get
+ {
+ return _is_In_Last_Page;
+ }
+ set
+ {
+ if (value != _is_In_Last_Page)
+ {
+ _is_In_Last_Page = value;
+ NotifyPropertyChanged("is_In_Last_Page");
+ }
+ }
+ }
+
public bool is_supported { get; set; }
public int video_Count_In_Current_Page { get; set; }
- public string video_type { get; set; }
+
+ ///
+ /// [Gallery | Strip] Indicates which mode applies: Strip or Gallery.
+ ///
+ [JsonProperty("video_type")]
+ public string video_type
+ {
+ get
+ {
+ return _video_type;
+ }
+ set
+ {
+ if (value != _video_type)
+ {
+ _video_type = value;
+ NotifyPropertyChanged("video_type");
+ }
+ }
+ }
}
public class CallRecordInfo
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 42a389a7..905957f2 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
@@ -542,6 +542,45 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
break;
}
};
+
+ Status.Layout.PropertyChanged += (o, a) =>
+ {
+ switch (a.PropertyName)
+ {
+ case "can_Switch_Speaker_View":
+ {
+ // TODO: #697 Fire appropriate feedback(s)
+ break;
+ }
+ case "can_Switch_Wall_View":
+ {
+ // #697 TODO: Fire appropriate feedback(s)
+ break;
+ }
+ case "can_Switch_Share_On_All_Screens":
+ {
+ // #697 TODO: Fire appropriate feedback(s)
+ break;
+ }
+ case "is_In_First_Page":
+ {
+ // TODO: #697 Fire appropriate feedback(s)
+ //
+ break;
+ }
+ case "is_In_Last_Page":
+ {
+ // TODO: #697 Fire appropriate feedback(s)
+ break;
+ }
+ case "video_type":
+ {
+ // TODO: #697 Fire appropriate feedback(s)
+ // LocalLayoutFeedback.FireUpdate();
+ break;
+ }
+ }
+ };
}
private void SetUpDirectory()