gxc
2019-10-29 081ea8d273048fd03756718ac6fb48a3c09218e9
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/TimeSettignPage.cs
@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using Shared.Common;
using ZigBee.Device;
@@ -6,6 +7,45 @@
{
    public class TimeSettignPage : DoorLockCommonLayout, ZigBee.Common.IStatus
    {
        /// <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 (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(() =>
                                {
                                    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;
                                    }
                                });
                            }
                        }
                    }
                }
            }
        }
        /// <summary>
        /// 构造函数
        /// </summary>
@@ -21,9 +61,26 @@
        #region ◆ 变量申明__________________________
        ZigBee.Device.DoorLock doorLock;
        string setTimeType = "";
        Action<string> dateAction; //日期通知
        Action<string> timeAction; //时间通知
        DateTime CurentDoorLockTime;
        Button textDisplayDate;
        Button textDisplayTime;
        int curYear = 0;
        int curMonth = 0;
        int curDay = 0;
        int curHour = 0;
        int curMin = 0;
        int curSec = 0;
        public Action timeSetAction;
        #endregion
        /// <summary>
        /// 重写移除方法
        /// </summary>
        public override void RemoveFromParent()
        {
            ZbGateway.StatusList.Remove(this);
            base.RemoveFromParent();
        }
        /// <summary>
        /// UI显示 
@@ -34,15 +91,18 @@
            {
                this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.ValidTime));
            }
            else
            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) =>
            {
                RemoveFromParent();
                this.RemoveFromParent();
            };
            this.btnBack.MouseUpEventHandler += eHandlerBack;
            this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
@@ -53,17 +113,31 @@
        public void MidFrameLayoutContent()
        {
            if (setTimeType == "DoorLockTime")
            {
                new System.Threading.Thread(() =>
                {
                    while (this.Parent != null)
                    {
                        doorLock.ReadAttri(ZigBee.Device.Cluster_ID.DoorLock, ZigBee.Device.AttriButeId.DoorLock);
                        System.Threading.Thread.Sleep(5 * 1000);
                    }
                })
                { IsBackground = true }.Start();
            }
            var MidTopFrameLayout = new FrameLayout()
            {
                BackgroundColor = ZigbeeColor.Current.XMWhite,
            };
            this.midFrameLayout.AddChidren(MidTopFrameLayout);
            var dtNow = DateTime.Now;
            for (int i = 0; i < 2; i++)
            {
                var btnDateTime = new Button()
                {
                    Width = Application.GetRealWidth(743 - 300),
                    Width = Application.GetRealWidth(560),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(58),
                    TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
@@ -72,28 +146,30 @@
                };
                MidTopFrameLayout.AddChidren(btnDateTime);
                var textDisplay = new Button()
                var textDisplayDateFrameLayout = new FrameLayout()
                {
                    Width = Application.GetRealWidth(300),
                    Width = Application.GetRealWidth(333),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(580),
                    TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                    TextAlignment = TextAlignment.CenterRight,
                    TextSize = 12,
                    X = Application.GetRealWidth(620),
                };
                MidTopFrameLayout.AddChidren(textDisplay);
                MidTopFrameLayout.AddChidren(textDisplayDateFrameLayout);
                var btnNextFrameLayout = new FrameLayout()
                {
                    Width = Application.GetRealWidth(116),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(956),
                };
                MidTopFrameLayout.AddChidren(btnNextFrameLayout);
                var btnNext = new Button()
                {
                    Width = Application.GetRealWidth(58),
                    Height = Application.GetRealHeight(58),
                    X = Application.GetRealWidth(956),
                    Y = Application.GetRealHeight(204),
                    //BackgroundColor = ZigbeeColor.Current.XMOrange,
                    UnSelectedImagePath = "Item/Next.png",
                    SelectedImagePath = "Item/Down.png",
                };
                MidTopFrameLayout.AddChidren(btnNext);
                btnNextFrameLayout.AddChidren(btnNext);
                var btnLine = new FrameLayout()
                {
@@ -105,92 +181,375 @@
                };
                MidTopFrameLayout.AddChidren(btnLine);
                if (setTimeType != "DoorLockTime")
                {
                    textDisplayDateFrameLayout.Width = 0;
                }
                if (i == 0)
                {
                    btnDateTime.Y = Application.GetRealHeight(50);
                    btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Date);
                    btnLine.Y = Application.GetRealHeight(23 + 127);
                    textDisplay.Text = "8月6日";
                    textDisplay.Y = btnNext.Y = btnDateTime.Y;
                    EventHandler<MouseEventArgs> stattimeclick = (sender1, e1) =>
                    textDisplayDate = new Button()
                    {
                        var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
                        this.midFrameLayout.AddChidren(flMain);
                        flMain.MouseUpEventHandler += (sender11, e11) =>
                        {
                            flMain.RemoveFromParent();
                        };
                        var timeview = new DateView
                        {
                            Y = Application.GetRealHeight(1920 - 800),
                            Height = Application.GetRealHeight(800),
                            BackgroundColor = ZigbeeColor.Current.LogicTimeViewColor,
                            Width = Application.GetRealWidth(1080),
                        };
                        flMain.AddChidren(timeview);
                        var btnSave = new Button
                        {
                            Y = Application.GetRealHeight(1920 - 800),
                            Width = Application.GetRealWidth(200),
                            Height = Application.GetRealHeight(150),
                            Text = "完成",
                            TextColor = ZigbeeColor.Current.LogicTimeViewSaveButton,
                            X = Application.GetRealWidth(1080 - 200),
                        };
                        flMain.AddChidren(btnSave);
                        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),
                    };
                    btnNext.MouseDownEventHandler += stattimeclick;
                    textDisplayDateFrameLayout.AddChidren(textDisplayDate);
                    textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = btnDateTime.Y;
                    if (setTimeType != "DoorLockTime")
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Date);
                    }
                    else
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentDate);
                    }
                }
                else if (i == 1)
                {
                    btnDateTime.Y = Application.GetRealHeight(200);
                    btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Time);
                    btnLine.Y = Application.GetRealHeight(40 + 127 + 127);
                    textDisplay.Text = "12 : 00";
                    textDisplay.Y = btnNext.Y = btnDateTime.Y;
                    EventHandler<MouseEventArgs> endtimeclick = (sender, e) =>
                    textDisplayTime = new Button()
                    {
                        var flMain = new FrameLayout { BackgroundColor = 0x00000000 };
                        this.midFrameLayout.AddChidren(flMain);
                        flMain.MouseUpEventHandler += (sender11, e11) =>
                        {
                            flMain.RemoveFromParent();
                        };
                        var timeview = new TimeView()
                        {
                            Y = Application.GetRealHeight(1920 - 800),
                            Height = Application.GetRealHeight(800),
                            BackgroundColor = ZigbeeColor.Current.LogicTimeViewColor,
                            Width = Application.GetRealWidth(1080),
                        };
                        flMain.AddChidren(timeview);
                        var btnSave = new Button
                        {
                            Y = Application.GetRealHeight(1920 - 800),
                            Width = Application.GetRealWidth(200),
                            Height = Application.GetRealHeight(150),
                            Text = "完成",
                            TextColor = ZigbeeColor.Current.LogicTimeViewSaveButton,
                            X = Application.GetRealWidth(1080 - 200),
                        };
                        flMain.AddChidren(btnSave);
                        btnSave.MouseUpEventHandler += (sender2, e2) =>
                        {
                            flMain.RemoveFromParent();
                        };
                        TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                        TextAlignment = TextAlignment.CenterRight,
                        TextSize = 12,
                        Text = "00:00",
                    };
                    textDisplayDateFrameLayout.AddChidren(textDisplayTime);
                    textDisplayDateFrameLayout.Y = btnNextFrameLayout.Y = btnDateTime.Y;
                    btnNext.MouseDownEventHandler += endtimeclick;
                    if (setTimeType != "DoorLockTime")
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.Time);
                    }
                    else
                    {
                        btnDateTime.Text = Language.StringByID(R.MyInternationalizationString.CurrentTime);
                    }
                }
                int curIndex = i;
                EventHandler<MouseEventArgs> hander = (sender, e) =>
                {
                    this.midFrameLayout.AddChidren(this.shadowRadiusFrameLayout);
                    this.BottomRadiusFrameLayout(this);
                    var mUIPickerView = new UIPickerView()
                    {
                        X = Application.GetRealWidth(0),
                    };
                    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(110);
                        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 - 10; y < dtNow.Year + 1; y++)
                        {
                            mList1.Add(y.ToString());
                        }
                        for (int m = 1; m < 13; m++)
                        {
                            mList2.Add(m.ToString());
                        }
                        for (int d = 1; d < days; d++)
                        {
                            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")
                            {
                                Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateYear = dtNow.Year;
                                Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth = curMonth;
                                Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay = curDay;
                            }
                            else
                            {
                                Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateYear = dtNow.Year;
                                Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth = curMonth;
                                Shared.Phone.UserCenter.DoorLock.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.XMGray3,
                                TextSize = 14,
                            };
                            this.bottomRadiusFrameLayout.AddChidren(btnOk);
                            btnOk.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (setTimeType == "ValidTime")
                                {
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateYear = dtNow.Year;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMonth = curMonth;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateDay = curDay;
                                }
                                else
                                {
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateYear = dtNow.Year;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMonth = curMonth;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateDay = curDay;
                                }
                                if (timeSetAction != null)
                                {
                                    timeSetAction();
                                }
                                this.shadowRadiusFrameLayout.RemoveFromParent();
                            };
                        }
                        else
                        {
                            mUIPickerView.setNPicker(mList1, mList2, mList3);
                            mUIPickerView.setCurrentItems(dtNow.Year, 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++)
                                {
                                    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(curYear, 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(95);
                        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")
                        {
                            Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour = curHour;
                            Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute = curMin;
                            Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateSecond = curSec;
                        }
                        else
                        {
                            Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour = curHour;
                            Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute = curMin;
                            Shared.Phone.UserCenter.DoorLock.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.XMGray3,
                                TextSize = 14,
                            };
                            this.bottomRadiusFrameLayout.AddChidren(btnOk);
                            btnOk.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (setTimeType == "ValidTime")
                                {
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateHour = curHour;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateMinute = curMin;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.ValidDateSecond = curSec;
                                }
                                else
                                {
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateHour = curHour;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateMinute = curMin;
                                    Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.InValidDateSecond = curSec;
                                }
                                if (timeSetAction != null)
                                {
                                    timeSetAction();
                                }
                                this.shadowRadiusFrameLayout.RemoveFromParent();
                            };
                        }
                    }
                };
                btnDateTime.MouseDownEventHandler += hander;
                textDisplayDateFrameLayout.MouseDownEventHandler += hander;
                btnNextFrameLayout.MouseDownEventHandler += hander;
                btnNext.MouseDownEventHandler += hander;
            }
            btnCancel.MouseUpEventHandler += (sender1, e1) =>
            {
                this.shadowRadiusFrameLayout.RemoveFromParent();
            };
            btnFinish.MouseUpEventHandler += async (sender1, e1) =>
            {
                if (setTimeType == "DoorLockTime")
                {
                    var curDateTime = new DateTime(curYear, curMonth, curDay, curHour, curMin, curSec);
                    var setTimestamp = Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetUnixTimeStamp(curDateTime);
                    try
                    {
                        CommonPage.Loading.Start("");
                        var rectifyResult = await doorLock.RectifyDoorLockTimeAsync(int.Parse(setTimestamp));
                        if (rectifyResult != null && rectifyResult.setWritableValueResponData != null && rectifyResult.setWritableValueResponData.Status == 0)
                        {
                            this.shadowRadiusFrameLayout.RemoveFromParent();
                            // new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RectifySuccess), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
                        }
                        else
                        {
                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.RectifyFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnFinish);
                        }
                    }
                    catch { }
                    finally
                    {
                        System.Threading.Thread.Sleep(3000);
                        CommonPage.Loading.Hide();
                    }
                }
            };
            this.shadowRadiusFrameLayout.MouseUpEventHandler += (sender1, e1) =>
            {
                this.shadowRadiusFrameLayout.RemoveFromParent();
            };
            //等待从门锁上面加载出的时间
            //System.Threading.Thread.Sleep(1500);
            //CommonPage.Loading.Hide();
        }
        #region ◆ 接口实现__________________________
@@ -202,14 +561,6 @@
        public void Changed(CommonDevice common)
        {
        }
        /// <summary>
        /// 处理变化事件
        /// </summary>
        /// <param name="common"></param>
        /// <param name="typeTag"></param>
        public void DeviceInfoChange(CommonDevice common, string typeTag)
        {
        }
        /// <summary>
        /// Changeds the IL ogic status.