HDL Home App 第二版本 旧平台金堂用 正在使用
ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/DeviceRelayRowControl.cs
old mode 100755 new mode 100644
@@ -5,135 +5,128 @@
using ZigBee.Device;
namespace Shared.Phone.Category.Controls
{
{
  /// <summary>
  /// 分类界面的继电器设备行控件
  /// </summary>
  public class DeviceRelayRowControl : DeviceRowCommon
  {
    #region ■ 初始化_____________________________
    /// <summary>
    /// 分类界面的继电器设备行控件
    /// 初始化控件
    /// </summary>
    public class DeviceRelayRowControl : DeviceRowCommon
    {
        #region ■ 初始化_____________________________
        /// <summary>
        /// 分类界面的继电器设备行控件
        /// </summary>
        /// <param name="i_ChidrenYaxis">子控件Y轴偏移量(真实值,有些界面需要这种特殊操作)</param>
        public DeviceRelayRowControl(int i_ChidrenYaxis = 0) : base(i_ChidrenYaxis)
        {
        }
        /// <summary>
        /// 初始化控件
        /// </summary>
        /// <param name="i_device"></param>
        public override void InitControl(CommonDevice i_device)
        {
            base.InitControl(i_device);
            //添加跳转深度卡片信息事件
            this.AddDetailInfoEvent(i_device);
            //添加开关控件
            var btnSwitch = this.AddSwitchControl();
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                //如果住宅为虚拟住宅
                if (Common.Config.Instance.Home.IsVirtually == true)
                {
                    //直接变更缓存
                    ((LightBase)i_device).OnOffStatus = btnSwitch.IsSelected == true ? 0 : 1;
                    this.RefreshControlInfo(this.device);
                    return;
                }
                bool setStatu = !btnSwitch.IsSelected;
                //变更卡片状态
                this.SetRowOpenStatu(setStatu);
                //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
                this.StartCheckResponeResult(!setStatu);
                if (setStatu == true)
                {
                    //打开
                    this.SetDeviceStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
                    i_device.SwitchControl(1);
                }
                else
                {
                    //关闭
                    this.SetDeviceStatuText(Language.StringByID(R.MyInternationalizationString.Close));
                    i_device.SwitchControl(0);
                }
            };
        }
        #endregion
        #region ■ 深度卡片信息_______________________
        /// <summary>
        /// 添加跳转深度卡片信息事件
        /// </summary>
        private void AddDetailInfoEvent(CommonDevice i_device)
        {
            //深度卡片信息
            this.frameTable.ButtonClickEvent += (sender, e) =>
            {
                int backHeight = 0;
                if (i_device.DfunctionType == DeviceFunctionType.A开关)
                {
                    backHeight = 1290;
                }
                else if (i_device.DfunctionType == DeviceFunctionType.A插座)
                {
                    backHeight = 1290;
                }
                else
                {
                    backHeight = 1316;
                }
                //继电器类型的深度卡片界面(含空气开关)
                var form = new MainPage.ControlForm.DeviceRelayDetailCardForm();
                form.AddForm(i_device, UserCenter.HdlRoomLogic.Current.CurrentRoom, 965, backHeight);
                form.FormCloseEvent += this.CardDetailInfoBackEvent;
            };
        }
        #endregion
        #region ■ 检测设备打开状态___________________
        /// <summary>
        /// 检测设备打开状态
        /// </summary>
        /// <param name="i_device"></param>
        /// <returns></returns>
        public override bool CheckIsOpenStatu(CommonDevice i_device)
        {
            return ((LightBase)i_device).OnOffStatus == 1;
        }
        #endregion
        #region ■ 发送获取状态命令___________________
        /// <summary>
        /// 发送获取状态命令
        /// </summary>
        public override void SendStatuComand()
        {
            //如果住宅为虚拟住宅,此功能无效
            if (Common.Config.Instance.Home.IsVirtually == true)
            {
                return;
            }
            //检测能否发送获取状态命令
            if (this.CheckCanSendStatuComand() == true)
            {
                HdlDeviceAttributeLogic.Current.SendLightStatuComand(this.device);
            }
        }
        #endregion
    }
    /// <param name="i_device"></param>
    public override void InitControl(CommonDevice i_device, Common.Room i_nowSelectRoom)
    {
      base.InitControl(i_device, i_nowSelectRoom);
      //添加跳转深度卡片信息事件
      this.AddDetailInfoEvent(i_device);
      //添加开关控件
      var btnSwitch = this.AddSwitchControl();
      btnSwitch.ButtonClickEvent += (sender, e) =>
      {
              //如果住宅为虚拟住宅
              if (Common.Config.Instance.Home.IsVirtually == true)
        {
                //直接变更缓存
                ((LightBase)i_device).OnOffStatus = btnSwitch.IsSelected == true ? 0 : 1;
          this.RefreshControlInfo(this.device);
          return;
        }
        bool setStatu = !btnSwitch.IsSelected;
              //变更卡片状态
              this.SetRowOpenStatu(setStatu);
              //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
              this.StartCheckResponeResult(!setStatu);
        if (setStatu == true)
        {
                //打开
                this.SetDeviceStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
          i_device.SwitchControl(1);
        }
        else
        {
                //关闭
                this.SetDeviceStatuText(Language.StringByID(R.MyInternationalizationString.Close));
          i_device.SwitchControl(0);
        }
      };
    }
    #endregion
    #region ■ 深度卡片信息_______________________
    /// <summary>
    /// 添加跳转深度卡片信息事件
    /// </summary>
    private void AddDetailInfoEvent(CommonDevice i_device)
    {
      //深度卡片信息
      this.frameTable.ButtonClickEvent += (sender, e) =>
      {
        int backHeight = 0;
        if (i_device.DfunctionType == DeviceFunctionType.A开关)
        {
          backHeight = 1290;
        }
        else if (i_device.DfunctionType == DeviceFunctionType.A插座)
        {
          backHeight = 1290;
        }
        else
        {
          backHeight = 1316;
        }
              //继电器类型的深度卡片界面(含空气开关)
              var form = new MainPage.ControlForm.DeviceRelayDetailCardForm();
        form.RowOrCardControl = this;
        form.AddForm(i_device, this.nowSelectRoom, 965, backHeight);
        form.FormCloseEvent += this.CardDetailInfoBackEvent;
      };
    }
    #endregion
    #region ■ 检测设备打开状态___________________
    /// <summary>
    /// 检测设备打开状态
    /// </summary>
    /// <param name="i_device"></param>
    /// <returns></returns>
    public override bool CheckIsOpenStatu(CommonDevice i_device)
    {
      return ((LightBase)i_device).OnOffStatus == 1;
    }
    #endregion
    #region ■ 发送获取状态命令___________________
    /// <summary>
    /// 发送获取状态命令
    /// </summary>
    public override void SendStatuComand()
    {
      //如果住宅为虚拟住宅,此功能无效
      if (Common.Config.Instance.Home.IsVirtually == true)
      {
        return;
      }
      //检测能否发送获取状态命令
      if (this.CheckCanSendStatuComand() == true)
      {
        HdlDeviceAttributeLogic.Current.SendLightStatuComand(this.device);
      }
    }
    #endregion
  }
}