HDL Home App 第二版本 旧平台金堂用 正在使用
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
old mode 100755 new mode 100644
@@ -5,988 +5,1061 @@
namespace Shared.Phone.UserCenter.DoorLock
{
    public class TimeSettignPage : DoorLockCommonLayout, ZigBee.Common.IStatus
  public class TimeSettignPage : DoorLockCommonLayout, ZigBee.Common.IStatus
  {
    #region 上报数据处理
    /// <summary>
    /// 处理变化事件
    /// </summary>
    /// <param name="common"></param>
    /// <param name="typeTag"></param>
    public void DeviceInfoChange(CommonDevice tempDevice, string typeTag)
    {
        #region 上报数据处理
        /// <summary>
        /// 处理变化事件
        /// </summary>
        /// <param name="common"></param>
        /// <param name="typeTag"></param>
        public void DeviceInfoChange(CommonDevice tempDevice, string typeTag)
      if (typeTag == "DeviceStatusReport" && tempDevice != null)
      {
        if (tempDevice != null)
        {
            if (typeTag == "DeviceStatusReport" && tempDevice != null)
          if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint
                            && tempDevice.DeviceAddr == doorLock.DeviceAddr)
          {
            if (tempDevice.DeviceStatusReport != null && tempDevice.DeviceStatusReport.AttriBute != null)
            {
                if (tempDevice != null)
              var dataReport = tempDevice.DeviceStatusReport.AttriBute[0];
              if (tempDevice.DeviceStatusReport.CluterID == 10 && dataReport.AttributeId == 0)
              {
                CurentDoorLockTime = DoorLockCommonInfo.GetLocalTime(dataReport.AttriButeData);
                Application.RunOnMainThread(() =>
                {
                    if (tempDevice.DeviceEpoint == doorLock.DeviceEpoint
                                      && tempDevice.DeviceAddr == doorLock.DeviceAddr)
                    {
                        if (tempDevice.DeviceStatusReport != null && tempDevice.DeviceStatusReport.AttriBute != null)
                        {
                            var dataReport = tempDevice.DeviceStatusReport.AttriBute[0];
                            if (tempDevice.DeviceStatusReport.CluterID == 10 && dataReport.AttributeId == 0)
                            {
                                CurentDoorLockTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetLocalTime(dataReport.AttriButeData);
                                Application.RunOnMainThread(() =>
                                {
                                    waitGetDoorLockTime = DateTime.MaxValue;
                                    textDisplayDate.Text = CurentDoorLockTime.Year + Language.StringByID(R.MyInternationalizationString.Year) + CurentDoorLockTime.Month + Language.StringByID(R.MyInternationalizationString.Month) + CurentDoorLockTime.Day + Language.StringByID(R.MyInternationalizationString.Day);
                                    if (CurentDoorLockTime.Minute < 10)
                                    {
                                        textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + "0" + CurentDoorLockTime.Minute;
                                    }
                                    else
                                    {
                                        textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + CurentDoorLockTime.Minute;
                                    }
                                    CommonPage.Loading.Hide();
                                });
                            }
                        }
                    }
                }
                  waitGetDoorLockTime = DateTime.MaxValue;
                  textDisplayDate.Text = CurentDoorLockTime.Year + Language.StringByID(R.MyInternationalizationString.Year) + CurentDoorLockTime.Month + Language.StringByID(R.MyInternationalizationString.Month) + CurentDoorLockTime.Day + Language.StringByID(R.MyInternationalizationString.Day);
                  if (CurentDoorLockTime.Minute < 10)
                  {
                    textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + "0" + CurentDoorLockTime.Minute;
                  }
                  else
                  {
                    textDisplayTime.Text = CurentDoorLockTime.Hour + ":" + CurentDoorLockTime.Minute;
                  }
                  CommonPage.Loading.Hide();
                });
              }
            }
          }
        }
        #endregion
      }
    }
    #endregion
        #region 构造函数
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="doorLock"></param>
        public TimeSettignPage(ZigBee.Device.DoorLock doorLock, string timeType)
    #region 构造函数
    /// <summary>
    /// 构造函数
    /// </summary>
    /// <param name="doorLock"></param>
    public TimeSettignPage(ZigBee.Device.DoorLock doorLock, string timeType)
    {
      this.doorLock = doorLock;
      setTimeType = timeType;
      BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
      //读门锁时区时间
      DoorLockCommonInfo.GetDoorLockZoneTime();
      ZigBee.Device.ZbGateway.StatusList.Add(this);
    }
    #endregion
    #region UI内容
    #region  变量申明
    /// <summary>
    /// 当前门锁
    /// </summary>
    ZigBee.Device.DoorLock doorLock;
    /// <summary>
    /// 设置时间类型
    /// </summary>
    string setTimeType = "";
    /// <summary>
    /// 当前门锁时间
    /// </summary>
    DateTime CurentDoorLockTime;
    /// <summary>
    /// 显示日期的文本
    /// </summary>
    Button textDisplayDate;
    /// <summary>
    /// 显示时间的文本
    /// </summary>
    Button textDisplayTime;
    /// <summary>
    /// 本地变量“年”
    /// </summary>
    int curYear = 0;
    /// <summary>
    /// 本地变量“月”
    /// </summary>
    int curMonth = 0;
    /// <summary>
    /// 本地变量“日”
    /// </summary>
    int curDay = 0;
    /// <summary>
    /// 本地变量“时”
    /// </summary>
    int curHour = 0;
    /// <summary>
    /// 本地变量“分”
    /// </summary>
    int curMin = 0;
    /// <summary>
    /// 本地变量“秒”
    /// </summary>
    int curSec = 0;
    /// <summary>
    /// 设置时间的Action
    /// </summary>
    public Action timeSetAction;
    /// <summary>
    /// 等待获取门锁时的等待时间
    /// </summary>
    DateTime waitGetDoorLockTime = DateTime.MaxValue;
    #endregion
    /// <summary>
    /// UI显示
    /// </summary>
    public void Show()
    {
      if (setTimeType == "ValidTime")
      {
        this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.ValidTime));
      }
      else if (setTimeType == "InValidTime")
      {
        this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.InValidTime));
      }
      else
      {
        this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.DoorLockTime));
      }
      EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
      {
        this.RemoveFromParent();
      };
      this.btnBack.MouseUpEventHandler += eHandlerBack;
      this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
      this.MidFrameLayout(this);
      MidFrameLayoutContent();
    }
    /// <summary>
    /// 中部布局
    /// </summary>
    public void MidFrameLayoutContent()
    {
      if (setTimeType == "DoorLockTime")
      {
        ReadDoorlockTime();
      }
      var zoneFrameLayout = new FrameLayout()
      {
        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
      };
      this.midFrameLayout.AddChidren(zoneFrameLayout);
      if (setTimeType == "DoorLockTime")
      {
        zoneFrameLayout.Height = Application.GetRealHeight(150) + 1;
        AddDoorLocksTimeRow(zoneFrameLayout);
      }
      else
      {
        zoneFrameLayout.Height = Application.GetRealHeight(0);
      }
      var midTopFrameLayout = new FrameLayout()
      {
        Y = zoneFrameLayout.Bottom,
      };
      this.midFrameLayout.AddChidren(midTopFrameLayout);
      var dtNow = DoorLockCommonInfo.DoorlockZoneTime;// DateTime.Now;
      for (int i = 0; i < 2; i++)
      {
        #region MidTopFrameLayout UI
        var rowLayout = new FrameLayout()
        {
            this.doorLock = doorLock;
            setTimeType = timeType;
            BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
            ZigBee.Device.ZbGateway.StatusList.Add(this);
        }
        #endregion
          Height = Application.GetRealHeight(127 + 23),
          BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
        };
        midTopFrameLayout.AddChidren(rowLayout);
        #region UI内容
        #region  变量申明
        /// <summary>
        /// 当前门锁
        /// </summary>
        ZigBee.Device.DoorLock doorLock;
        /// <summary>
        /// 设置时间类型
        /// </summary>
        string setTimeType = "";
        /// <summary>
        /// 当前门锁时间
        /// </summary>
        DateTime CurentDoorLockTime;
        /// <summary>
        /// 显示日期的文本
        /// </summary>
        Button textDisplayDate;
        /// <summary>
        /// 显示时间的文本
        /// </summary>
        Button textDisplayTime;
        /// <summary>
        /// 本地变量“年”
        /// </summary>
        int curYear = 0;
        /// <summary>
        /// 本地变量“月”
        /// </summary>
        int curMonth = 0;
        /// <summary>
        /// 本地变量“日”
        /// </summary>
        int curDay = 0;
        /// <summary>
        /// 本地变量“时”
        /// </summary>
        int curHour = 0;
        /// <summary>
        /// 本地变量“分”
        /// </summary>
        int curMin = 0;
        /// <summary>
        /// 本地变量“秒”
        /// </summary>
        int curSec = 0;
        /// <summary>
        /// 设置时间的Action
        /// </summary>
        public Action timeSetAction;
        /// <summary>
        /// 等待获取门锁时的等待时间
        /// </summary>
        DateTime waitGetDoorLockTime = DateTime.MaxValue;
        #endregion
        /// <summary>
        /// UI显示
        /// </summary>
        public void Show()
        var btnDateTime = new Button()
        {
          Width = Application.GetRealWidth(560),
          Height = Application.GetRealHeight(58),
          X = Application.GetRealWidth(58),
          TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
          TextAlignment = TextAlignment.CenterLeft,
          TextSize = 12,
        };
        rowLayout.AddChidren(btnDateTime);
        var textDisplayDateFrameLayout = new FrameLayout()
        {
          Width = Application.GetRealWidth(333),
          Height = Application.GetRealHeight(58),
          X = Application.GetRealWidth(620),
        };
        rowLayout.AddChidren(textDisplayDateFrameLayout);
        var btnNextFrameLayout = new FrameLayout()
        {
          Width = Application.GetRealWidth(116),
          Height = Application.GetRealHeight(58),
          X = Application.GetRealWidth(956),
        };
        rowLayout.AddChidren(btnNextFrameLayout);
        var btnNext = new Button()
        {
          Width = Application.GetRealWidth(58),
          Height = Application.GetRealHeight(58),
          UnSelectedImagePath = "Item/RightNext.png",
          SelectedImagePath = "Item/Down.png",
        };
        btnNextFrameLayout.AddChidren(btnNext);
        var btnLine = new FrameLayout()
        {
          Width = Application.GetRealWidth(965),
          Height = 1,
          X = Application.GetRealWidth(58),
          BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
        };
        midTopFrameLayout.AddChidren(btnLine);
        #endregion
        #region 显示处理
        if (i == 0)
        {
          btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50);
          btnLine.Y = Application.GetRealHeight(23 + 127);
          textDisplayDate = new Button()
          {
            TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
            TextAlignment = TextAlignment.CenterRight,
            TextSize = 12,
            Text = "_" + Language.StringByID(R.MyInternationalizationString.Year) + "_" + Language.StringByID(R.MyInternationalizationString.Month) + "_" + Language.StringByID(R.MyInternationalizationString.Day),
          };
          textDisplayDateFrameLayout.AddChidren(textDisplayDate);
          if (setTimeType != "DoorLockTime")
          {
            btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Date);
            if (setTimeType == "ValidTime")
            {
                this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.ValidTime));
              textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
            }
            else if (setTimeType == "InValidTime")
            {
                this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.InValidTime));
              textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
            }
            else
            {
                this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.DoorLockTime));
            }
            EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
            {
                this.RemoveFromParent();
            };
            this.btnBack.MouseUpEventHandler += eHandlerBack;
            this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
            this.MidFrameLayout(this);
            MidFrameLayoutContent();
          }
          else
          {
            btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentDate);
          }
        }
        /// <summary>
        /// 中部布局
        /// </summary>
        public void MidFrameLayoutContent()
        else if (i == 1)
        {
            if (setTimeType == "DoorLockTime")
          rowLayout.Y = 1 + Application.GetRealHeight(150);
          btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50);
          btnLine.Y = Application.GetRealHeight(40 + 127 + 127);
          textDisplayTime = new Button()
          {
            TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
            TextAlignment = TextAlignment.CenterRight,
            TextSize = 12,
            Text = "00:00",
          };
          textDisplayDateFrameLayout.AddChidren(textDisplayTime);
          if (setTimeType != "DoorLockTime")
          {
            btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Time);
            if (setTimeType == "ValidTime")
            {
                ReadDoorlockTime();
              if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute < 10)
              {
                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
              }
              else
              {
                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
              }
            }
            var zoneFrameLayout = new FrameLayout()
            else if (setTimeType == "InValidTime")
            {
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
            };
            this.midFrameLayout.AddChidren(zoneFrameLayout);
            if (setTimeType == "DoorLockTime")
            {
                zoneFrameLayout.Height = Application.GetRealHeight(150) + 1;
                AddDoorLocksTimeRow(zoneFrameLayout);
              if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute < 10)
              {
                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
              }
              else
              {
                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
              }
            }
            else
            {
                zoneFrameLayout.Height = Application.GetRealHeight(0);
            }
            var midTopFrameLayout = new FrameLayout()
            {
                Y = zoneFrameLayout.Bottom,
            };
            this.midFrameLayout.AddChidren(midTopFrameLayout);
            var dtNow = DateTime.Now;
            for (int i = 0; i < 2; i++)
            {
                #region MidTopFrameLayout UI
                var rowLayout = new FrameLayout()
                {
                    Height = Application.GetRealHeight(127 + 23),
                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                };
                midTopFrameLayout.AddChidren(rowLayout);
                var btnDateTime = new Button()
                {
                    Width = Application.GetRealWidth(560),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(58),
                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextSize = 12,
                };
                rowLayout.AddChidren(btnDateTime);
                var textDisplayDateFrameLayout = new FrameLayout()
                {
                    Width = Application.GetRealWidth(333),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(620),
                };
                rowLayout.AddChidren(textDisplayDateFrameLayout);
                var btnNextFrameLayout = new FrameLayout()
                {
                    Width = Application.GetRealWidth(116),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(956),
                };
                rowLayout.AddChidren(btnNextFrameLayout);
                var btnNext = new Button()
                {
                    Width = Application.GetRealWidth(58),
                    Height = Application.GetRealHeight(58),
                    UnSelectedImagePath = "Item/RightNext.png",
                    SelectedImagePath = "Item/Down.png",
                };
                btnNextFrameLayout.AddChidren(btnNext);
                var btnLine = new FrameLayout()
                {
                    Width = Application.GetRealWidth(965),
                    Height = 1,
                    X = Application.GetRealWidth(58),
                    BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                };
                midTopFrameLayout.AddChidren(btnLine);
                #endregion
                #region 显示处理
                if (i == 0)
                {
                    btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50);
                    btnLine.Y = Application.GetRealHeight(23 + 127);
                    textDisplayDate = new Button()
                    {
                        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                        TextAlignment = TextAlignment.CenterRight,
                        TextSize = 12,
                        Text = "_" + Language.StringByID(R.MyInternationalizationString.Year) + "_" + Language.StringByID(R.MyInternationalizationString.Month) + "_" + Language.StringByID(R.MyInternationalizationString.Day),
                    };
                    textDisplayDateFrameLayout.AddChidren(textDisplayDate);
                    if (setTimeType != "DoorLockTime")
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Date);
                        if (setTimeType == "ValidTime")
                        {
                            textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
                        }
                        else if (setTimeType == "InValidTime")
                        {
                            textDisplayDate.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth + Language.StringByID(R.MyInternationalizationString.Month) + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay + Language.StringByID(R.MyInternationalizationString.Day);
                        }
                    }
                    else
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentDate);
                    }
                }
                else if (i == 1)
                {
                    rowLayout.Y = 1 + Application.GetRealHeight(150);
                    btnDateTime.Y = textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = Application.GetRealHeight(50);
                    btnLine.Y = Application.GetRealHeight(40 + 127 + 127);
                    textDisplayTime = new Button()
                    {
                        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                        TextAlignment = TextAlignment.CenterRight,
                        TextSize = 12,
                        Text = "00:00",
                    };
                    textDisplayDateFrameLayout.AddChidren(textDisplayTime);
                    if (setTimeType != "DoorLockTime")
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Time);
                        if (setTimeType == "ValidTime")
                        {
                            if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute < 10)
                            {
                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
                            }
                            else
                            {
                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute;
                            }
                        }
                        else if (setTimeType == "InValidTime")
                        {
                            if (Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute < 10)
                            {
                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + "0" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
                            }
                            else
                            {
                                textDisplayTime.Text = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour + ":" + Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute;
                            }
                        }
                    }
                    else
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentTime);
                    }
                    btnLine.Visible = false;
                }
                #endregion
                #region 事件处理
                int curIndex = i;
                EventHandler<MouseEventArgs> hander = (sender, e) =>
                {
                    ClickHandle(curIndex, dtNow);
                };
                rowLayout.MouseDownEventHandler += hander;
                btnDateTime.MouseDownEventHandler += hander;
                textDisplayDateFrameLayout.MouseDownEventHandler += hander;
                btnNextFrameLayout.MouseDownEventHandler += hander;
                btnNext.MouseDownEventHandler += hander;
                if (curIndex == 0)
                {
                    textDisplayDate.MouseDownEventHandler += hander;
                }
                else
                {
                    textDisplayTime.MouseDownEventHandler += hander;
                }
                #endregion
            }
            btnCancel.MouseUpEventHandler += (sender1, e1) =>
            {
                this.shadowRadiusFrameLayout.RemoveFromParent();
            };
            btnFinish.MouseUpEventHandler += (sender1, e1) =>
            {
                if (setTimeType == "DoorLockTime")
                {
                    DoorLockTimeFinishHandle();
                }
            };
            this.shadowRadiusFrameLayout.MouseUpEventHandler += (sender1, e1) =>
            {
                this.shadowRadiusFrameLayout.RemoveFromParent();
            };
            if (setTimeType == "DoorLockTime")
            {
                if (CurentDoorLockTime != null && CurentDoorLockTime.Year != 1)
                {
                    waitGetDoorLockTime = DateTime.MaxValue;
                    CommonPage.Loading.Hide();
                }
            }
          }
          else
          {
            btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentTime);
          }
          btnLine.Visible = false;
        }
        #endregion
        #region 时区
        /// <summary>
        /// 添加【门锁时间】行(门锁专用)
        /// </summary>
        private void AddDoorLocksTimeRow(FrameLayout zoneFrameLayout)
        #region 事件处理
        int curIndex = i;
        EventHandler<MouseEventArgs> hander = (sender, e) =>
        {
            //门锁时间
            var rowLayout = new FrameLayout()
            {
                Height = Application.GetRealHeight(150),
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
            };
            zoneFrameLayout.AddChidren(rowLayout);
          ClickHandle(curIndex, dtNow);
        };
        rowLayout.MouseDownEventHandler += hander;
        btnDateTime.MouseDownEventHandler += hander;
        textDisplayDateFrameLayout.MouseDownEventHandler += hander;
        btnNextFrameLayout.MouseDownEventHandler += hander;
        btnNext.MouseDownEventHandler += hander;
            //当前时区
            var btnCurZone = new Button()
            {
                Width = Application.GetRealWidth(560),
                Height = Application.GetRealHeight(58),
                X = Application.GetRealWidth(58),
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 12,
                Y = Application.GetRealHeight(46),
                Text = Language.StringByID(R.MyInternationalizationString.CurZone),
            };
            rowLayout.AddChidren(btnCurZone);
            //哪个时区
            var textZone = new Button()
            {
                Width = Application.GetRealWidth(333),
                Height = Application.GetRealHeight(58),
                X = Application.GetRealWidth(689),
                Y = Application.GetRealHeight(46),
                TextAlignment = TextAlignment.CenterRight,
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray4,
                TextSize = 14,
            };
            rowLayout.AddChidren(textZone);
            textZone.Text = zoneData();
            textZone.MouseDownEventHandler += (sender, e) =>
            {
                //GetSpecificZoneNowDate();
            };
            var btnLine = new FrameLayout()
            {
                Width = Application.GetRealWidth(965),
                Height = 1,
                X = Application.GetRealWidth(58),
                Y = Application.GetRealHeight(150),
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
            };
            zoneFrameLayout.AddChidren(btnLine);
        if (curIndex == 0)
        {
          textDisplayDate.MouseDownEventHandler += hander;
        }
        /// <summary>
        /// 时区数据
        /// </summary>
        /// <returns></returns>
        private string zoneData()
        else
        {
            string zoneText = "";
            var gwZone = caculateTimeZone(Common.Config.Instance.Home.Longitude);
            if (gwZone.Contains('+'))
            {
                zoneText = Language.StringByID(R.MyInternationalizationString.East);
            }
            else
            {
                zoneText = Language.StringByID(R.MyInternationalizationString.West);
            }
            var num = ToNum(int.Parse(gwZone));
            return zoneText += num + Language.StringByID(R.MyInternationalizationString.CurZoneText);
        }
        /// <summary>
        /// 获取时区
        /// <para>currentLon:"+"为东区,“-”为西区</para>
        /// </summary>
        public static String caculateTimeZone(double currentLon)
        {
            int timeZone;
            int shangValue = (int)(currentLon / 15);
            double yushuValue = Math.Abs(currentLon % 15);
            if (yushuValue <= 7.5)
            {
                timeZone = shangValue;
            }
            else
            {
                timeZone = shangValue + (currentLon > 0 ? 1 : -1);
            }
            return timeZone >= 0 ? "+" + Math.Abs(timeZone) : "-" + Math.Abs(timeZone);
        }
        /// <summary>
        /// 转换数字
        /// </summary>
        private string ToNum(int x)
        {
            var numString = new string[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二" };
            var strChnNamesList = new List<string>(numString);
            return strChnNamesList[x];
        }
        //如何显示时区所在的时间
        public DateTime GetSpecificZoneNowDate(string zoneName = "")
        {
            DateTime curZoneDateTime;
            // 列举所有支持的时区列表
            System.Collections.ObjectModel.ReadOnlyCollection<TimeZoneInfo> lst = TimeZoneInfo.GetSystemTimeZones();
            foreach (TimeZoneInfo tzi in lst)
            {
                var aa = tzi;
                var aa1 = tzi.Id;
            }
            GetSpecificZoneNowDate1();
            zoneName = "Central America Standard Time";//美国
            //将本地时间转换为美国标准中部时间
            DateTime dt = TimeZoneInfo.ConvertTimeToUtc(DateTime.Now, TimeZoneInfo.Local);
            curZoneDateTime = TimeZoneInfo.ConvertTimeFromUtc(dt, TimeZoneInfo.FindSystemTimeZoneById(zoneName));
            zoneName = "China Standard Time";//中国
            //首先将服务器的时间转化为utc时间,
            var utcdate = DateTime.Now.ToUniversalTime();
            //然后转换成指定时区的日期
            TimeZoneInfo beiJingZone = TimeZoneInfo.FindSystemTimeZoneById(zoneName);
            curZoneDateTime = TimeZoneInfo.ConvertTimeFromUtc(utcdate, beiJingZone);
            return curZoneDateTime;
        }
        public void GetSpecificZoneNowDate1()
        {
            // Get time in local time zone
            DateTime thisTime = DateTime.Now;
            Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(thisTime) ?
                              TimeZoneInfo.Local.DaylightName : TimeZoneInfo.Local.StandardName, thisTime);
            Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(thisTime, TimeZoneInfo.Local));
            // Get Tokyo Standard Time zone
            TimeZoneInfo tst = TimeZoneInfo.FindSystemTimeZoneById("Tokyo Standard Time");
            DateTime tstTime = TimeZoneInfo.ConvertTime(thisTime, TimeZoneInfo.Local, tst);
            Console.WriteLine("Time in {0} zone: {1}", TimeZoneInfo.Local.IsDaylightSavingTime(tstTime) ?
                              tst.DaylightName : tst.StandardName, tstTime);
            Console.WriteLine("   UTC Time: {0}", TimeZoneInfo.ConvertTimeToUtc(tstTime, tst));
        }
        #endregion
        #region 门锁时间
        /// <summary>
        /// 读取门锁时间
        /// </summary>
        private void ReadDoorlockTime()
        {
            CommonPage.Loading.Start("");
            // 只有重新启动时会慢,然后其他时刻都是有值的
            new System.Threading.Thread(() =>
            {
                while (this.Parent != null)
                {
                    if (DateTime.Now > waitGetDoorLockTime)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
                            CommonPage.Loading.Hide();
                        });
                    }
                    //读门锁时间
                    //等待10秒,没有收到提示超时退出
                    waitGetDoorLockTime = DateTime.Now.AddSeconds(+5);
                    doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
                    System.Threading.Thread.Sleep(5 * 1000);
                }
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 门锁时间确认按钮处理
        /// </summary>
        private void DoorLockTimeFinishHandle()
        {
            System.Threading.Tasks.Task.Run(async () =>
            {
                try
                {
                    var curDateTime = new DateTime(curYear, curMonth, curDay, curHour, curMin, curSec);
                    var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(curDateTime);
                    Application.RunOnMainThread(() =>
                    {
                        CommonPage.Loading.Start("");
                    });
                    var rectifyResult = await doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp));
                    if (rectifyResult != null && rectifyResult.setWritableValueResponData != null)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            if (rectifyResult.setWritableValueResponData.Status == 0)
                            {
                                doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
                                System.Threading.Thread.Sleep(1000);
                                this.shadowRadiusFrameLayout.RemoveFromParent();
                            }
                            else
                            {
                                new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RectifyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
                            }
                        });
                    }
                    else
                    {
                        Application.RunOnMainThread(() =>
                        {
                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
                        });
                    }
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); });
                }
            });
          textDisplayTime.MouseDownEventHandler += hander;
        }
        #endregion
      }
        #region 公共事件处理
        /// <summary>
        /// 事件处理
        /// </summary>
        private void ClickHandle(int curIndex, DateTime dtNow)
      btnCancel.MouseUpEventHandler += (sender1, e1) =>
      {
        this.shadowRadiusFrameLayout.RemoveFromParent();
      };
      btnFinish.MouseUpEventHandler += (sender1, e1) =>
      {
        if (setTimeType == "DoorLockTime")
        {
            this.midFrameLayout.AddChidren(this.shadowRadiusFrameLayout);
            this.bottomRadiusFrameLayout.RemoveAll();
            this.BottomRadiusFrameLayout(this);
            var mUIPickerView = new UIPickerView()
            {
                X = Application.GetRealWidth(0),
                Height = Application.GetRealHeight(440),
            };
            this.bottomRadiusFrameLayout.AddChidren(mUIPickerView);
            if (curIndex == 0)
            {
                //日期
                if (setTimeType != "DoorLockTime")
                {
                    this.btnBottomTitle.TextID = R.MyInternationalizationString.Date;
                }
                else
                {
                    this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentDate;
                }
                mUIPickerView.Y = Application.GetRealWidth(245);
                var mList1 = new List<string>();
                var mList2 = new List<string>();
                var mList3 = new List<string>();
                var oldMonth = dtNow.Month;
                int year = dtNow.Year + 1;
                int days = DateTime.DaysInMonth(dtNow.Year, dtNow.Month);
                for (int y = dtNow.Year - 9; y < dtNow.Year + 1; y++)
                {
                    mList1.Add(y.ToString());
                }
                for (int m = 1; m < 13; m++)
                {
                    if (Language.CurrentLanguage == "Chinese")
                    {
                        mList2.Add(m.ToString() + "月");
                    }
                    else
                    {
                        mList2.Add(m.ToString());
                    }
                }
                for (int d = 1; d < days + 1; d++)
                {
                    if (Language.CurrentLanguage == "Chinese")
                    {
                        mList3.Add(d.ToString() + "日");
                    }
                    else
                    {
                        mList3.Add(d.ToString());
                    }
                }
                if (setTimeType != "DoorLockTime")
                {
                    mUIPickerView.setNPicker(mList2, mList3, null);
                    mUIPickerView.setCurrentItems(dtNow.Month - 1, dtNow.Day - 1, 0);
                    curMonth = dtNow.Month;
                    curDay = dtNow.Day;
                    if (setTimeType == "ValidTime")
                    {
                        DoorLockCommonInfo.ValidDateYear = dtNow.Year;
                        DoorLockCommonInfo.ValidDateMonth = curMonth;
                        DoorLockCommonInfo.ValidDateDay = curDay;
                    }
                    else
                    {
                        DoorLockCommonInfo.InValidDateYear = dtNow.Year;
                        DoorLockCommonInfo.InValidDateMonth = curMonth;
                        DoorLockCommonInfo.InValidDateDay = curDay;
                    }
                    var btnOk = new Button
                    {
                        X = Application.GetRealWidth(919),
                        Y = Application.GetRealHeight(40),
                        Height = Application.GetRealHeight(58),
                        Width = Application.GetRealWidth(101),
                        Text = Language.StringByID(R.MyInternationalizationString.Complete),
                        TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
                        TextSize = 14,
                    };
                    this.bottomRadiusFrameLayout.AddChidren(btnOk);
                    btnOk.MouseUpEventHandler += (sender1, e1) =>
                    {
                        if (setTimeType == "ValidTime")
                        {
                            string nowValue1 = DateTime.Now.ToString("yyyyMMdd");
                            string nowValue2 = dtNow.Year.ToString() + curMonth.ToString().PadLeft(2, '0') + curDay.ToString().PadLeft(2, '0');
                            if (nowValue1.CompareTo(nowValue2) == 1)
                            {
                                this.ShowMassage(ShowMsgType.Error, "生效日期不能大于当前日期");
                                return;
                            }
                            //检查时间
                            var flage = this.CheckValidTime(dtNow.Year, curMonth, curDay,
                                DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                                DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                                DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
                            if (flage == false)
                            {
                                this.ShowMassage(ShowMsgType.Error, "生效时间不能小于失效时间");
                                return;
                            }
                            DoorLockCommonInfo.ValidDateYear = dtNow.Year;
                            DoorLockCommonInfo.ValidDateMonth = curMonth;
                            DoorLockCommonInfo.ValidDateDay = curDay;
                        }
                        else
                        {
                            //检查时间
                            var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                                DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                                dtNow.Year, curMonth, curDay,
                                DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
                            if (flage == false)
                            {
                                this.ShowMassage(ShowMsgType.Error, "失效时间不能大于生效时间");
                                return;
                            }
                            DoorLockCommonInfo.InValidDateYear = dtNow.Year;
                            DoorLockCommonInfo.InValidDateMonth = curMonth;
                            DoorLockCommonInfo.InValidDateDay = curDay;
                        }
                        if (timeSetAction != null)
                        {
                            timeSetAction();
                        }
                        this.shadowRadiusFrameLayout.RemoveFromParent();
                        MidFrameLayoutContent();
                    };
                }
                else
                {
                    mUIPickerView.setNPicker(mList1, mList2, mList3);
                    mUIPickerView.setCurrentItems(9, dtNow.Month - 1, dtNow.Day - 1);
                    curYear = dtNow.Year;
                    curMonth = dtNow.Month;
                    curDay = dtNow.Day;
                    if (CurentDoorLockTime != null)
                    {
                        curHour = CurentDoorLockTime.Hour;
                        curMin = CurentDoorLockTime.Minute;
                        curSec = CurentDoorLockTime.Second;
                    }
                    else
                    {
                        curHour = dtNow.Hour;
                        curMin = dtNow.Minute;
                        curSec = dtNow.Second;
                    }
                }
                Action dAction = () =>
                {
                    if (curMonth != oldMonth)
                    {
                        oldMonth = curMonth;
                        days = DateTime.DaysInMonth(curYear, curMonth);
                        mList3.Clear();
                        for (int d = 1; d < days + 1; d++)
                        {
                            if (Language.CurrentLanguage == "Chinese")
                            {
                                mList3.Add(d.ToString() + "日");
                            }
                            else
                            {
                                mList3.Add(d.ToString());
                            }
                        }
                        if (setTimeType != "DoorLockTime")
                        {
                            mUIPickerView.setNPicker(mList2, mList3, null);
                            mUIPickerView.setCurrentItems(curMonth - 1, curDay - 1, 0);
                        }
                        else
                        {
                            mUIPickerView.setNPicker(mList1, mList2, mList3);
                            mUIPickerView.setCurrentItems(9, curMonth - 1, curDay - 1);
                        }
                    }
                };
                mUIPickerView.OnSelectChangeEvent += (y, m, d) =>
                {
                    if (setTimeType != "DoorLockTime")
                    {
                        curYear = dtNow.Year;
                        curMonth = y + 1;
                        curDay = m + 1;
                    }
                    else
                    {
                        curYear = y + 2009;
                        curMonth = m + 1;
                        curDay = d + 1;
                    }
                    dAction();
                };
            }
            if (curIndex == 1)
            {
                //时间
                if (setTimeType != "DoorLockTime")
                {
                    this.btnBottomTitle.TextID = R.MyInternationalizationString.Time;
                }
                else
                {
                    this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentTime;
                }
                mUIPickerView.Y = Application.GetRealWidth(245);
                var mList1 = new List<string>();
                var mList2 = new List<string>();
                for (int h = 0; h < 24; h++)
                {
                    if (h < 10)
                    {
                        mList1.Add("0" + h.ToString());
                    }
                    else
                    {
                        mList1.Add(h.ToString());
                    }
                }
                for (int m = 0; m < 60; m++)
                {
                    if (m < 10)
                    {
                        mList2.Add("0" + m.ToString());
                    }
                    else
                    {
                        mList2.Add(m.ToString());
                    }
                }
                mUIPickerView.setNPicker(mList1, mList2, null);
                mUIPickerView.setCurrentItems(dtNow.Hour, dtNow.Minute, 0);
                if (CurentDoorLockTime != null)
                {
                    curYear = CurentDoorLockTime.Year;
                    curMonth = CurentDoorLockTime.Month;
                    curDay = CurentDoorLockTime.Day;
                }
                else
                {
                    curYear = dtNow.Year;
                    curMonth = dtNow.Month;
                    curDay = dtNow.Day;
                }
                curHour = dtNow.Hour;
                curMin = dtNow.Minute;
                curSec = dtNow.Second;
                mUIPickerView.OnSelectChangeEvent += (h, m, s) =>
                {
                    curHour = h;
                    curMin = m;
                    curSec = dtNow.Second;
                };
                if (setTimeType == "ValidTime")
                {
                    DoorLockCommonInfo.ValidDateHour = curHour;
                    DoorLockCommonInfo.ValidDateMinute = curMin;
                    DoorLockCommonInfo.ValidDateSecond = curSec;
                }
                else
                {
                    DoorLockCommonInfo.InValidDateHour = curHour;
                    DoorLockCommonInfo.InValidDateMinute = curMin;
                    DoorLockCommonInfo.InValidDateSecond = curSec;
                }
                if (setTimeType != "DoorLockTime")
                {
                    var btnOk = new Button
                    {
                        X = Application.GetRealWidth(919),
                        Y = Application.GetRealHeight(40),
                        Height = Application.GetRealHeight(58),
                        Width = Application.GetRealWidth(101),
                        Text = Language.StringByID(R.MyInternationalizationString.Complete),
                        TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
                        TextSize = 14,
                    };
                    this.bottomRadiusFrameLayout.AddChidren(btnOk);
                    btnOk.MouseUpEventHandler += (sender1, e1) =>
                    {
                        if (setTimeType == "ValidTime")
                        {
                            //检查时间
                            var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                                curHour, curMin, curSec,
                                DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                                DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
                            if (flage == false)
                            {
                                this.ShowMassage(ShowMsgType.Error, "失效时间不能大于生效时间");
                                return;
                            }
                            DoorLockCommonInfo.ValidDateHour = curHour;
                            DoorLockCommonInfo.ValidDateMinute = curMin;
                            DoorLockCommonInfo.ValidDateSecond = curSec;
                        }
                        else
                        {
                            //检查时间
                            var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                                DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                                DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                                curHour, curMin, curSec);
                            if (flage == false)
                            {
                                this.ShowMassage(ShowMsgType.Error, "失效时间不能大于生效时间");
                                return;
                            }
                            DoorLockCommonInfo.InValidDateHour = curHour;
                            DoorLockCommonInfo.InValidDateMinute = curMin;
                            DoorLockCommonInfo.InValidDateSecond = curSec;
                        }
                        if (timeSetAction != null)
                        {
                            timeSetAction();
                        }
                        this.shadowRadiusFrameLayout.RemoveFromParent();
                        MidFrameLayoutContent();
                    };
                }
            }
          DoorLockTimeFinishHandle();
        }
        /// <summary>
        /// 检查时间
        /// </summary>
        /// <returns></returns>
        private bool CheckValidTime(int validYear, int validMoth, int validDay, int validHour, int validMinute, int validSecond
            , int inValidYear, int inValidMoth, int inValidDay, int inValidHour, int inValidMinute, int inValidSecond)
        {
            //生效时间
            string nowValue1 = validYear.ToString()
            + validMoth.ToString().PadLeft(2, '0')
            + validDay.ToString().PadLeft(2, '0')
            + validHour.ToString().PadLeft(2, '0')
            + validMinute.ToString().PadLeft(2, '0')
            + validSecond.ToString().PadLeft(2, '0');
            //失效时间
            string nowValue2 = inValidYear.ToString()
            + inValidMoth.ToString().PadLeft(2, '0')
            + inValidDay.ToString().PadLeft(2, '0')
            + inValidHour.ToString().PadLeft(2, '0')
            + inValidMinute.ToString().PadLeft(2, '0')
            + inValidSecond.ToString().PadLeft(2, '0');
            if (nowValue1.CompareTo(nowValue2) == 1)
            {
                return false;
            }
            return true;
        }
        #endregion
        #region 移除方法
        /// <summary>
        /// 重写移除方法
        /// </summary>
        public override void RemoveFromParent()
      };
      this.shadowRadiusFrameLayout.MouseUpEventHandler += (sender1, e1) =>
      {
        this.shadowRadiusFrameLayout.RemoveFromParent();
      };
      if (setTimeType == "DoorLockTime")
      {
        if (CurentDoorLockTime != null && CurentDoorLockTime.Year != 1)
        {
            ZbGateway.StatusList.Remove(this);
            base.RemoveFromParent();
          waitGetDoorLockTime = DateTime.MaxValue;
          CommonPage.Loading.Hide();
        }
        #endregion
      }
    }
    #endregion
    #region 时区
    /// <summary>
    /// 添加【门锁时间】行(门锁专用)
    /// </summary>
    /// <param name="zoneFrameLayout"></param>
    private void AddDoorLocksTimeRow(FrameLayout zoneFrameLayout)
    {
      //门锁时间
      var rowLayout = new FrameLayout()
      {
        Height = Application.GetRealHeight(150),
        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite,
      };
      zoneFrameLayout.AddChidren(rowLayout);
      //当前时区
      var btnCurZone = new Button()
      {
        Width = Application.GetRealWidth(560),
        Height = Application.GetRealHeight(58),
        X = Application.GetRealWidth(58),
        TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
        TextAlignment = TextAlignment.CenterLeft,
        TextSize = 12,
        Y = Application.GetRealHeight(46),
        Text = Language.StringByID(R.MyInternationalizationString.CurZone),
      };
      rowLayout.AddChidren(btnCurZone);
      //哪个时区
      var textZone = new Button()
      {
        Width = Application.GetRealWidth(333),
        Height = Application.GetRealHeight(58),
        X = Application.GetRealWidth(689),
        Y = Application.GetRealHeight(46),
        TextAlignment = TextAlignment.CenterRight,
        TextColor = Shared.Common.ZigbeeColor.Current.XMGray4,
        TextSize = 14,
      };
      rowLayout.AddChidren(textZone);
      textZone.Text = zoneData();
      textZone.MouseDownEventHandler += (sender, e) =>
      {
              //1、入网后先获取门锁在网关中的时区时间
              var curDateTime = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetDoorLockZoneTime();
              //2、将时间设置到门锁中
              var dateTime = new DateTime(curDateTime.Year, curDateTime.Month, curDateTime.Day, curDateTime.Hour, curDateTime.Minute, curDateTime.Second);
        var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(dateTime);
        doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp));
      };
      var btnLine = new FrameLayout()
      {
        Width = Application.GetRealWidth(965),
        Height = 1,
        X = Application.GetRealWidth(58),
        Y = Application.GetRealHeight(150),
        BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
      };
      zoneFrameLayout.AddChidren(btnLine);
    }
    /// <summary>
    /// 时区数据
    /// </summary>
    /// <returns></returns>
    private string zoneData()
    {
      string zoneText = "";
      int num = 0;
      var gwZone = DoorLockCommonInfo.CaculateTimeZone(Common.Config.Instance.Home.Longitude);
      if (int.Parse(gwZone) != 0)
      {
        num = int.Parse(gwZone.Substring(1));
      }
      if (gwZone.Contains('+'))
      {
        if (num == 0)
        {
          zoneText = Language.StringByID(R.MyInternationalizationString.CurZoneText0);
        }
        else
        {
          zoneText = EastZoneList(num - 1);
        }
      }
      else if (gwZone.Contains('-'))
      {
        zoneText = WestZoneList(num - 1);
      }
      else
      {
        zoneText = Language.StringByID(R.MyInternationalizationString.CurZoneText0);
      }
      return zoneText;
    }
    /// <summary>
    /// 转换东区
    /// </summary>
    /// <param name="x"></param>
    /// <returns></returns>
    private string EastZoneList(int x)
    {
      var numString = new string[]
      {
                Language.StringByID(R.MyInternationalizationString.CurZoneText1),
                Language.StringByID(R.MyInternationalizationString.CurZoneText2),
                Language.StringByID(R.MyInternationalizationString.CurZoneText3),
                Language.StringByID(R.MyInternationalizationString.CurZoneText4),
                Language.StringByID(R.MyInternationalizationString.CurZoneText5),
                Language.StringByID(R.MyInternationalizationString.CurZoneText6),
                Language.StringByID(R.MyInternationalizationString.CurZoneText7),
                Language.StringByID(R.MyInternationalizationString.CurZoneText8),
                Language.StringByID(R.MyInternationalizationString.CurZoneText9),
                Language.StringByID(R.MyInternationalizationString.CurZoneText10),
                Language.StringByID(R.MyInternationalizationString.CurZoneText11),
                Language.StringByID(R.MyInternationalizationString.CurZoneText12)
      };
      var strChnNamesList = new List<string>(numString);
      return strChnNamesList[x];
    }
    /// <summary>
    /// 转换西区
    /// </summary>
    /// <param name="x"></param>
    /// <returns></returns>
    private string WestZoneList(int x)
    {
      var numString = new string[]
      {
                Language.StringByID(R.MyInternationalizationString.WestZoneText1),
                Language.StringByID(R.MyInternationalizationString.WestZoneText2),
                Language.StringByID(R.MyInternationalizationString.WestZoneText3),
                Language.StringByID(R.MyInternationalizationString.WestZoneText4),
                Language.StringByID(R.MyInternationalizationString.WestZoneText5),
                Language.StringByID(R.MyInternationalizationString.WestZoneText6),
                Language.StringByID(R.MyInternationalizationString.WestZoneText7),
                Language.StringByID(R.MyInternationalizationString.WestZoneText8),
                Language.StringByID(R.MyInternationalizationString.WestZoneText9),
                Language.StringByID(R.MyInternationalizationString.WestZoneText10),
                Language.StringByID(R.MyInternationalizationString.WestZoneText11),
                Language.StringByID(R.MyInternationalizationString.WestZoneText12)
      };
      var strChnNamesList = new List<string>(numString);
      return strChnNamesList[x];
    }
    /// <summary>
    /// 获取时区
    /// <para>currentLon:"+"为东区,“-”为西区</para>
    /// </summary>
    /// <param name="currentLon"></param>
    /// <returns></returns>
    public static String CaculateTimeZone(double currentLon)
    {
      int timeZone;
      int shangValue = (int)(currentLon / 15);
      double yushuValue = Math.Abs(currentLon % 15);
      if (yushuValue <= 7.5)
      {
        timeZone = shangValue;
      }
      else
      {
        timeZone = shangValue + (currentLon > 0 ? 1 : -1);
      }
      return timeZone >= 0 ? "+" + Math.Abs(timeZone) : "-" + Math.Abs(timeZone);
    }
    /// <summary>
    /// 获取所在时区的时间
    /// </summary>
    /// <param name="unix"></param>
    /// <returns></returns>
    public static int GetLocalTime(int unix)
    {
      var gwZone = CaculateTimeZone(Common.Config.Instance.Home.Longitude);
      var data = unix + 8 * 3600;
      return data;
    }
    #endregion
    #region 门锁时间
    /// <summary>
    /// 读取门锁时间
    /// </summary>
    private void ReadDoorlockTime()
    {
      CommonPage.Loading.Start("");
      // 只有重新启动时会慢,然后其他时刻都是有值的
      new System.Threading.Thread(() =>
      {
        while (this.Parent != null)
        {
          if (DateTime.Now > waitGetDoorLockTime)
          {
            Application.RunOnMainThread(() =>
                  {
                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 2 }.Show(CommonPage.Instance);
                    CommonPage.Loading.Hide();
                  });
          }
                //读门锁时间
                //等待10秒,没有收到提示超时退出
                waitGetDoorLockTime = DateTime.Now.AddSeconds(+5);
          doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
          System.Threading.Thread.Sleep(5 * 1000);
        }
      })
      { IsBackground = true }.Start();
    }
    /// <summary>
    /// 门锁时间确认按钮处理
    /// </summary>
    private void DoorLockTimeFinishHandle()
    {
      System.Threading.Tasks.Task.Run(async () =>
      {
        try
        {
          var curDateTime = new DateTime(curYear, curMonth, curDay, curHour, curMin, curSec);
          var setTimestamp = DoorLockCommonInfo.GetUnixTimeStamp(curDateTime);
          Application.RunOnMainThread(() =>
                {
                CommonPage.Loading.Start("");
              });
          var rectifyResult = await doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp));
          if (rectifyResult != null && rectifyResult.setWritableValueResponData != null)
          {
            Application.RunOnMainThread(() =>
                  {
                    if (rectifyResult.setWritableValueResponData.Status == 0)
                    {
                      doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
                      System.Threading.Thread.Sleep(1000);
                      this.shadowRadiusFrameLayout.RemoveFromParent();
                    }
                    else
                    {
                      new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RectifyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
                    }
                  });
          }
          else
          {
            Application.RunOnMainThread(() =>
                  {
                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
                  });
          }
        }
        catch { }
        finally
        {
          Application.RunOnMainThread(() => { CommonPage.Loading.Hide(); });
        }
      });
    }
    #endregion
    #region 公共事件处理
    /// <summary>
    /// 事件处理
    /// </summary>
    private void ClickHandle(int curIndex, DateTime dtNow)
    {
      this.midFrameLayout.AddChidren(this.shadowRadiusFrameLayout);
      this.bottomRadiusFrameLayout.RemoveAll();
      this.BottomRadiusFrameLayout(this);
      var mUIPickerView = new UIPickerView()
      {
        X = Application.GetRealWidth(0),
        Height = Application.GetRealHeight(440),
      };
      this.bottomRadiusFrameLayout.AddChidren(mUIPickerView);
      if (curIndex == 0)
      {
        //日期
        if (setTimeType != "DoorLockTime")
        {
          this.btnBottomTitle.TextID = R.MyInternationalizationString.Date;
        }
        else
        {
          this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentDate;
        }
        mUIPickerView.Y = Application.GetRealWidth(245);
        var mList1 = new List<string>();
        var mList2 = new List<string>();
        var mList3 = new List<string>();
        var oldMonth = dtNow.Month;
        int year = dtNow.Year + 1;
        int days = DateTime.DaysInMonth(dtNow.Year, dtNow.Month);
        for (int y = dtNow.Year - 9; y < dtNow.Year + 1; y++)
        {
          mList1.Add(y.ToString());
        }
        for (int m = 1; m < 13; m++)
        {
          if (Language.CurrentLanguage == "Chinese")
          {
            mList2.Add(m.ToString() + "月");
          }
          else
          {
            mList2.Add(m.ToString());
          }
        }
        for (int d = 1; d < days + 1; d++)
        {
          if (Language.CurrentLanguage == "Chinese")
          {
            mList3.Add(d.ToString() + "日");
          }
          else
          {
            mList3.Add(d.ToString());
          }
        }
        if (setTimeType != "DoorLockTime")
        {
          mUIPickerView.setNPicker(mList2, mList3, null);
          mUIPickerView.setCurrentItems(dtNow.Month - 1, dtNow.Day - 1, 0);
          curMonth = dtNow.Month;
          curDay = dtNow.Day;
          if (setTimeType == "ValidTime")
          {
            DoorLockCommonInfo.ValidDateYear = dtNow.Year;
            DoorLockCommonInfo.ValidDateMonth = curMonth;
            DoorLockCommonInfo.ValidDateDay = curDay;
          }
          else
          {
            DoorLockCommonInfo.InValidDateYear = dtNow.Year;
            DoorLockCommonInfo.InValidDateMonth = curMonth;
            DoorLockCommonInfo.InValidDateDay = curDay;
          }
          var btnOk = new Button
          {
            X = Application.GetRealWidth(919),
            Y = Application.GetRealHeight(40),
            Height = Application.GetRealHeight(58),
            Width = Application.GetRealWidth(101),
            Text = Language.StringByID(R.MyInternationalizationString.Complete),
            TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
            TextSize = 14,
          };
          this.bottomRadiusFrameLayout.AddChidren(btnOk);
          btnOk.MouseUpEventHandler += (sender1, e1) =>
          {
            if (setTimeType == "ValidTime")
            {
              string nowValue1 = DateTime.Now.ToString("yyyyMMdd");
              string nowValue2 = dtNow.Year.ToString() + curMonth.ToString().PadLeft(2, '0') + curDay.ToString().PadLeft(2, '0');
              if (nowValue1.CompareTo(nowValue2) == 1)
              {
                var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoLessThanCurrentTime);
                this.ShowMassage(ShowMsgType.Error, mess);
                return;
              }
                        //检查时间
                        var flage = this.CheckValidTime(dtNow.Year, curMonth, curDay,
                            DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                            DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                            DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
              if (flage == false)
              {
                var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime);
                this.ShowMassage(ShowMsgType.Error, mess);
                return;
              }
              DoorLockCommonInfo.ValidDateYear = dtNow.Year;
              DoorLockCommonInfo.ValidDateMonth = curMonth;
              DoorLockCommonInfo.ValidDateDay = curDay;
            }
            else
            {
                        //检查时间
                        var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                            DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                            dtNow.Year, curMonth, curDay,
                            DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
              if (flage == false)
              {
                var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime);
                this.ShowMassage(ShowMsgType.Error, mess);
                return;
              }
              DoorLockCommonInfo.InValidDateYear = dtNow.Year;
              DoorLockCommonInfo.InValidDateMonth = curMonth;
              DoorLockCommonInfo.InValidDateDay = curDay;
            }
            if (timeSetAction != null)
            {
              timeSetAction();
            }
            this.shadowRadiusFrameLayout.RemoveFromParent();
            MidFrameLayoutContent();
          };
        }
        else
        {
          mUIPickerView.setNPicker(mList1, mList2, mList3);
          mUIPickerView.setCurrentItems(9, dtNow.Month - 1, dtNow.Day - 1);
          curYear = dtNow.Year;
          curMonth = dtNow.Month;
          curDay = dtNow.Day;
          if (CurentDoorLockTime != null)
          {
            curHour = CurentDoorLockTime.Hour;
            curMin = CurentDoorLockTime.Minute;
            curSec = CurentDoorLockTime.Second;
          }
          else
          {
            curHour = dtNow.Hour;
            curMin = dtNow.Minute;
            curSec = dtNow.Second;
          }
        }
        Action dAction = () =>
        {
          if (curMonth != oldMonth)
          {
            oldMonth = curMonth;
            days = DateTime.DaysInMonth(curYear, curMonth);
            mList3.Clear();
            for (int d = 1; d < days + 1; d++)
            {
              if (Language.CurrentLanguage == "Chinese")
              {
                mList3.Add(d.ToString() + "日");
              }
              else
              {
                mList3.Add(d.ToString());
              }
            }
            if (setTimeType != "DoorLockTime")
            {
              mUIPickerView.setNPicker(mList2, mList3, null);
              mUIPickerView.setCurrentItems(curMonth - 1, curDay - 1, 0);
            }
            else
            {
              mUIPickerView.setNPicker(mList1, mList2, mList3);
              mUIPickerView.setCurrentItems(9, curMonth - 1, curDay - 1);
            }
          }
        };
        mUIPickerView.OnSelectChangeEvent += (y, m, d) =>
        {
          if (setTimeType != "DoorLockTime")
          {
            curYear = dtNow.Year;
            curMonth = y + 1;
            curDay = m + 1;
          }
          else
          {
            switch (y)
            {
              case 0:
                curYear = dtNow.Year - 9;
                break;
              case 1:
                curYear = dtNow.Year - 8;
                break;
              case 2:
                curYear = dtNow.Year - 7;
                break;
              case 3:
                curYear = dtNow.Year - 6;
                break;
              case 4:
                curYear = dtNow.Year - 5;
                break;
              case 5:
                curYear = dtNow.Year - 4;
                break;
              case 6:
                curYear = dtNow.Year - 3;
                break;
              case 7:
                curYear = dtNow.Year - 2;
                break;
              case 8:
                curYear = dtNow.Year - 1;
                break;
              default:
                curYear = dtNow.Year;
                break;
            }
            curMonth = m + 1;
            curDay = d + 1;
          }
          dAction();
        };
      }
      if (curIndex == 1)
      {
        //时间
        if (setTimeType != "DoorLockTime")
        {
          this.btnBottomTitle.TextID = R.MyInternationalizationString.Time;
        }
        else
        {
          this.btnBottomTitle.TextID = R.MyInternationalizationString.CurrentTime;
        }
        mUIPickerView.Y = Application.GetRealWidth(245);
        var mList1 = new List<string>();
        var mList2 = new List<string>();
        for (int h = 0; h < 24; h++)
        {
          if (h < 10)
          {
            mList1.Add("0" + h.ToString());
          }
          else
          {
            mList1.Add(h.ToString());
          }
        }
        for (int m = 0; m < 60; m++)
        {
          if (m < 10)
          {
            mList2.Add("0" + m.ToString());
          }
          else
          {
            mList2.Add(m.ToString());
          }
        }
        mUIPickerView.setNPicker(mList1, mList2, null);
        mUIPickerView.setCurrentItems(dtNow.Hour, dtNow.Minute, 0);
        if (CurentDoorLockTime != null)
        {
          curYear = CurentDoorLockTime.Year;
          curMonth = CurentDoorLockTime.Month;
          curDay = CurentDoorLockTime.Day;
        }
        else
        {
          curYear = dtNow.Year;
          curMonth = dtNow.Month;
          curDay = dtNow.Day;
        }
        curHour = dtNow.Hour;
        curMin = dtNow.Minute;
        curSec = dtNow.Second;
        mUIPickerView.OnSelectChangeEvent += (h, m, s) =>
        {
          curHour = h;
          curMin = m;
          curSec = dtNow.Second;
        };
        if (setTimeType == "ValidTime")
        {
          DoorLockCommonInfo.ValidDateHour = curHour;
          DoorLockCommonInfo.ValidDateMinute = curMin;
          DoorLockCommonInfo.ValidDateSecond = curSec;
        }
        else
        {
          DoorLockCommonInfo.InValidDateHour = curHour;
          DoorLockCommonInfo.InValidDateMinute = curMin;
          DoorLockCommonInfo.InValidDateSecond = curSec;
        }
        if (setTimeType != "DoorLockTime")
        {
          var btnOk = new Button
          {
            X = Application.GetRealWidth(919),
            Y = Application.GetRealHeight(40),
            Height = Application.GetRealHeight(58),
            Width = Application.GetRealWidth(101),
            Text = Language.StringByID(R.MyInternationalizationString.Complete),
            TextColor = Shared.Common.ZigbeeColor.Current.XMOrange,
            TextSize = 14,
          };
          this.bottomRadiusFrameLayout.AddChidren(btnOk);
          btnOk.MouseUpEventHandler += (sender1, e1) =>
          {
            if (setTimeType == "ValidTime")
            {
              var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                            curHour, curMin, curSec,
                            DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                            DoorLockCommonInfo.InValidDateHour, DoorLockCommonInfo.InValidDateMinute, DoorLockCommonInfo.InValidDateSecond);
              if (flage == false)
              {
                var mess = Language.StringByID(R.MyInternationalizationString.ValidTimeNoMoreThanInValidTime);
                this.ShowMassage(ShowMsgType.Error, mess);
                return;
              }
              DoorLockCommonInfo.ValidDateHour = curHour;
              DoorLockCommonInfo.ValidDateMinute = curMin;
              DoorLockCommonInfo.ValidDateSecond = curSec;
            }
            else
            {
                        //检查时间
                        var flage = this.CheckValidTime(DoorLockCommonInfo.ValidDateYear, DoorLockCommonInfo.ValidDateMonth, DoorLockCommonInfo.ValidDateDay,
                            DoorLockCommonInfo.ValidDateHour, DoorLockCommonInfo.ValidDateMinute, DoorLockCommonInfo.ValidDateSecond,
                            DoorLockCommonInfo.InValidDateYear, DoorLockCommonInfo.InValidDateMonth, DoorLockCommonInfo.InValidDateDay,
                            curHour, curMin, curSec);
              if (flage == false)
              {
                var mess = Language.StringByID(R.MyInternationalizationString.InvalidTimeNoLessThanValidTime);
                this.ShowMassage(ShowMsgType.Error, mess);
                return;
              }
              DoorLockCommonInfo.InValidDateHour = curHour;
              DoorLockCommonInfo.InValidDateMinute = curMin;
              DoorLockCommonInfo.InValidDateSecond = curSec;
            }
            if (timeSetAction != null)
            {
              timeSetAction();
            }
            this.shadowRadiusFrameLayout.RemoveFromParent();
            MidFrameLayoutContent();
          };
        }
      }
    }
    /// <summary>
    /// 检查时间
    /// </summary>
    /// <returns></returns>
    private bool CheckValidTime(int validYear, int validMoth, int validDay, int validHour, int validMinute, int validSecond
        , int inValidYear, int inValidMoth, int inValidDay, int inValidHour, int inValidMinute, int inValidSecond)
    {
      //生效时间
      string nowValue1 = validYear.ToString()
      + validMoth.ToString().PadLeft(2, '0')
      + validDay.ToString().PadLeft(2, '0')
      + validHour.ToString().PadLeft(2, '0')
      + validMinute.ToString().PadLeft(2, '0')
      + validSecond.ToString().PadLeft(2, '0');
      //失效时间
      string nowValue2 = inValidYear.ToString()
      + inValidMoth.ToString().PadLeft(2, '0')
      + inValidDay.ToString().PadLeft(2, '0')
      + inValidHour.ToString().PadLeft(2, '0')
      + inValidMinute.ToString().PadLeft(2, '0')
      + inValidSecond.ToString().PadLeft(2, '0');
      var aaaa = nowValue1.CompareTo(nowValue2);
      if (nowValue1.CompareTo(nowValue2) == 1)
      {
        return false;
      }
      return true;
    }
    #endregion
    #region 移除方法
    /// <summary>
    /// 重写移除方法
    /// </summary>
    public override void RemoveFromParent()
    {
      ZbGateway.StatusList.Remove(this);
      base.RemoveFromParent();
    }
    #endregion
  }
}