From 0eed1d1de836c96d1516a0618e4abd56cc71a5ab Mon Sep 17 00:00:00 2001 From: Joshua_Gutenplan <18546589+jgutenplan@users.noreply.github.com> Date: Fri, 10 May 2024 11:21:41 -0700 Subject: [PATCH] fix: cleanup and fix lockout params --- src/CiscoRoomOsCodec.cs | 4 +- .../IMcCiscoCodecUserInterfaceAppControl.cs | 13 +++ ...cs => McVideoCodecTouchpanelController.cs} | 31 ++++-- ....cs => McVideoCodecUserInterfaceConfig.cs} | 2 +- ...VideoCodecUserInterfaceControlMessenger.cs | 55 +++++++++++ .../McVideoCodecUserInterfaceRouter.cs | 95 ++++++------------- .../IVideoCodecUiExtensions.cs | 15 +++ .../IVideoCodecUiExtensionsClickedEvent.cs | 25 +++++ .../Icons/IconHandler.cs | 39 ++++++++ .../UiExtensionsHandler.cs | 18 +++- src/UserInterface/UserInterfaceFactory.cs | 2 +- ...oCodecUiExtensionsWebViewDisplayActions.cs | 51 ++++++++++ ...pi-videoCodec-ciscoExtended.4Series.csproj | 3 +- 13 files changed, 272 insertions(+), 81 deletions(-) create mode 100644 src/UserInterface/CiscoCodecUserInterface/MobileControl/IMcCiscoCodecUserInterfaceAppControl.cs rename src/UserInterface/CiscoCodecUserInterface/MobileControl/{McTouchpanelController.cs => McVideoCodecTouchpanelController.cs} (83%) rename src/UserInterface/CiscoCodecUserInterface/MobileControl/{McCodecUserInterfaceConfig.cs => McVideoCodecUserInterfaceConfig.cs} (91%) create mode 100644 src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceControlMessenger.cs create mode 100644 src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensions.cs create mode 100644 src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensionsClickedEvent.cs create mode 100644 src/UserInterface/UserInterfaceExtensions/Icons/IconHandler.cs create mode 100644 src/UserInterface/UserInterfaceWebViewDisplay/IVideoCodecUiExtensionsWebViewDisplayActions.cs diff --git a/src/CiscoRoomOsCodec.cs b/src/CiscoRoomOsCodec.cs index 46607ce..ae151a8 100644 --- a/src/CiscoRoomOsCodec.cs +++ b/src/CiscoRoomOsCodec.cs @@ -31,8 +31,8 @@ namespace epi_videoCodec_ciscoExtended { - #region enums - internal enum eCommandType + #region enums + internal enum eCommandType { SessionStart, SessionEnd, diff --git a/src/UserInterface/CiscoCodecUserInterface/MobileControl/IMcCiscoCodecUserInterfaceAppControl.cs b/src/UserInterface/CiscoCodecUserInterface/MobileControl/IMcCiscoCodecUserInterfaceAppControl.cs new file mode 100644 index 0000000..f050124 --- /dev/null +++ b/src/UserInterface/CiscoCodecUserInterface/MobileControl/IMcCiscoCodecUserInterfaceAppControl.cs @@ -0,0 +1,13 @@ +using PepperDash.Core; +using PepperDash.Essentials.Core; + +namespace PepperDash.Essentials.Touchpanel +{ + public interface IMcCiscoCodecUserInterfaceAppControl : IKeyed + { + //BoolFeedback WebViewOpenFeedback { get; } + + void CloseWebViewController(); + void CloseWebViewOsd(); + } +} diff --git a/src/UserInterface/CiscoCodecUserInterface/MobileControl/McTouchpanelController.cs b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecTouchpanelController.cs similarity index 83% rename from src/UserInterface/CiscoCodecUserInterface/MobileControl/McTouchpanelController.cs rename to src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecTouchpanelController.cs index 086a3ce..c9aad7f 100644 --- a/src/UserInterface/CiscoCodecUserInterface/MobileControl/McTouchpanelController.cs +++ b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecTouchpanelController.cs @@ -5,6 +5,7 @@ using PepperDash.Essentials.Core.Config; using PepperDash.Essentials.Core.DeviceTypeInterfaces; using PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces; +using PepperDash.Essentials.Touchpanel; using Serilog.Events; using System; using System.Linq; @@ -12,9 +13,9 @@ namespace epi_videoCodec_ciscoExtended.UserInterface.CiscoCodecUserInterface.MobileControl { - public class McTouchpanelController : CiscoCodecUserInterface, IMobileControlTouchpanelController + public class McVideoCodecTouchpanelController : CiscoCodecUserInterface, IMcCiscoCodecUserInterfaceAppControl, IMobileControlTouchpanelController { - private readonly McCodecUserInterfaceConfig _props; + private readonly McVideoCodecUserInterfaceConfig _props; private IMobileControlRoomMessenger _bridge; private IMobileControl Mc; private string _appUrl; @@ -32,12 +33,14 @@ public class McTouchpanelController : CiscoCodecUserInterface, IMobileControlTou bool IMobileControlTouchpanelController.ZoomRoomController => false; + //public BoolFeedback WebViewOpenFeedback => throw new NotImplementedException(); + private McVideoCodecUserInterfaceRouter _router; - public McTouchpanelController(DeviceConfig config) : base(config) + public McVideoCodecTouchpanelController(DeviceConfig config) : base(config) { Debug.LogMessage(LogEventLevel.Debug, "McTouchpanelController Constructor", this); - _props = ParseConfigProps(config); + _props = ParseConfigProps(config); AddPostActivationAction(SubscribeForMobileControlUpdates); @@ -101,8 +104,12 @@ private void SubscribeForMobileControlUpdates() Debug.LogMessage(LogEventLevel.Debug, "[McTouchpanelController] Subscribing to Mobile Control Events: AppUrlChanged", this); - _bridge.AppUrlChanged += (s, a) => { Debug.Console(0, this, "[McTouchpanelController] AppURL changed"); SetAppUrl(_bridge.AppUrl); UpdateFeedbacks(s, a); }; - + //SetAppUrl here fixing AppUrlFeedback.StringValue null after initial event + _bridge.AppUrlChanged += (s, a) => { Debug.Console(0, this, "[McTouchpanelController] AppURL changed"); UpdateFeedbacks(s, a); + SetAppUrl(_bridge.AppUrl); + }; + + Debug.LogMessage(LogEventLevel.Debug, "[McTouchpanelController] Building McVideoCodecUserInterfaceRouter", this); _router = new McVideoCodecUserInterfaceRouter(this, _bridge, _props); _router.Activate(this); @@ -119,7 +126,7 @@ public void SetAppUrl(string url) { try { - Debug.LogMessage(LogEventLevel.Verbose, $"Setting AppUrl", this); + Debug.LogMessage(LogEventLevel.Debug, $"Setting AppUrl", this); _appUrl = url; AppUrlFeedback.FireUpdate(); } @@ -138,5 +145,15 @@ private void UpdateFeedbacks() { foreach (var feedback in Feedbacks) { feedback.FireUpdate(); } } + + public void CloseWebViewController() + { + _router.ClearCiscoCodecUiWebViewController(); + } + + public void CloseWebViewOsd() + { + _router.ClearCiscoCodecUiWebViewOsd(); + } } } diff --git a/src/UserInterface/CiscoCodecUserInterface/MobileControl/McCodecUserInterfaceConfig.cs b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceConfig.cs similarity index 91% rename from src/UserInterface/CiscoCodecUserInterface/MobileControl/McCodecUserInterfaceConfig.cs rename to src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceConfig.cs index cf92569..c43cce4 100644 --- a/src/UserInterface/CiscoCodecUserInterface/MobileControl/McCodecUserInterfaceConfig.cs +++ b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceConfig.cs @@ -18,7 +18,7 @@ public class Lockout public UiWebViewDisplayConfig UiWebViewDisplay { get; set; } } - public class McCodecUserInterfaceConfig : CiscoCodecUserInterfaceConfig + public class McVideoCodecUserInterfaceConfig : CiscoCodecUserInterfaceConfig { [JsonProperty("defaultRoomKey")] public string DefaultRoomKey { get; set; } diff --git a/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceControlMessenger.cs b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceControlMessenger.cs new file mode 100644 index 0000000..8f568af --- /dev/null +++ b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceControlMessenger.cs @@ -0,0 +1,55 @@ +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using PepperDash.Core; +using PepperDash.Essentials.AppServer.Messengers; +using PepperDash.Essentials.Core.DeviceTypeInterfaces; + +namespace PepperDash.Essentials.Touchpanel +{ + public class McVideoCodecUserInterfaceControlMessenger : MessengerBase + { + private readonly IMcCiscoCodecUserInterfaceAppControl _appControl; + + public McVideoCodecUserInterfaceControlMessenger(string key, string messagePath, Device device) : base(key, messagePath, device) + { + _appControl = device as IMcCiscoCodecUserInterfaceAppControl; + } + + protected override void RegisterActions() + { + if (_appControl == null) + { + Debug.Console(0, this, $"{_device.Key} does not implement ITswAppControl"); + return; + } + + // AddAction($"/fullStatus", (id, context) => SendFullStatus()); + + AddAction($"/closeWebViewController", (id, context) => _appControl.CloseWebViewController()); + + //_appControl.WebViewOpenFeedback.OutputChange += (s, a) => + //{ + // PostStatusMessage(JToken.FromObject(new + // { + // appOpen = a.BoolValue + // })); + //}; + } + + //private void SendFullStatus() + //{ + // var message = new TswAppStateMessage + // { + // AppOpen = _appControl.AppOpenFeedback.BoolValue, + // }; + + // PostStatusMessage(message); + //} + } + + //public class VideoCodecUserInterfaceAppStateMessage : DeviceStateMessageBase + //{ + // [JsonProperty("appOpen", NullValueHandling = NullValueHandling.Ignore)] + // public bool? AppOpen { get; set; } + //} +} diff --git a/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceRouter.cs b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceRouter.cs index 02563c1..f284693 100644 --- a/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceRouter.cs +++ b/src/UserInterface/CiscoCodecUserInterface/MobileControl/McVideoCodecUserInterfaceRouter.cs @@ -3,6 +3,7 @@ using System.Linq; using Crestron.SimplSharp.Net; using epi_videoCodec_ciscoExtended.UserInterface.CiscoCodecUserInterface.RoomCombiner; +using epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceExtensions; using epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceExtensions.Panels; using epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceWebViewDisplay; using Independentsoft.Json.Parser; @@ -18,21 +19,17 @@ namespace epi_videoCodec_ciscoExtended.UserInterface.CiscoCodecUserInterface.Mob { internal class McVideoCodecUserInterfaceRouter : IKeyed { - private McTouchpanelController _mcTpController; + private McVideoCodecTouchpanelController _mcTpController; private IVideoCodecUiExtensionsHandler _extensionsHandler; private IRoomCombinerHandler _combinerHandler; private IMobileControlRoomMessenger _bridge; - private McCodecUserInterfaceConfig _props { get; } - - private Room _primaryRoom; + private McVideoCodecUserInterfaceConfig _props { get; } public string Key { get; } - public string Key { get; } - private UiWebViewDisplayConfig _defaultUiWebViewDisplayConfig = new UiWebViewDisplayConfig() { Title = "Mobile Control", @@ -41,9 +38,9 @@ internal class McVideoCodecUserInterfaceRouter : IKeyed }; internal McVideoCodecUserInterfaceRouter( - McTouchpanelController ui, + McVideoCodecTouchpanelController ui, IMobileControlRoomMessenger bridge, - McCodecUserInterfaceConfig props + McVideoCodecUserInterfaceConfig props ) { _props = props; @@ -52,7 +49,7 @@ McCodecUserInterfaceConfig props Key = ui.Key + "-McVcUiRouter"; } - internal void Activate(McTouchpanelController ui) + internal void Activate(McVideoCodecTouchpanelController ui) { Debug.LogMessage( LogEventLevel.Debug, @@ -199,7 +196,9 @@ EventArgs e ); var path = _props?.Lockout?.MobileControlPath; Debug.LogMessage(LogEventLevel.Debug, $"Lockout path: {path}", null, null); - if (path == null || path.Length == 0) + + // If path is null or empty, set it to "/lockout" + if (string.IsNullOrEmpty(path)) path = "/lockout"; Debug.LogMessage(LogEventLevel.Debug, $"Lockout path: {path}", null, null); var webViewConfig = @@ -217,55 +216,6 @@ EventArgs e room != null ? room.Name : primaryRoomKey ); SendCiscoCodecUiToWebViewMcUrl(path, webViewConfig); - if (!getPrimaryKeySuccess.GetValueOrDefault()) - { - Debug.LogMessage( - LogEventLevel.Debug, - $"Primary room key not found in UiMap for scenario: {curScenario.Key}", - null, null - ); - } - if (thisUisUiMapRoomKeyValue == null) - { - Debug.LogMessage( - LogEventLevel.Debug, - $"[ERROR] UiMap default room key: {thisUisDefaultRoomKey} Error: UiMap must have an entry keyed to default room key with value of room connection for room state {curScenario.Key} or lockout", - null, null - ); - return; - } - if (thisUisUiMapRoomKeyValue == "lockout") - { - Debug.LogMessage( - LogEventLevel.Debug, - $"UiMap default room key: {thisUisDefaultRoomKey} is in lockout state", - null, null - ); - var path = _props.Lockout.MobileControlPath; - if (path == null || path.Length == 0) - path = "/lockout"; - var webViewConfig = - _props.Lockout.UiWebViewDisplay == null - ? _defaultUiWebViewDisplayConfig - : _props.Lockout.UiWebViewDisplay; - var room = DeviceManager.GetDeviceForKey(primaryRoomKey) as EssentialsRoomBase; - webViewConfig.QueryParams.Add("primary", room?.Name?.Length > 0 ? room.Name : primaryRoomKey); - SendCiscoCodecUiToWebViewMcUrl(path, webViewConfig); - return; - } - Debug.LogMessage( - LogEventLevel.Debug, - $"ui with default room key {thisUisDefaultRoomKey} is not locked out", - null, null - ); - } - catch (Exception ex) - { - Debug.LogMessage(ex, "Error in Combiner_RoomCombinationScenarioChanged_Lockout_EventHandler", null, null); - Debug.LogMessage(LogEventLevel.Debug, - $"Error in Combiner_RoomCombinationScenarioChanged_Lockout_EventHandler: {ex.Message}, {ex.StackTrace}", null, null); - } - } return; } Debug.LogMessage( @@ -377,7 +327,7 @@ UiWebViewDisplayConfig webViewConfig ); // Parse the _appUrl into a Uri object var appUrl = _mcTpController.AppUrlFeedback.StringValue; - if (appUrl == null) + if (appUrl == null) { Debug.LogMessage( LogEventLevel.Debug, @@ -388,9 +338,9 @@ UiWebViewDisplayConfig webViewConfig } //var printableAppUrl = _mcTpController?.AppUrlFeedback?.StringValue?.MaskQParamTokenInUrl(); //Debug.LogMessage( - // LogEventLevel.Debug, - // $"SendCiscoCodecUiToWebViewMcUrl: {printableAppUrl}", - // this + // LogEventLevel.Debug, + // $"SendCiscoCodecUiToWebViewMcUrl: {printableAppUrl}", + // this //); UriBuilder uriBuilder = new UriBuilder(appUrl); @@ -399,7 +349,7 @@ UiWebViewDisplayConfig webViewConfig var qparams = webViewConfig.QueryParams; if (qparams != null) { - var parameters = HttpUtility.ParseQueryString(appUrl); + var parameters = HttpUtility.ParseQueryString(uriBuilder.Query); foreach (var item in qparams) { parameters.Add(item.Key, item.Value); @@ -413,7 +363,7 @@ UiWebViewDisplayConfig webViewConfig // Get the final URL var url = uriBuilder.ToString(); - var printableUrl = url.MaskQParamTokenInUrl(); + var printableUrl = uriBuilder.ToString().MaskQParamTokenInUrl(); Debug.LogMessage( LogEventLevel.Debug, @@ -441,5 +391,18 @@ UiWebViewDisplayConfig webViewConfig } ); } - } + + public void ClearCiscoCodecUiWebViewController() + { + Debug.LogMessage(LogEventLevel.Debug, "ClearCiscoCodecUiWebViewController", this); + _extensionsHandler?.UiWebViewClearAction?.Invoke(new UiWEbViewDisplayClearActionArgs() { Target = "Controller"}); + } + + public void ClearCiscoCodecUiWebViewOsd() + { + Debug.LogMessage(LogEventLevel.Debug, "ClearCiscoCodecUiWebViewOsd", this); + _extensionsHandler?.UiWebViewClearAction?.Invoke(new UiWEbViewDisplayClearActionArgs() { Target = "OSD" }); + } + + } } diff --git a/src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensions.cs b/src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensions.cs new file mode 100644 index 0000000..127df13 --- /dev/null +++ b/src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensions.cs @@ -0,0 +1,15 @@ +using epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceWebViewDisplay; +using PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces; + +namespace epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceExtensions +{ + public interface IVideoCodecUiExtensionsHandler : IVideoCodecUiExtensionsWebViewDisplayActions, IVideoCodecUiExtensionsClickedEvent + { + } + + public interface IVideoCodecUiExtensions + { + IVideoCodecUiExtensionsHandler VideoCodecUiExtensionsHandler { get; set; } + } + +} \ No newline at end of file diff --git a/src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensionsClickedEvent.cs b/src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensionsClickedEvent.cs new file mode 100644 index 0000000..bf32191 --- /dev/null +++ b/src/UserInterface/UserInterfaceExtensions/IVideoCodecUiExtensionsClickedEvent.cs @@ -0,0 +1,25 @@ +using System; + +namespace epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceExtensions +{ + public interface IVideoCodecUiExtensionsClickedEvent + { + event EventHandler UiExtensionsClickedEvent; + } + + public class UiExtensionsClickedEventArgs : EventArgs + { + public bool Clicked { get; set; } + public string Id { get; set; } + + public UiExtensionsClickedEventArgs(bool clicked, string id) + { + Clicked = clicked; + Id = id; + } + + public UiExtensionsClickedEventArgs() + { + } + } +} diff --git a/src/UserInterface/UserInterfaceExtensions/Icons/IconHandler.cs b/src/UserInterface/UserInterfaceExtensions/Icons/IconHandler.cs new file mode 100644 index 0000000..5e250cb --- /dev/null +++ b/src/UserInterface/UserInterfaceExtensions/Icons/IconHandler.cs @@ -0,0 +1,39 @@ +//using System; +//using System.Collections.Generic; +//using System.IO; +//using System.Linq; +//using System.Text; +//using System.Threading.Tasks; + +//namespace epi_videoCodec_ciscoExtended.UiExtensions +//{ +// //MAKE ICONS BEFORE OTHER EXTENSIONS THAT HAVE ICONID REF TO CUSTOM ICON. UPLOAD FIRST TO DEFINE IDS +// public class IconHandler: IUiExtensionHandler +// { +// //chat gpt on how to convert icon file to base64 for cisco command. upload of custom icon requirement + +// public IconHandler() { } +// public IconHandler(string filePath) +// { + +// try +// { +// // Read the file into a byte array +// byte[] fileBytes = File.ReadAllBytes(filePath); + +// // Convert the byte array to a Base64 string +// string base64String = Convert.ToBase64String(fileBytes); + +// // Output the base64 string +// Console.WriteLine("Base64 Encoded String:"); +// Console.WriteLine(base64String); + +// // Now you can use this base64String as part of your command to send to the Cisco Room OS device +// } +// catch (Exception e) +// { +// Console.WriteLine("An error occurred: " + e.Message); +// } +// } +// } +//} diff --git a/src/UserInterface/UserInterfaceExtensions/UiExtensionsHandler.cs b/src/UserInterface/UserInterfaceExtensions/UiExtensionsHandler.cs index 38ccdcc..5d44d0e 100644 --- a/src/UserInterface/UserInterfaceExtensions/UiExtensionsHandler.cs +++ b/src/UserInterface/UserInterfaceExtensions/UiExtensionsHandler.cs @@ -3,6 +3,7 @@ using PepperDash.Core; using PepperDash.Essentials.Devices.Common.VideoCodec.Interfaces; using System; +using static epi_videoCodec_ciscoExtended.CiscoCodecConfiguration; namespace epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceExtensions { @@ -13,7 +14,9 @@ public class UiExtensionsHandler : ICiscoCodecUiExtensionsHandler, IVideoCodecUi public Action UiWebViewDisplayAction { get; set; } - public event EventHandler UiExtensionsClickedEvent; + public Action UiWebViewClearAction { get; set; } + + public event EventHandler UiExtensionsClickedEvent; public UiExtensionsHandler(IKeyed parent, Action enqueueCommand) @@ -33,8 +36,17 @@ public UiExtensionsHandler(IKeyed parent, Action enqueueCommand) //coms.SendText(uwvd.xCommand()); EnqueuCommand(uwvd.xCommand()); }); - - } + UiWebViewClearAction = new Action((args) => + { + var target = args.Target; + if(args.Target == null || args.Target == "") + { + target = "Controller"; + } + Debug.LogMessage(Serilog.Events.LogEventLevel.Debug, "WebViewClearAction: {0}", _parent, args); + EnqueuCommand($"xCommand UserInterface WebView Display Clear Target:{target}{CiscoCodec.Delimiter}"); + }); + } public void ParseStatus(Panels.CiscoCodecEvents.Panel panel) { diff --git a/src/UserInterface/UserInterfaceFactory.cs b/src/UserInterface/UserInterfaceFactory.cs index 63cf708..9f3d17e 100644 --- a/src/UserInterface/UserInterfaceFactory.cs +++ b/src/UserInterface/UserInterfaceFactory.cs @@ -27,7 +27,7 @@ public override EssentialsDevice BuildDevice(DeviceConfig dc) if (type.Equals("ciscoRoomOsMobileControl")) { - return new McTouchpanelController(dc); + return new McVideoCodecTouchpanelController(dc); } return new CiscoCodecUserInterface(dc); } diff --git a/src/UserInterface/UserInterfaceWebViewDisplay/IVideoCodecUiExtensionsWebViewDisplayActions.cs b/src/UserInterface/UserInterfaceWebViewDisplay/IVideoCodecUiExtensionsWebViewDisplayActions.cs new file mode 100644 index 0000000..0dd3aea --- /dev/null +++ b/src/UserInterface/UserInterfaceWebViewDisplay/IVideoCodecUiExtensionsWebViewDisplayActions.cs @@ -0,0 +1,51 @@ +using System; + +namespace epi_videoCodec_ciscoExtended.UserInterface.UserInterfaceWebViewDisplay +{ + public interface IVideoCodecUiExtensionsWebViewDisplayActions + { + Action UiWebViewDisplayAction { get; set; } + Action UiWebViewClearAction { get; set; } + } + + public class UiWebViewDisplayActionArgs + { + + /// + /// Required <0 - 2000> The URL of the web page. + /// + public string Url { get; set; } + + /// + /// Fullscreen, Modal Full screen: Display the web page on the entire screen.Modal: Display the web page in a window. + /// + + public string Mode { get; set; } + + /// + /// <0 - 255> The title of the web page. + /// + public string Title { get; set; } + + /// + /// <0 - 8192> An HTTP header field.You can add up 15 Header parameters in one command, each holding one HTTP header field. + /// + public string Header { get; set; } + + /// + /// OSD, Controller, PersistentWebApp Controller: Only for Cisco internal use. + /// OSD: Close the web view that is displayed on the screen of the device.PersistentWebApp: Only for Cisco internal use. + /// + public string Target { get; set; } + } + + public class UiWEbViewDisplayClearActionArgs + { + /// + /// OSD, Controller, PersistentWebApp Controller: Only for Cisco internal use. + /// OSD: Close the web view that is displayed on the screen of the device.PersistentWebApp: Only for Cisco internal use. + /// + public string Target { get; set; } + } + +} diff --git a/src/epi-videoCodec-ciscoExtended.4Series.csproj b/src/epi-videoCodec-ciscoExtended.4Series.csproj index 1b41167..509e819 100644 --- a/src/epi-videoCodec-ciscoExtended.4Series.csproj +++ b/src/epi-videoCodec-ciscoExtended.4Series.csproj @@ -38,7 +38,8 @@ - + +