using System; using Newtonsoft.Json.Linq; using Shared.Common; using ZigBee.Device; namespace Shared.Phone.UserCenter.DoorLock { public class AddUnLockMethodTip : DoorLockCommonLayout { /// 构造函数 /// /// 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 变量申明 /// /// 当前门锁 /// ZigBee.Device.DoorLock doorLock; /// /// 当前账户 /// Shared.Phone.UserCenter.MemberInfoRes curAccountObj; /// /// 当前类型 /// string currentType = string.Empty; /// /// 接收通知 /// Action action; #endregion /// /// UI显示 /// 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 eHandlerBack = (sender, e) => { this.RemoveFromParent(); }; this.btnBack.MouseUpEventHandler += eHandlerBack; this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; this.MidFrameLayout(this); MidFrameLayoutContent(); } /// /// 重写移除方法 /// public override void RemoveFromParent() { if (doorLock.Gateway != null || doorLock.Gateway.GwResDataAction != null) { doorLock.Gateway.GwResDataAction -= action; } base.RemoveFromParent(); } /// /// 中部布局 /// 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(jObjectdata["Data"].ToString()); if (OperatingEventNotificationDatad != null) { doorLock.doorLockOperatingEventNotificationCommand = OperatingEventNotificationDatad; } } if (topic == $"{gatewayID}/DoorLock/DoorLockProgrammingEventNotificationCommand") { var ProgrammingEventNotificationData = Newtonsoft.Json.JsonConvert.DeserializeObject(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(); }; } } }