New file |
| | |
| | | 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(); |
| | | }; |
| | | } |
| | | } |
| | | } |