xm
2020-07-21 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d
ZigbeeApp/Shared/Phone/UserCenter/DoorLock/AddUnLockMethodTip.cs
New file
@@ -0,0 +1,294 @@
using System;
using Newtonsoft.Json.Linq;
using Shared.Common;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DoorLock
{
    public class AddUnLockMethodTip : DoorLockCommonLayout
    {
        /// 构造函数
        /// </summary>
        /// <param name="doorLock"></param>
        public AddUnLockMethodTip(ZigBee.Device.DoorLock doorLock, Shared.Phone.UserCenter.MemberInfoRes accountObj, string entryType)
        {
            this.doorLock = doorLock;
            this.curAccountObj = accountObj;
            this.currentType = entryType;
            BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor;
        }
        #region 变量申明
        /// <summary>
        /// 当前门锁
        /// </summary>
        ZigBee.Device.DoorLock doorLock;
        /// <summary>
        /// 当前账户
        /// </summary>
        Shared.Phone.UserCenter.MemberInfoRes curAccountObj;
        /// <summary>
        /// 当前类型
        /// </summary>
        string currentType = string.Empty;
        /// <summary>
        /// 接收通知
        /// </summary>
        Action<string, string> action;
        #endregion
        /// <summary>
        /// UI显示
        /// </summary>
        public void Show()
        {
            string currentTitle = "";
            if (currentType == "password")
            {
                currentTitle = Language.StringByID(R.MyInternationalizationString.AddPassword);
            }
            else if (currentType == "fingerprint")
            {
                currentTitle = Language.StringByID(R.MyInternationalizationString.AddFingerprint);
            }
            else if (currentType == "proximity")
            {
                currentTitle = Language.StringByID(R.MyInternationalizationString.AddIcCard);
            }
            this.TopFrameLayout(this, currentTitle);
            EventHandler<MouseEventArgs> eHandlerBack = (sender, e) =>
            {
                this.RemoveFromParent();
            };
            this.btnBack.MouseUpEventHandler += eHandlerBack;
            this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
            this.MidFrameLayout(this);
            MidFrameLayoutContent();
        }
        /// <summary>
        /// 重写移除方法
        /// </summary>
        public override void RemoveFromParent()
        {
            if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
            {
                doorLock.Gateway.GwResDataAction -= action;
            }
            base.RemoveFromParent();
        }
        /// <summary>
        /// 中部布局
        /// </summary>
        public void MidFrameLayoutContent()
        {
            var topMidFrameLayout = new FrameLayout
            {
                X = Application.GetRealWidth(104),
                Y = Application.GetRealHeight(112),
                Height = Application.GetRealHeight(873),
                Width = Application.GetRealWidth(876),
            };
            this.midFrameLayout.AddChidren(topMidFrameLayout);
            var btnPicTip1 = new Button
            {
                X = Application.GetRealWidth(446),
                Y = Application.GetRealHeight(330),
                Height = Application.GetRealHeight(76 / 2),
                Width = Application.GetRealWidth(407),
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                TextSize = 10,
                TextAlignment = TextAlignment.CenterLeft,
            };
            topMidFrameLayout.AddChidren(btnPicTip1);
            var btnPicTip2 = new Button
            {
                X = Application.GetRealWidth(446),
                Y = btnPicTip1.Bottom,
                Height = Application.GetRealHeight(76 / 2),
                Width = Application.GetRealWidth(207),
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                TextSize = 10,
                TextAlignment = TextAlignment.CenterLeft,
            };
            topMidFrameLayout.AddChidren(btnPicTip2);
            var btnPicTip3 = new Button
            {
                X = Application.GetRealWidth(294),
                Y = Application.GetRealHeight(1089),
                Height = Application.GetRealHeight(100 / 2),
                Width = Application.GetRealWidth(488),
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                Gravity = Gravity.CenterHorizontal,
                TextSize = 14,
            };
            this.midFrameLayout.AddChidren(btnPicTip3);
            var btnPicTip4 = new Button
            {
                X = Application.GetRealWidth(397),
                Y = btnPicTip3.Y + Application.GetRealHeight(50),
                Width = Application.GetRealWidth(288),
                Height = Application.GetRealHeight(100 / 2),
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray2,
                Gravity = Gravity.CenterHorizontal,
                TextSize = 14,
            };
            this.midFrameLayout.AddChidren(btnPicTip4);
            var btnPicTip5 = new Button
            {
                X = Application.GetRealWidth(202),
                Y = Application.GetRealHeight(1388),
                Height = Application.GetRealHeight(49),
                Width = Application.GetRealWidth(685),
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                Gravity = Gravity.CenterHorizontal,
                TextSize = 12,
            };
            this.midFrameLayout.AddChidren(btnPicTip5);
            var nextBtn = new Button
            {
                X = Application.GetRealWidth(86),
                Y = Application.GetRealHeight(1472),
                Height = Application.GetRealHeight(127),
                Width = Application.GetRealWidth(907),
                Text = Language.StringByID(R.MyInternationalizationString.NextStepXm),
                TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                Gravity = Gravity.CenterHorizontal,
                Radius = (uint)Application.GetRealHeight(127 / 2),
                TextSize = 16,
                IsBold = true,
                Enable = false,
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect,
            };
            this.midFrameLayout.AddChidren(nextBtn);
            if (currentType == "password")
            {
                topMidFrameLayout.BackgroundImagePath = "DoorLock/AddPasswordTicPic.png";
                btnPicTip1.Width = Application.GetRealWidth(307);
                btnPicTip1.X = Application.GetRealWidth(500);
                btnPicTip1.Y = Application.GetRealHeight(350);
                btnPicTip2.X = Application.GetRealWidth(543);
                btnPicTip2.Y = btnPicTip1.Bottom + Application.GetRealHeight(10);
                btnPicTip2.Width = Application.GetRealWidth(207);
                btnPicTip1.Text = Language.StringByID(R.MyInternationalizationString.EntryPasswordTip1);
                btnPicTip2.Text = Language.StringByID(R.MyInternationalizationString.EntryPassword);
                btnPicTip3.Text = Language.StringByID(R.MyInternationalizationString.EntryPasswordTip2);
                btnPicTip4.Text = btnPicTip2.Text;
                btnPicTip5.Text = Language.StringByID(R.MyInternationalizationString.EntryTip);
            }
            else if (currentType == "fingerprint")
            {
                topMidFrameLayout.BackgroundImagePath = "DoorLock/AddFingerprintTipPic.png";
                btnPicTip1.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprintTip1);
                btnPicTip2.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprint);
                btnPicTip3.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprintTip2);
                btnPicTip4.Text = btnPicTip2.Text;
                btnPicTip1.X = Application.GetRealWidth(486);
                btnPicTip1.Y = Application.GetRealHeight(320);
                btnPicTip2.X = Application.GetRealWidth(543);
                btnPicTip2.Width = Application.GetRealWidth(207);
                btnPicTip1.X = Application.GetRealWidth(450);
                btnPicTip5.Text = Language.StringByID(R.MyInternationalizationString.EntryTip);
            }
            else if (currentType == "proximity")
            {
                topMidFrameLayout.BackgroundImagePath = "DoorLock/AddIcCardTipPic.png";
                btnPicTip3.Width = Application.GetRealWidth(495);
                btnPicTip1.X = Application.GetRealWidth(440);
                btnPicTip1.Y = Application.GetRealHeight(313);
                btnPicTip2.X = Application.GetRealWidth(538);
                btnPicTip2.Width = Application.GetRealWidth(207);
                btnPicTip1.Text = Language.StringByID(R.MyInternationalizationString.EntryProximityTip1);
                btnPicTip2.Text = Language.StringByID(R.MyInternationalizationString.EntryProximityCard);
                btnPicTip3.Text = Language.StringByID(R.MyInternationalizationString.EntryProximityTip2);
                btnPicTip4.Text = btnPicTip2.Text;
                btnPicTip5.Text = Language.StringByID(R.MyInternationalizationString.EntryTip);
            }
            action = (topic, data) =>
            {
                var gatewayID = topic.Split('/')[0];
                var jObjectdata = JObject.Parse(data);
                if (jObjectdata == null)
                {
                    return;
                }
                if (topic == $"{gatewayID}/DoorLock/DoorLockOperatingEventNotificationCommand")
                {
                    var OperatingEventNotificationDatad = Newtonsoft.Json.JsonConvert.DeserializeObject<ZigBee.Device.DoorLock.DoorLockOperatingEventNotificationCommand>(jObjectdata["Data"].ToString());
                    if (OperatingEventNotificationDatad != null)
                    {
                        doorLock.doorLockOperatingEventNotificationCommand = OperatingEventNotificationDatad;
                    }
                }
                if (topic == $"{gatewayID}/DoorLock/DoorLockProgrammingEventNotificationCommand")
                {
                    var ProgrammingEventNotificationData = Newtonsoft.Json.JsonConvert.DeserializeObject<ZigBee.Device.DoorLock.DoorLockProgrammingEventNotificationCommand>(jObjectdata["Data"].ToString());
                    if (ProgrammingEventNotificationData != null)
                    {
                        int curMethod = -1;
                        if (currentType == "password")
                        {
                            curMethod = 0;
                        }
                        else if (currentType == "fingerprint")
                        {
                            curMethod = 15;
                        }
                        else if (currentType == "proximity")
                        {
                            curMethod = 3;
                        }
                        else
                        {
                            return;
                        }
                        if (ProgrammingEventNotificationData.ProgramEventSoure == curMethod)
                        {
                            doorLock.doorLockProgrammingEventNotificationCommand = ProgrammingEventNotificationData;
                            var localDoorLockObj = new ZigBee.Device.DoorLock.LocaDoorLockObj() { };
                            localDoorLockObj.UserID = ProgrammingEventNotificationData.UserID;
                            localDoorLockObj.UnlockType = ProgrammingEventNotificationData.ProgramEventSoure;
                            localDoorLockObj.EntryTime = System.DateTime.Now;
                            //先暂时加入,等云端添加和获取真正成功后才真的加入
                            if (!doorLock.localDoorLockUserList.ContainsKey(localDoorLockObj.UserID))
                            {
                                doorLock.localDoorLockUserList.Add(ProgrammingEventNotificationData.UserID, localDoorLockObj);
                            }
                            Application.RunOnMainThread(() =>
                            {
                                nextBtn.Enable = true;
                                nextBtn.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                            });
                        }
                    }
                }
            };
            if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null)
            {
                doorLock.Gateway.GwResDataAction += action;
            }
            nextBtn.MouseDownEventHandler += (sende, e) =>
            {
                this.RemoveFromParent();
                var entryStatusPage = new Shared.Phone.UserCenter.DoorLock.EntryStatusPage(doorLock, curAccountObj, currentType);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(entryStatusPage);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                entryStatusPage.Show();
            };
        }
    }
}