mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-01-29 20:34:51 +00:00
Compare commits
10 Commits
1.9.8-beta
...
1.9.8-alph
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7d1d560ee | ||
|
|
d3f30d8b71 | ||
|
|
2e5b7cad64 | ||
|
|
5171385b5b | ||
|
|
3ee44bcf6e | ||
|
|
949a04647b | ||
|
|
31f976d719 | ||
|
|
11ffc5130f | ||
|
|
59bfa354e4 | ||
|
|
536e82ef22 |
@@ -121,6 +121,8 @@
|
||||
<Compile Include="Cameras\CameraControl.cs" />
|
||||
<Compile Include="Display\PanasonicThDisplay.cs" />
|
||||
<Compile Include="VideoCodec\Interfaces\IHasMeetingInfo.cs" />
|
||||
<Compile Include="VideoCodec\Interfaces\IHasMeetingLock.cs" />
|
||||
<Compile Include="VideoCodec\Interfaces\IHasMeetingRecording.cs" />
|
||||
<Compile Include="VideoCodec\Interfaces\IHasParticipants.cs" />
|
||||
<Compile Include="VideoCodec\Interfaces\IHasPresentationOnlyMeeting.cs" />
|
||||
<Compile Include="VideoCodec\Interfaces\IHasSelfviewPosition.cs" />
|
||||
|
||||
@@ -6,6 +6,8 @@ using Crestron.SimplSharp;
|
||||
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
{
|
||||
/// <summary>
|
||||
@@ -25,7 +27,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
/// </summary>
|
||||
public interface IHasZoomRoomLayouts : IHasCodecLayouts
|
||||
{
|
||||
event EventHandler<LayoutInfoChangedEventArgs> AvailableLayoutsChanged;
|
||||
event EventHandler<LayoutInfoChangedEventArgs> LayoutInfoChanged;
|
||||
|
||||
BoolFeedback LayoutViewIsOnFirstPageFeedback { get; } // TODO: #697 [*] Consider modifying to report button visibility in func
|
||||
BoolFeedback LayoutViewIsOnLastPageFeedback { get; } // TODO: #697 [*] Consider modifying to report button visibility in func
|
||||
@@ -45,6 +47,17 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec
|
||||
|
||||
public class LayoutInfoChangedEventArgs : EventArgs
|
||||
{
|
||||
[JsonProperty("availableLayouts", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public ZoomRoom.zConfiguration.eLayoutStyle AvailableLayouts { get; set; }
|
||||
[JsonProperty("currentSelectedLayout", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public ZoomRoom.zConfiguration.eLayoutStyle CurrentSelectedLayout { get; set; }
|
||||
[JsonProperty("canSwapContentWithThumbnail", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool CanSwapContentWithThumbnail { get; set; }
|
||||
[JsonProperty("contentSwappedWithThumbnail", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool ContentSwappedWithThumbnail { get; set; }
|
||||
[JsonProperty("layoutViewIsOnFirstPage", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool LayoutViewIsOnFirstPage { get; set; }
|
||||
[JsonProperty("layoutViewIsOnLastPage", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public bool LayoutViewIsOnLastPage { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -24,21 +24,21 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
/// </summary>
|
||||
public class MeetingInfo
|
||||
{
|
||||
[JsonProperty("id")]
|
||||
[JsonProperty("id", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Id { get; private set; }
|
||||
[JsonProperty("name")]
|
||||
[JsonProperty("name", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Name { get; private set; }
|
||||
[JsonProperty("host")]
|
||||
[JsonProperty("host", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Host { get; private set; }
|
||||
[JsonProperty("password")]
|
||||
[JsonProperty("password", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string Password { get; private set; }
|
||||
[JsonProperty("shareStatus")]
|
||||
[JsonProperty("shareStatus", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public string ShareStatus { get; private set; }
|
||||
[JsonProperty("isHost")]
|
||||
[JsonProperty("isHost", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public Boolean IsHost { get; private set; }
|
||||
[JsonProperty("isSharingMeeting")]
|
||||
[JsonProperty("isSharingMeeting", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public Boolean IsSharingMeeting { get; private set; }
|
||||
[JsonProperty("waitingForHost")]
|
||||
[JsonProperty("waitingForHost", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public Boolean WaitingForHost { get; private set; }
|
||||
|
||||
public MeetingInfo(string id, string name, string host, string password, string shareStatus, bool isHost, bool isSharingMeeting, bool waitingForHost)
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
public interface IHasMeetingLock
|
||||
{
|
||||
BoolFeedback MeetingIsLockedFeedback { get; }
|
||||
|
||||
void LockMeeting();
|
||||
void UnLockMeeting();
|
||||
void ToggleMeetingLock();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
using PepperDash.Essentials.Core;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
{
|
||||
public interface IHasMeetingRecording
|
||||
{
|
||||
BoolFeedback MeetingIsRecordingFeedback { get; }
|
||||
|
||||
void StartRecording();
|
||||
void StopRecording();
|
||||
void ToggleRecording();
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,18 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
public interface IHasParticipants
|
||||
{
|
||||
CodecParticipants Participants { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Removes the participant from the meeting
|
||||
/// </summary>
|
||||
/// <param name="participant"></param>
|
||||
void RemoveParticipant(int userId);
|
||||
|
||||
/// <summary>
|
||||
/// Sets the participant as the new host
|
||||
/// </summary>
|
||||
/// <param name="participant"></param>
|
||||
void SetParticipantAsHost(int userId);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -29,6 +41,11 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces
|
||||
/// </summary>
|
||||
public interface IHasParticipantAudioMute : IHasParticipantVideoMute
|
||||
{
|
||||
/// <summary>
|
||||
/// Mute audio of all participants
|
||||
/// </summary>
|
||||
void MuteAudioForAllParticipants();
|
||||
|
||||
void MuteAudioForParticipant(int userId);
|
||||
void UnmuteAudioForParticipant(int userId);
|
||||
void ToggleAudioForParticipant(int userId);
|
||||
|
||||
@@ -4,6 +4,8 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using Crestron.SimplSharp;
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace PepperDash.Essentials.Devices.Common.Codec
|
||||
{
|
||||
/// <summary>
|
||||
@@ -19,12 +21,19 @@ namespace PepperDash.Essentials.Devices.Common.Codec
|
||||
/// </summary>
|
||||
public abstract class VideoCodecInfo
|
||||
{
|
||||
[JsonProperty("multiSiteOptionIsEnabled", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract bool MultiSiteOptionIsEnabled { get; }
|
||||
[JsonProperty("ipAddress", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string IpAddress { get; }
|
||||
[JsonProperty("sipPhoneNumber", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string SipPhoneNumber { get; }
|
||||
[JsonProperty("e164Alias", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string E164Alias { get; }
|
||||
[JsonProperty("h323Id", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string H323Id { get; }
|
||||
[JsonProperty("sipUri", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract string SipUri { get; }
|
||||
[JsonProperty("autoAnswerEnabled", NullValueHandling = NullValueHandling.Ignore)]
|
||||
public abstract bool AutoAnswerEnabled { get; }
|
||||
}
|
||||
}
|
||||
@@ -618,13 +618,31 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
private bool _can_Switch_Speaker_View;
|
||||
private bool _can_Switch_Wall_View;
|
||||
private bool _can_Switch_Share_On_All_Screens;
|
||||
private bool _can_Switch_Floating_Share_Content;
|
||||
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_Floating_Share_Content
|
||||
{
|
||||
get
|
||||
{
|
||||
return _can_Switch_Floating_Share_Content;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _can_Switch_Floating_Share_Content)
|
||||
{
|
||||
_can_Switch_Floating_Share_Content = value;
|
||||
NotifyPropertyChanged("can_Switch_Floating_Share_Content");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// [on/off] // Set to On if it is possible to invoke zConfiguration Call Layout Style: ShareAll, to switch to the ShareAll mode, where the content sharing is shown full screen on all monitors.
|
||||
@@ -744,12 +762,29 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
}
|
||||
|
||||
public class CallRecordInfo
|
||||
public class CallRecordInfo : NotifiableObject
|
||||
{
|
||||
private bool _meetingIsBeingRecorded;
|
||||
|
||||
public bool canRecord { get; set; }
|
||||
public bool emailRequired { get; set; }
|
||||
public bool amIRecording { get; set; }
|
||||
public bool meetingIsBeingRecorded { get; set; }
|
||||
|
||||
public bool meetingIsBeingRecorded
|
||||
{
|
||||
get
|
||||
{
|
||||
return _meetingIsBeingRecorded;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _meetingIsBeingRecorded)
|
||||
{
|
||||
_meetingIsBeingRecorded = value;
|
||||
NotifyPropertyChanged("meetingIsBeingRecorded");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1123,9 +1158,25 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
}
|
||||
|
||||
public class Lock
|
||||
public class Lock : NotifiableObject
|
||||
{
|
||||
public bool Enable { get; set; }
|
||||
private bool _enable;
|
||||
|
||||
public bool Enable
|
||||
{
|
||||
get
|
||||
{
|
||||
return _enable;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _enable)
|
||||
{
|
||||
_enable = value;
|
||||
NotifyPropertyChanged("Enable");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public class ClosedCaption
|
||||
|
||||
@@ -26,7 +26,8 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
IRouting,
|
||||
IHasScheduleAwareness, IHasCodecCameras, IHasParticipants, IHasCameraOff, IHasCameraMute, IHasCameraAutoMode,
|
||||
IHasFarEndContentStatus, IHasSelfviewPosition, IHasPhoneDialing, IHasZoomRoomLayouts, IHasParticipantPinUnpin,
|
||||
IHasParticipantAudioMute, IHasSelfviewSize, IPasswordPrompt, IHasStartMeeting, IHasMeetingInfo, IHasPresentationOnlyMeeting
|
||||
IHasParticipantAudioMute, IHasSelfviewSize, IPasswordPrompt, IHasStartMeeting, IHasMeetingInfo, IHasPresentationOnlyMeeting,
|
||||
IHasMeetingLock, IHasMeetingRecording
|
||||
{
|
||||
private const long MeetingRefreshTimer = 60000;
|
||||
public uint DefaultMeetingDurationMin { get; private set; }
|
||||
@@ -147,6 +148,10 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
ContentSwappedWithThumbnailFeedback = new BoolFeedback(ContentSwappedWithThumbnailFeedbackFunc);
|
||||
|
||||
NumberOfScreensFeedback = new IntFeedback(NumberOfScreensFeedbackFunc);
|
||||
|
||||
MeetingIsLockedFeedback = new BoolFeedback(() => Configuration.Call.Lock.Enable );
|
||||
|
||||
MeetingIsRecordingFeedback = new BoolFeedback(() => Status.Call.CallRecordInfo.meetingIsBeingRecorded );
|
||||
}
|
||||
|
||||
public CommunicationGather PortGather { get; private set; }
|
||||
@@ -578,11 +583,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
case "ShareThumb":
|
||||
{
|
||||
ContentSwappedWithThumbnailFeedback.FireUpdate();
|
||||
OnLayoutInfoChanged();
|
||||
break;
|
||||
}
|
||||
case "Style":
|
||||
{
|
||||
LocalLayoutFeedback.FireUpdate();
|
||||
OnLayoutInfoChanged();
|
||||
break;
|
||||
}
|
||||
case "Size":
|
||||
@@ -597,6 +604,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
};
|
||||
|
||||
Configuration.Call.Lock.PropertyChanged += (o, a) =>
|
||||
{
|
||||
if (a.PropertyName == "Enable")
|
||||
{
|
||||
MeetingIsLockedFeedback.FireUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
// This is to deal with incorrect object structure coming back from the Zoom Room on v 5.6.3
|
||||
Configuration.Client.Call.Layout.PropertyChanged += (o, a) =>
|
||||
{
|
||||
@@ -613,11 +628,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
case "ShareThumb":
|
||||
{
|
||||
ContentSwappedWithThumbnailFeedback.FireUpdate();
|
||||
OnLayoutInfoChanged();
|
||||
break;
|
||||
}
|
||||
case "Style":
|
||||
{
|
||||
LocalLayoutFeedback.FireUpdate();
|
||||
OnLayoutInfoChanged();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -641,6 +658,14 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
};
|
||||
|
||||
Status.Call.CallRecordInfo.PropertyChanged += (o, a) =>
|
||||
{
|
||||
if (a.PropertyName == "meetingIsBeingRecorded")
|
||||
{
|
||||
MeetingIsRecordingFeedback.FireUpdate();
|
||||
}
|
||||
};
|
||||
|
||||
Status.Sharing.PropertyChanged += (o, a) =>
|
||||
{
|
||||
switch (a.PropertyName)
|
||||
@@ -714,13 +739,13 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
LayoutViewIsOnLastPageFeedback.FireUpdate();
|
||||
break;
|
||||
}
|
||||
//case "video_type":
|
||||
// {
|
||||
// It appears as though the actual value we want to watch is Configuration.Call.Layout.Style
|
||||
// LocalLayoutFeedback.FireUpdate();
|
||||
// break;
|
||||
// }
|
||||
case "can_Switch_Floating_Share_Content":
|
||||
{
|
||||
CanSwapContentWithThumbnailFeedback.FireUpdate();
|
||||
break;
|
||||
}
|
||||
}
|
||||
OnLayoutInfoChanged();
|
||||
};
|
||||
|
||||
Status.NumberOfScreens.PropertyChanged += (o, a) =>
|
||||
@@ -2132,7 +2157,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
var layoutsCodec = this as IHasZoomRoomLayouts;
|
||||
if (layoutsCodec != null)
|
||||
{
|
||||
layoutsCodec.AvailableLayoutsChanged += (o, a) =>
|
||||
layoutsCodec.LayoutInfoChanged += (o, a) =>
|
||||
{
|
||||
trilist.SetBool(joinMap.LayoutGalleryIsAvailable.JoinNumber, zConfiguration.eLayoutStyle.Gallery
|
||||
==
|
||||
@@ -2334,6 +2359,56 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invites contacts to a new meeting for a specified duration
|
||||
/// </summary>
|
||||
/// <param name="contacts"></param>
|
||||
/// <param name="duration"></param>
|
||||
public void InviteContactsToNewMeeting(List<InvitableDirectoryContact> contacts, uint duration)
|
||||
{
|
||||
if(duration == 0)
|
||||
{
|
||||
duration = DefaultMeetingDurationMin;
|
||||
}
|
||||
|
||||
StringBuilder message = new StringBuilder();
|
||||
|
||||
// Add the prefix
|
||||
message.Append(string.Format("zCommand Invite Duration: {0}", duration));
|
||||
|
||||
// Add each invitee
|
||||
foreach (var contact in contacts)
|
||||
{
|
||||
var invitee = string.Format(" user: {0}", contact.ContactId);
|
||||
|
||||
message.Append(invitee);
|
||||
}
|
||||
|
||||
SendText(message.ToString());
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Invites contacts to an existing meeting
|
||||
/// </summary>
|
||||
/// <param name="contacts"></param>
|
||||
public void InviteContactsToExistingMeeting(List<InvitableDirectoryContact> contacts)
|
||||
{
|
||||
StringBuilder message = new StringBuilder();
|
||||
|
||||
// Add the prefix
|
||||
message.Append(string.Format("zCommand Call Invite"));
|
||||
|
||||
// Add each invitee
|
||||
foreach (var contact in contacts)
|
||||
{
|
||||
var invitee = string.Format(" user: {0}", contact.ContactId);
|
||||
|
||||
message.Append(invitee);
|
||||
}
|
||||
|
||||
SendText(message.ToString());
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Starts a PMI Meeting for the specified duration (or default meeting duration if 0 is specified)
|
||||
@@ -2469,10 +2544,25 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
public CodecParticipants Participants { get; private set; }
|
||||
|
||||
public void RemoveParticipant(int userId)
|
||||
{
|
||||
SendText(string.Format("zCommand Call Expel Id: {0}", userId));
|
||||
}
|
||||
|
||||
public void SetParticipantAsHost(int userId)
|
||||
{
|
||||
SendText(string.Format("zCommand Call HostChange Id: {0}", userId));
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IHasParticipantAudioMute Members
|
||||
|
||||
public void MuteAudioForAllParticipants()
|
||||
{
|
||||
SendText(string.Format("zCommand Call MuteAll Mute: on"));
|
||||
}
|
||||
|
||||
public void MuteAudioForParticipant(int userId)
|
||||
{
|
||||
SendText(string.Format("zCommand Call MuteParticipant Mute: on Id: {0}", userId));
|
||||
@@ -2770,7 +2860,7 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
#region IHasZoomRoomLayouts Members
|
||||
|
||||
public event EventHandler<LayoutInfoChangedEventArgs> AvailableLayoutsChanged;
|
||||
public event EventHandler<LayoutInfoChangedEventArgs> LayoutInfoChanged;
|
||||
|
||||
private Func<bool> LayoutViewIsOnFirstPageFeedbackFunc
|
||||
{
|
||||
@@ -2836,15 +2926,26 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
|
||||
Debug.Console(1, this, "availablelayouts: {0}", availableLayouts);
|
||||
|
||||
var handler = AvailableLayoutsChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, new LayoutInfoChangedEventArgs() {AvailableLayouts = availableLayouts});
|
||||
}
|
||||
|
||||
AvailableLayouts = availableLayouts;
|
||||
}
|
||||
|
||||
private void OnLayoutInfoChanged()
|
||||
{
|
||||
var handler = LayoutInfoChanged;
|
||||
if (handler != null)
|
||||
{
|
||||
handler(this, new LayoutInfoChangedEventArgs()
|
||||
{
|
||||
AvailableLayouts = AvailableLayouts,
|
||||
CurrentSelectedLayout = (zConfiguration.eLayoutStyle)Enum.Parse(typeof(zConfiguration.eLayoutStyle),LocalLayoutFeedback.StringValue, true),
|
||||
LayoutViewIsOnFirstPage = LayoutViewIsOnFirstPageFeedback.BoolValue,
|
||||
LayoutViewIsOnLastPage = LayoutViewIsOnLastPageFeedback.BoolValue,
|
||||
CanSwapContentWithThumbnail = CanSwapContentWithThumbnailFeedback.BoolValue,
|
||||
ContentSwappedWithThumbnail = ContentSwappedWithThumbnailFeedback.BoolValue,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
public void GetAvailableLayouts()
|
||||
{
|
||||
SendText("zStatus Call Layout");
|
||||
@@ -3034,7 +3135,63 @@ namespace PepperDash.Essentials.Devices.Common.VideoCodec.ZoomRoom
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
#region IHasMeetingLock Members
|
||||
|
||||
public BoolFeedback MeetingIsLockedFeedback { get; private set; }
|
||||
|
||||
public void LockMeeting()
|
||||
{
|
||||
SendText(string.Format("zConfiguration Call Lock Enable: on"));
|
||||
}
|
||||
|
||||
public void UnLockMeeting()
|
||||
{
|
||||
SendText(string.Format("zConfiguration Call Lock Enable: off"));
|
||||
}
|
||||
|
||||
public void ToggleMeetingLock()
|
||||
{
|
||||
if (MeetingIsLockedFeedback.BoolValue)
|
||||
{
|
||||
UnLockMeeting();
|
||||
}
|
||||
else
|
||||
{
|
||||
LockMeeting();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region IHasMeetingRecording Members
|
||||
|
||||
public BoolFeedback MeetingIsRecordingFeedback { get; private set; }
|
||||
|
||||
public void StartRecording()
|
||||
{
|
||||
SendText(string.Format("Command Call Record Enable: on"));
|
||||
}
|
||||
|
||||
public void StopRecording()
|
||||
{
|
||||
SendText(string.Format("Command Call Record Enable: off"));
|
||||
}
|
||||
|
||||
public void ToggleRecording()
|
||||
{
|
||||
if (MeetingIsRecordingFeedback.BoolValue)
|
||||
{
|
||||
StopRecording();
|
||||
}
|
||||
else
|
||||
{
|
||||
StartRecording();
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Zoom Room specific info object
|
||||
|
||||
Reference in New Issue
Block a user