StephaneLenclud@222: using CecSharp;
StephaneLenclud@222: using SharpLib.Ear;
StephaneLenclud@222: using System;
StephaneLenclud@222: using System.Collections.Generic;
StephaneLenclud@253: using System.Diagnostics;
StephaneLenclud@222: using System.Linq;
StephaneLenclud@222: using System.Runtime.InteropServices;
StephaneLenclud@222: using System.Runtime.Serialization;
StephaneLenclud@222: using System.Text;
StephaneLenclud@222: using System.Threading.Tasks;
StephaneLenclud@222: 
StephaneLenclud@222: namespace SharpDisplayManager
StephaneLenclud@222: {
StephaneLenclud@222:     /// <summary>
StephaneLenclud@222:     /// Send a user key press event to the given CEC device.
StephaneLenclud@222:     /// </summary>
StephaneLenclud@222:     [DataContract]
StephaneLenclud@231:     [AttributeObject(Id = "Cec.UserControlReleased", Name = "CEC User Control Released", Description = "Send user control release opcode to a given CEC device.")]
StephaneLenclud@222:     public class ActionCecUserControlReleased : ActionCecDevice
StephaneLenclud@222:     {
StephaneLenclud@222: 
StephaneLenclud@222:         public ActionCecUserControlReleased()
StephaneLenclud@222:         {
StephaneLenclud@222:             Wait = true;
StephaneLenclud@222:         }
StephaneLenclud@222: 
StephaneLenclud@222:         [DataMember]
StephaneLenclud@231:         [AttributeObjectProperty(
StephaneLenclud@222:         Id = "Cec.UserControlPressed.Wait",
StephaneLenclud@222:         Name = "Wait",
StephaneLenclud@222:         Description = "Wait for that command."
StephaneLenclud@222:         )]
StephaneLenclud@222:         public bool Wait { get; set; }
StephaneLenclud@222: 
StephaneLenclud@222:         /// <summary>
StephaneLenclud@222:         /// 
StephaneLenclud@222:         /// </summary>
StephaneLenclud@222:         /// <returns></returns>
StephaneLenclud@264:         public override string BriefBase()
StephaneLenclud@222:         {
StephaneLenclud@260:             string brief = AttributeName + " to " + DeviceName;
StephaneLenclud@222:             if (Wait)
StephaneLenclud@222:             {
StephaneLenclud@222:                 brief += " (wait)";
StephaneLenclud@222:             }
StephaneLenclud@222:             return brief;
StephaneLenclud@222:         }
StephaneLenclud@222: 
StephaneLenclud@222:         /// <summary>
StephaneLenclud@222:         /// 
StephaneLenclud@222:         /// </summary>
StephaneLenclud@258:         protected override async Task DoExecute()
StephaneLenclud@222:         {
StephaneLenclud@222:             if (Cec.Client.Static == null)
StephaneLenclud@222:             {
StephaneLenclud@253:                 Trace.WriteLine("WARNING: No CEC client installed.");
StephaneLenclud@222:                 return;
StephaneLenclud@222:             }
StephaneLenclud@222: 
StephaneLenclud@222:             Cec.Client.Static.Lib.SendKeyRelease(Device, Wait);
StephaneLenclud@222:         }
StephaneLenclud@222:     }
StephaneLenclud@222: }