using System; using System.Collections.Generic; using System.Text; using Newtonsoft.Json; using Shared.Common; using Shared.Phone.UserCenter.Device; using ZigBee.Device; namespace Shared.Phone.UserCenter.DoorLock { public class EntryStatusPage : DoorLockCommonLayout { /// /// 构造函数 /// /// /// /// public EntryStatusPage(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; /// /// 底部布局 /// FrameLayout bottomFrameLayout; #endregion /// /// UI显示 /// public void Show() { this.TopFrameLayout(this, Language.StringByID(R.MyInternationalizationString.AddNewUnlockMethod)); EventHandler eHandlerBack = (sender, e) => { RemoveFromParent(); }; this.btnBack.MouseUpEventHandler += eHandlerBack; this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack; this.MidFrameLayout(this); MidFrameLayoutContent(); } /// /// 中部布局 /// public void MidFrameLayoutContent() { var entryStatusPic = new Button { X = Application.GetRealWidth(297), Y = Application.GetRealHeight(268), Height = Application.GetRealHeight(363), Width = Application.GetRealWidth(452), UnSelectedImagePath = "DoorLock/EntrySuccessIcon.png", }; this.midFrameLayout.AddChidren(entryStatusPic); var btnPicTip = new Button { X = Application.GetRealWidth(372), Y = Application.GetRealHeight(634), Height = Application.GetRealHeight(81), TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, Gravity = Gravity.CenterHorizontal, TextSize = 20, IsBold = true, }; this.midFrameLayout.AddChidren(btnPicTip); if (currentType == "password") { btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryPasswordSuccess); } else if (currentType == "fingerprint") { btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryFingerprintSuccess); } else { btnPicTip.Text = Language.StringByID(R.MyInternationalizationString.EntryProximitySuccess); } BottomFrameLayoutContent(); } /// /// 底部布局 /// public void BottomFrameLayoutContent() { bottomFrameLayout = new FrameLayout() { Height = Application.GetRealHeight(737), Y = Application.GetRealHeight(999), BackgroundColor = ZigbeeColor.Current.XMWhite, }; this.midFrameLayout.AddChidren(bottomFrameLayout); var passwordRemarkFrameLayout = new FrameLayout() { Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(127), X = Application.GetRealWidth(58), Y = Application.GetRealHeight(81), }; bottomFrameLayout.AddChidren(passwordRemarkFrameLayout); var btnPasswordRemark = new Button() { Width = Application.GetRealWidth(222), Height = Application.GetRealHeight(58), Y = Application.GetRealHeight(35), TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, TextAlignment = TextAlignment.CenterLeft, TextSize = 14, }; passwordRemarkFrameLayout.AddChidren(btnPasswordRemark); var btnPasswordRemarkContent = new EditText() { Width = Application.GetRealWidth(965 - 222), Height = Application.GetRealHeight(58), X = Application.GetRealWidth(223), Y = Application.GetRealHeight(35), TextAlignment = TextAlignment.CenterLeft, TextSize = 14, PlaceholderTextColor = ZigbeeColor.Current.XMGray3, TextColor = ZigbeeColor.Current.XMBlack }; passwordRemarkFrameLayout.AddChidren(btnPasswordRemarkContent); var btnLine = new FrameLayout() { Width = Application.GetRealWidth(965), Height = 1, X = Application.GetRealWidth(58), Y = Application.GetRealHeight(81 + 127), BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, }; bottomFrameLayout.AddChidren(btnLine); var personRemarkRemarkFrameLayout = new FrameLayout() { Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(127), X = Application.GetRealWidth(58), Y = btnLine.Bottom + Application.GetRealHeight(2), }; bottomFrameLayout.AddChidren(personRemarkRemarkFrameLayout); var btnMatchPersonRemark = new Button() { Width = Application.GetRealWidth(222), Height = Application.GetRealHeight(58), Y = Application.GetRealHeight(35), Text = Language.StringByID(R.MyInternationalizationString.MatchPerson) + ":", TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, TextAlignment = TextAlignment.CenterLeft, TextSize = 14, }; personRemarkRemarkFrameLayout.AddChidren(btnMatchPersonRemark); var btnMatchPersonContent = new Button() { Width = Application.GetRealWidth(965 - 222), Height = Application.GetRealHeight(58), X = Application.GetRealWidth(223), Y = Application.GetRealHeight(35), TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, TextAlignment = TextAlignment.CenterLeft, TextSize = 14, }; personRemarkRemarkFrameLayout.AddChidren(btnMatchPersonContent); var btnLine1 = new FrameLayout() { Width = Application.GetRealWidth(965), Height = 1, X = Application.GetRealWidth(58), Y = Application.GetRealHeight(81 + 127 + 12 + 127), BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, }; bottomFrameLayout.AddChidren(btnLine1); var completeBtn = new Button { X = Application.GetRealWidth(86), Y = Application.GetRealHeight(472), Height = Application.GetRealHeight(127), Width = Application.GetRealWidth(907), Text = Language.StringByID(R.MyInternationalizationString.DoorLockComplete), TextColor = Shared.Common.ZigbeeColor.Current.XMWhite, Gravity = Gravity.CenterHorizontal, BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack, Radius = (uint)Application.GetRealHeight(127 / 2), TextSize = 16, IsBold = true, }; bottomFrameLayout.AddChidren(completeBtn); if (currentType == "password") { btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.PasswordRemark); btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.Password) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; } else if (currentType == "fingerprint") { btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.FingerprintRemark); btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.Fingerprint) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; } else { btnPasswordRemark.Text = Language.StringByID(R.MyInternationalizationString.ProximityRemark); btnPasswordRemarkContent.PlaceholderText = Language.StringByID(R.MyInternationalizationString.IcCard) + "ID" + doorLock.doorLockProgrammingEventNotificationCommand.UserID; } if (!string.IsNullOrEmpty(curAccountObj.UserName)) { btnMatchPersonContent.Text = curAccountObj.UserName; } else { btnMatchPersonContent.Text = curAccountObj.Account; } completeBtn.MouseDownEventHandler += async (sender, e) => { completeBtn.Enable = false; if (doorLock.doorLockProgrammingEventNotificationCommand == null) { return; } var addLockInfo = new ZigBee.Device.DoorLock.AddDoorLockData(); if (UserCenterResourse.UserInfo.AuthorityNo != 1) { addLockInfo.LoginAccessToken = UserCenterLogic.GetConnectMainToken(); addLockInfo.IsOtherAccountCtrl = true; } addLockInfo.CloudAccountId = curAccountObj.SubAccountDistributedMark; if (doorLock.DeviceAddr != null) { addLockInfo.DoorLockId = doorLock.DeviceAddr + "_" + doorLock.DeviceEpoint; } addLockInfo.OpenLockMode = doorLock.doorLockProgrammingEventNotificationCommand.ProgramEventSoure; addLockInfo.DoorLockLocalUserId = doorLock.doorLockProgrammingEventNotificationCommand.UserID.ToString(); addLockInfo.EntryTime = System.DateTime.Now; if (!string.IsNullOrEmpty(btnPasswordRemarkContent.Text)) { addLockInfo.UserIdRemarks = btnPasswordRemarkContent.Text; } else { addLockInfo.UserIdRemarks = btnPasswordRemarkContent.PlaceholderText; } try { Application.RunOnMainThread(() => { CommonPage.Loading.Start("Loading..."); }); var result = await ZigBee.Device.DoorLock.SendDoorLockToServer("DoorLock/AddDoorLock", addLockInfo); if (result != null) { if (result.StateCode == "Success") { if (doorLock.localDoorLockUserList.ContainsKey(doorLock.doorLockProgrammingEventNotificationCommand.UserID)) { //存门锁信息 var resultList = await Shared.Phone.UserCenter.DoorLock.DoorLockCommonInfo.GetCloudLocalDoorLocklist(doorLock, curAccountObj.SubAccountDistributedMark); if (resultList != null) { if (resultList.ContainsKey(doorLock.doorLockProgrammingEventNotificationCommand.UserID) == true) { var a = resultList[doorLock.doorLockProgrammingEventNotificationCommand.UserID]; if (a?.ConnectedAccount == curAccountObj.SubAccountDistributedMark) { completeBtn.Enable = true; this.RemoveFromParent(); for (int i = UserView.HomePage.Instance.ChildrenCount - 1; i >= 0; i--) { var form = UserView.HomePage.Instance.GetChildren(i); if (form is UnLockMethod) { doorLock.currentUserDisplayMethod = ""; ((UnLockMethod)form).RefreshList(); break; } else { form.RemoveFromParent(); } } } else { completeBtn.Enable = true; new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); } } } else { completeBtn.Enable = true; new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); } } } else { completeBtn.Enable = true; new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.AddFailed), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); } } else { completeBtn.Enable = true; new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.CloudServerResponseOvertime), Direction = AMPopTipDirection.Up, CloseTime = 1 }.Show(btnPasswordRemarkContent); } } catch { } finally { CommonPage.Loading.Hide(); } }; } } }