From d6fb0646531172f23648441c224cdcccd721b894 Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期一, 14 十二月 2020 09:59:01 +0800 Subject: [PATCH] 请合并代码,完成晾衣架最终功能。 --- ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs | 946 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 946 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs new file mode 100644 index 0000000..41565af --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/DoorLock/DoorLockCommonLayout.cs @@ -0,0 +1,946 @@ +锘縰sing System; +using Newtonsoft.Json.Linq; +using Shared.Common; +using ZigBee.Device; + +namespace Shared.Phone.UserCenter.DoorLock +{ + public class DoorLockCommonLayout : EditorCommonForm + { + /// <summary> + /// 鏋勯�犲嚱鏁� + /// </summary> + public DoorLockCommonLayout() + { + } + #region 鍙橀噺鐢虫槑 + public new FrameLayout topFrameLayout = new FrameLayout { Height = Application.GetRealHeight(184), BackgroundColor = ZigbeeColor.Current.XMTopFrameLayout }; + public FrameLayout midFrameLayout = new FrameLayout { Height = Application.GetRealHeight(1925 - 184), BackgroundColor = ZigbeeColor.Current.XMMidFrameLayout }; + /// <summary> + /// 閫変腑鐨勫紑閿佹柟寮忓洖璋� + /// </summary> + public Action<string> ChooseUnlockMethodAction = null; + /// <summary> + /// 閫変腑鐨勫紑閿佹柟寮忓洖璋� + /// </summary> + public Action<int> UndateUnlockMethodAction = null; + #region 搴曢儴鏈夊渾瑙掑竷灞� + /// 鑳屾櫙闃村奖鐣岄潰 + /// </summary> + public FrameLayout shadowRadiusFrameLayout = new FrameLayout { BackgroundColor = 0x0f000000 }; + /// <summary> + /// 璁剧疆鍦嗚鐨勭晫闈� + /// </summary> + public FrameLayout bottomRadiusFrameLayout = new FrameLayout() + { + Height = Application.GetRealHeight(806), + Y = Application.GetRealHeight(930), + BackgroundColor = ZigbeeColor.Current.XMWhite, + }; + /// <summary> + /// 搴曢儴鍦嗚涓殑鍙栨秷鎸夐挳 + /// </summary> + public Button btnCancel = new Button + { + X = Application.GetRealWidth(81), + Y = Application.GetRealHeight(40), + Height = Application.GetRealHeight(58), + Width = Application.GetRealWidth(101), + Text = Language.StringByID(R.MyInternationalizationString.Cancel), + TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + TextSize = 14, + }; + /// <summary> + /// 搴曢儴鍦嗚涓殑鏍囬鏍� + /// </summary> + public Button btnBottomTitle = new Button + { + X = Application.GetRealWidth(446 - 50), + Y = Application.GetRealHeight(35), + Height = Application.GetRealHeight(63), + Width = Application.GetRealWidth(284), + Text = Language.StringByID(R.MyInternationalizationString.MatchPerson), + TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, + TextSize = 16, + }; + /// <summary> + /// 搴曢儴鍦嗚涓殑纭鎸夐挳 + /// </summary> + public Button btnFinish = 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.XMOrange, + TextSize = 14, + }; + /// <summary> + /// 搴曢儴鍦嗚涓殑鏍囬鏍忎笅鐨勭嚎鏉� + /// </summary> + public Button line = new Button() + { + Y = Application.GetRealHeight(138), + Height = 1, + BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, + }; + + #endregion + + /// <summary> + /// 鏍囬鏍忓竷灞� + /// </summary> + public FrameLayout titleFrameLayout = new FrameLayout + { + Y = Application.GetRealHeight(92), + X = Application.GetRealWidth(58 * 2), + Width = Application.GetRealWidth(1080 - 116), + Height = Application.GetRealHeight(69), + }; + + /// <summary> + /// 鏍囬杩斿洖甯冨眬 + /// </summary> + public FrameLayout btnBackFrameLayout = new FrameLayout + { + Width = Application.GetRealWidth(58 * 2), + }; + + /// <summary> + /// 鏍囬杩斿洖鎸夐敭 + /// </summary> + public Button btnBack = new Button + { + Height = Application.GetRealHeight(51), + Width = Application.GetRealWidth(30), + X = Application.GetRealWidth(58), + Y = Application.GetRealHeight(98), + UnSelectedImagePath = "DoorLock/Left.png", + }; + + /// <summary> + /// 鏍囬涓嬬嚎 + /// </summary> + public Button btnTitleLine = new Button + { + Y = Application.GetRealHeight(181), + Height = 1, + BackgroundColor = Shared.Common.ZigbeeColor.Current.XMTitleLine, + }; + + /// <summary> + /// 寮圭獥鍙栨秷鎸夐敭 + /// </summary> + public Button dialogBtnCancel = new Button + { + Width = Application.GetRealWidth(397), + Height = Application.GetRealHeight(127), + Y = Application.GetRealHeight(380), + TextID = R.MyInternationalizationString.Cancel, + TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + BackgroundColor = Shared.Common.ZigbeeColor.Current.XMMidFrameLayout, + }; + #endregion + + /// <summary> + /// 闂ㄩ攣椤堕儴甯冨眬 + /// </summary> + /// <param name="frameLayout"></param> + public void TopFrameLayout(FrameLayout frameLayout, string titleText) + { + this.AddChidren(topFrameLayout); + topFrameLayout.AddChidren(btnBackFrameLayout); + topFrameLayout.AddChidren(titleFrameLayout); + topFrameLayout.AddChidren(btnTitleLine); + + var title = new Button() + { + TextAlignment = TextAlignment.CenterLeft, + Text = titleText, + TextColor = Shared.Common.ZigbeeColor.Current.XMTopTitleText, + Width = Application.GetRealWidth(1080 - 161), + Height = Application.GetRealWidth(69), + TextSize = 17, + IsBold = true, + X = Application.GetRealWidth(161 - 116), + }; + titleFrameLayout.AddChidren(title); + btnBackFrameLayout.AddChidren(btnBack); + } + /// <summary> + /// 闂ㄩ攣涓儴甯冨眬 + /// </summary> + /// <param name="frameLayout"></param> + public void MidFrameLayout(FrameLayout frameLayout) + { + midFrameLayout.Y = topFrameLayout.Bottom; + this.AddChidren(midFrameLayout); + } + + /// <summary> + /// 闂ㄩ攣搴曢儴甯冨眬 + /// </summary> + /// <param name="frameLayout"></param> + public void BottomFrameLayout(FrameLayout frameLayout) + { + var bottomFrameLayout1 = new FrameLayout() + { + Height = Application.GetRealHeight(806 - 50), + Y = Application.GetRealHeight(930 + 48), + BackgroundColor = ZigbeeColor.Current.XMWhite, + }; + this.midFrameLayout.AddChidren(bottomFrameLayout1); + } + + /// <summary> + /// 闂ㄩ攣搴曢儴甯﹀渾瑙掑竷灞� + /// </summary> + /// <param name="frameLayout"></param> + public void BottomRadiusFrameLayout(FrameLayout frameLayout) + { + this.shadowRadiusFrameLayout.AddChidren(this.bottomRadiusFrameLayout); + this.bottomRadiusFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); + this.bottomRadiusFrameLayout.AddChidren(btnCancel); + this.bottomRadiusFrameLayout.AddChidren(btnBottomTitle); + this.bottomRadiusFrameLayout.AddChidren(btnFinish); + this.bottomRadiusFrameLayout.AddChidren(line); + } + + /// <summary> + /// 杩滅▼鎺у埗鏉冮檺澶勭悊 + /// </summary> + /// <param name="btnNext"></param> + public void RemotePasswordDialog(ZigBee.Device.DoorLock doorLock, Button btnNext = null) + { + var dialog = new Dialog { }; + var doorDialog = new Shared.Phone.UserCenter.DoorLock.DoorlockDialog(dialog, Language.StringByID(R.MyInternationalizationString.BindDoorLock)); + doorDialog.Show(); + doorDialog.dialogMidFraFrameLayout.Width = Application.GetRealWidth(677); + doorDialog.dialogMidFraFrameLayout.Height = Application.GetRealHeight(69); + doorDialog.dialogMidFraFrameLayout.X = Application.GetRealWidth(58); + doorDialog.dialogMidFraFrameLayout.Y = Application.GetRealHeight(213); + doorDialog.dialogMidFraFrameLayout.BackgroundColor = BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBorder; + + var editInputPasswordFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(677) - 2, + Height = Application.GetRealHeight(69) - 2, + X = 1, + Y = 1, + BackgroundColor = Shared.Common.ZigbeeColor.Current.XMWhite, + }; + doorDialog.dialogMidFraFrameLayout.AddChidren(editInputPasswordFrameLayout); + + var editInputPassword = new EditText() + { + X = Application.GetRealHeight(25), + TextSize = 13, + PlaceholderTextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + PlaceholderText = Language.StringByID(R.MyInternationalizationString.InputUnlockPasswrd), + TextColor = Shared.Common.ZigbeeColor.Current.XMBlack, + TextAlignment = TextAlignment.BottomLeft, + IsNumberKeyboardType = true, + }; + editInputPasswordFrameLayout.AddChidren(editInputPassword); + + doorDialog.dialogBtnCancel.MouseUpEventHandler += (sender1, e1) => + { + if (btnNext != null) + { + btnNext.IsSelected = false; + } + dialog.Close(); + }; + DateTime oldTime = DateTime.MaxValue; + doorDialog.dialogBtnConfirm.MouseUpEventHandler += async (sender1, e1) => + { + Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); + if (DateTime.Now < ZigBee.Device.DoorLock.minValue) + { + CommonPage.Loading.Hide(); + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.NoFiftySeconds)); + return; + } + + if (DateTime.Now >= oldTime && ZigBee.Device.DoorLock.RemoteUnlockCount == 0) + { + ZigBee.Device.DoorLock.RemoteUnlockCount = 5; + oldTime = DateTime.MaxValue; + } + + if (ZigBee.Device.DoorLock.RemoteUnlockCount <= 0) + { + ZigBee.Device.DoorLock.minValue = DateTime.Now.AddSeconds(+15); + oldTime = ZigBee.Device.DoorLock.minValue; + CommonPage.Loading.Hide(); + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AfterFiftySeconds)); + return; + } + + if (editInputPassword.Text.Length != 6) + { + ZigBee.Device.DoorLock.RemoteUnlockCount--; + string tipText = Language.StringByID(R.MyInternationalizationString.PasswordError) + "," + Language.StringByID(R.MyInternationalizationString.Surplus) + ZigBee.Device.DoorLock.RemoteUnlockCount.ToString() + Language.StringByID(R.MyInternationalizationString.Opportunity); + CommonPage.Loading.Hide(); + this.ShowMassage(ShowMsgType.Tip, tipText); + return; + } + + var verifyResult = await doorLock.VerifyPasswordAsync(editInputPassword.Text); + if (verifyResult != null) + { + if (verifyResult.result == 0) + { + System.Threading.Thread.Sleep(500); + doorLock.RemoteUnlockPassword = editInputPassword.Text; + ZigBee.Device.DoorLock.minValue = DateTime.MinValue; + ZigBee.Device.DoorLock.failedCount = 3; + ZigBee.Device.DoorLock.RemoteUnlockCount = 5; + oldTime = DateTime.MaxValue; + CommonPage.Loading.Hide(); + dialog.Close(); + if (btnNext != null) + { + btnNext.IsSelected = true; + } + if (!UserCenterResourse.AccountOption.DoorUnLockByRemote) + { + string msg = Language.StringByID(R.MyInternationalizationString.RemoteUnlockBindSucessTip).Replace("{0}", "\r\n"); + var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.GoSetting)); + alert.Show(); + //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁� + alert.ConfirmClickEvent += () => + { + var form = new UserCenter.UserMain.SecondAuthenticationForm(); + form.AddForm(); + }; + } + doorLock.ReSave(); + } + else + { + ZigBee.Device.DoorLock.RemoteUnlockCount--; + string tipText = Language.StringByID(R.MyInternationalizationString.OperrateFailed) + "," + Language.StringByID(R.MyInternationalizationString.Surplus) + ZigBee.Device.DoorLock.RemoteUnlockCount.ToString() + Language.StringByID(R.MyInternationalizationString.Opportunity); + CommonPage.Loading.Hide(); + this.ShowMassage(ShowMsgType.Tip, tipText); + return; + } + } + else + { + CommonPage.Loading.Hide(); + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.GwResponseOvertime)); + return; + } + }; + doorDialog.flMain.MouseUpEventHandler += (sender11, e11) => + { + if (btnNext != null) + { + btnNext.IsSelected = false; + } + dialog.Close(); + }; + } + + /// <summary> + /// 瀹夊叏楠岃瘉 + /// </summary> + /// <param name="doorLock">闂ㄩ攣璁惧</param> + /// <param name="action">浜屾楠岃瘉鐨勭粨鏋滄垚鍔熷悗鐨勯�氱煡</param> + public static void SecurityRequest(ZigBee.Device.DoorLock doorLock) + { + string msg = Language.StringByID(R.MyInternationalizationString.SetSecondarySecurityVerificationMode).Replace("{0}", "\r\n"); + var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.GoSetting)); + alert.Show(); + //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁� + alert.ConfirmClickEvent += () => + { + var form = new UserCenter.UserMain.SecondAuthenticationForm(); + form.AddForm(); + }; + } + + /// <summary> + /// 缁戝畾杩滅▼寮�閿佹潈闄愮獥鍙� + /// </summary> + /// <param name="doorLock"></param> + /// <param name="btnDoorLockTitle"></param> + public void BindRemoteUnlockDoorlock(Room room, CommonDevice devDoorLock, Button btnDoorLockTitle = null) + { + ZigBee.Device.DoorLock doorLock = devDoorLock as ZigBee.Device.DoorLock; + string msgRemoteUnlockRequest = Language.StringByID(R.MyInternationalizationString.BindRemoteUnlockDoorlock); + var alertRemoteUnlockRequest = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msgRemoteUnlockRequest, Language.StringByID(R.MyInternationalizationString.GoSetting)); + alertRemoteUnlockRequest.Show(); + //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁� + alertRemoteUnlockRequest.ConfirmClickEvent += () => + { + var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(room, devDoorLock); + Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + functionSetting.Show(); + functionSetting.devicNameAction += (deviceRename) => + { + if (!string.IsNullOrEmpty(deviceRename)) + { + if (btnDoorLockTitle != null) + { + btnDoorLockTitle.Text = deviceRename; + } + } + }; + }; + } + + /// <summary> + /// 鍘讳釜浜轰腑蹇冿紝寮�鍚郴缁熷瘑鐮佹敮鎸佸紑閿佹潈闄� + /// </summary> + public void SystemSecondAuthentication() + { + string msgDoorUnLockByRemote = Language.StringByID(R.MyInternationalizationString.GoPersonalCenter).Replace("{0}", "\r\n"); + var alertDoorUnLockByRemote = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msgDoorUnLockByRemote, Language.StringByID(R.MyInternationalizationString.GoSetting)); + alertDoorUnLockByRemote.Show(); + //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁� + alertDoorUnLockByRemote.ConfirmClickEvent += () => + { + var form = new UserCenter.UserMain.SecondAuthenticationForm(); + form.AddForm(); + }; + } + + /// <summary> + /// 杩滅▼寮�閿佽姹� + /// </summary> + /// <param name="doorLock">闂ㄩ攣璁惧</param> + /// <param name="action">浜屾楠岃瘉鐨勭粨鏋滄垚鍔熷悗鐨勯�氱煡</param> + /// <param name="progressButton">闂ㄩ攣寮�鎴栧叧鏃惰繘搴︽樉绀�</param> + /// <param name="btnDoorLockPic">闂ㄩ攣鍥剧墖寮�/鍏虫樉绀�</param> + public void RemoteUnlockRequest(Room room, CommonDevice devDoorLock, Action action, Button progressButton = null, Button btnDoorLockPic = null, Button btnStatus = null, Button btnDoorLockTitle = null) + { + ZigBee.Device.DoorLock doorLock = devDoorLock as ZigBee.Device.DoorLock; + if (string.IsNullOrEmpty(doorLock.RemoteUnlockPassword)) + { + BindRemoteUnlockDoorlock(room, devDoorLock, btnDoorLockTitle); + return; + } + + if (!UserCenterResourse.AccountOption.DoorUnLockByRemote) + { + SystemSecondAuthentication(); + return; + } + + string msg = Language.StringByID(R.MyInternationalizationString.SureToOpenDoorLock); + var alert = new ShowDoorLockMsgControl(ShowDoorLockMsgControl.DoorLockMsgType.Confirm, msg, Language.StringByID(R.MyInternationalizationString.DoorlockConfirm)); + alert.Show(); + //浣跨敤纭鍨嬪脊妗嗘椂,鐨勫洖璋冨嚱鏁� + alert.ConfirmClickEvent += () => + { + action = () => + { + System.Threading.Tasks.Task.Run(async () => + { + Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); }); + try + { + Application.RunOnMainThread(() => + { + if (progressButton != null) + { + progressButton.Y = Application.GetRealHeight(10); + } + if (btnDoorLockPic != null) + { + btnDoorLockPic.IsSelected = true; + } + if (btnStatus != null) + { + btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Opening); + + } + }); + //杩滅▼寮�閿� + var remoteControlResult = await doorLock.RemoteControlAsync(doorLock.RemoteUnlockPassword); + + //杩滅▼寮�閿佹垚鍔燂紝杩斿洖榛樿鍝嶅簲 + if (remoteControlResult != null && remoteControlResult.responseData != null) + { + if (remoteControlResult.responseData.status == 0) + { + ZigBee.Device.DoorLock.failedCount = 3; + Application.RunOnMainThread(() => + { + if (progressButton != null) + { + progressButton.Y = Application.GetRealHeight(10); + } + if (btnDoorLockPic != null) + { + btnDoorLockPic.IsSelected = true; + } + if (btnStatus != null) + { + btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.DoorLockOpen); + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.UnlockSuccess)); + } + }); + //寮�閿佹垚鍔燂紝榛樿5绉掑悗闂ㄩ攣鑷姩鍏抽攣锛屾牴鎹笉鍚岀殑闂ㄩ攣鍙兘鏃堕棿涓嶅悓锛岃繖閲屼互鈥淗06C鈥濋棬閿佺粰鐨勬椂闂� + System.Threading.Thread.Sleep(5000); + } + else + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.UnlockFailed)); + } + } + //鐢ㄤ簬杩滅▼寮�閿佺殑闂ㄩ攣涓殑瀵嗙爜琚垹闄ゆ儏鍐� + else if (remoteControlResult != null && remoteControlResult.IsPawDispear == true) + { + //杩滅▼寮�閿佹湁3娆¤繛缁搷浣滃け璐ョ殑鏈轰細 + ZigBee.Device.DoorLock.failedCount--; + if (ZigBee.Device.DoorLock.failedCount != 0) + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.UnlockFailed)); + } + else + { + //3娆℃搷浣滃け璐ヨ繙绋嬪紑閿佸け璐ュ悗锛岄噸鍐欒缃繙绋嬪紑閿佸瘑鐮� + Application.RunOnMainThread(() => + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.DoorlockPasswordDispear)); + doorLock.RemoteUnlockPassword = ""; + var functionSetting = new Shared.Phone.UserCenter.DoorLock.FunctionSetting(room, devDoorLock); + Shared.Phone.UserView.HomePage.Instance.AddChidren(functionSetting); + Shared.Phone.UserView.HomePage.Instance.PageIndex += 1; + functionSetting.Show(); + functionSetting.devicNameAction += (deviceRename) => + { + if (!string.IsNullOrEmpty(deviceRename)) + { + if (btnDoorLockTitle != null) + { + btnDoorLockTitle.Text = deviceRename; + } + } + }; + }); + } + } + //杩滅▼寮�閿佸け璐ョ殑鎯呭喌 + else + { + this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.GwResponseOvertime)); + } + } + catch { } + finally + { + Application.RunOnMainThread(() => + { + if (progressButton != null) + { + progressButton.Y = Application.GetRealHeight(347); + } + if (btnDoorLockPic != null) + { + btnDoorLockPic.IsSelected = false; + } + if (btnStatus != null) + { + btnStatus.Text = Language.StringByID(R.MyInternationalizationString.Current) + Language.StringByID(R.MyInternationalizationString.CLose); + } + CommonPage.Loading.Hide(); + }); + } + }); + }; + + HdlCheckLogic.Current.CheckSecondarySecurity(action); + }; + } + // 鑾峰彇鍒板埌鍚嶇О鏇存敼鍥炶皟閫氱煡 + public Action<string> devicNameSecAction; + + + /// <summary> + /// 褰撳墠閫変腑鐨勫紑閿佹柟寮� + /// </summary> + /// <param name="btnAllMethod"></param> + /// <param name="btnMethodText"></param> + /// <param name="oldbutton"></param> + /// <param name="oldbuttonText"></param> + public void CurrentSelectUnlockMethod(Button btnAllMethod, Button btnMethodText, Button oldbutton, Button oldbuttonText) + { + btnAllMethod.IsSelected = true; + btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack; + btnMethodText.IsBold = true; + oldbutton = btnAllMethod; + oldbuttonText = btnMethodText; + } + + /// <summary> + /// 鏄剧ず鎵�鏈夊紑閿佹柟寮忕殑鏁版嵁 + /// </summary> + /// <param name="curIndex"></param> + /// <param name="btnAllMethod"></param> + /// <param name="btnMethodText"></param> + public void DisplayAllUnlockMethod(ZigBee.Device.DoorLock doorLock, int curIndex, Button btnAllMethod, Button btnMethodText) + { + var listDevice = Common.LocalDevice.Current.GetDevicesByMac(doorLock.DeviceAddr); + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice); + if (curIndex == 0) + { + btnAllMethod.UnSelectedImagePath = "DoorLock/AllMethod.png"; + btnAllMethod.SelectedImagePath = "DoorLock/AllMethodOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AllMethod); + } + else if (curIndex == 1) + { + btnAllMethod.UnSelectedImagePath = "DoorLock/Password.png"; + btnAllMethod.SelectedImagePath = "DoorLock/PasswordOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.PasswordUnlock); + } + else if (curIndex == 2) + { + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_AT1F) + { + btnAllMethod.UnSelectedImagePath = "DoorLock/Fingerprint.png"; + btnAllMethod.SelectedImagePath = "DoorLock/FingerprintOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.CalmFingerprintUnlock); + } + else if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_HAT1B) + { + btnAllMethod.UnSelectedImagePath = "DoorLock/Fingerprint.png"; + btnAllMethod.SelectedImagePath = "DoorLock/FingerprintOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.CalmFingerprintUnlock); + } + else + { + btnAllMethod.UnSelectedImagePath = "DoorLock/Fingerprint.png"; + btnAllMethod.SelectedImagePath = "DoorLock/FingerprintOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.FingerprintUnlock); + } + } + else if (curIndex == 3) + { + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_AT1F) + { + btnAllMethod.UnSelectedImagePath = "DoorLock/faceId.png"; + btnAllMethod.SelectedImagePath = "DoorLock/faceIdOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.FaceIDUnlock); + } + else if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_AT1TF) + { + btnAllMethod.UnSelectedImagePath = "DoorLock/proximityCard.png"; + btnAllMethod.SelectedImagePath = "DoorLock/proximityCardOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock); + } + else + { + btnAllMethod.UnSelectedImagePath = "DoorLock/proximityCard.png"; + btnAllMethod.SelectedImagePath = "DoorLock/proximityCardOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock); + } + } + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_AT1TF) + { + if (curIndex == 4) + { + btnAllMethod.UnSelectedImagePath = "DoorLock/faceId.png"; + btnAllMethod.SelectedImagePath = "DoorLock/faceIdOn.png"; + btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.FaceIDUnlock); + } + } + + + + //switch (curIndex) + //{ + // case 0: + // btnAllMethod.UnSelectedImagePath = "DoorLock/AllMethod.png"; + // btnAllMethod.SelectedImagePath = "DoorLock/AllMethodOn.png"; + // btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.AllMethod); + // break; + // case 1: + // btnAllMethod.UnSelectedImagePath = "DoorLock/Password.png"; + // btnAllMethod.SelectedImagePath = "DoorLock/PasswordOn.png"; + // btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.PasswordUnlock); + // break; + // case 2: + // btnAllMethod.UnSelectedImagePath = "DoorLock/Fingerprint.png"; + // btnAllMethod.SelectedImagePath = "DoorLock/FingerprintOn.png"; + // btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.FingerprintUnlock); + // break; + // case 3: + // btnAllMethod.UnSelectedImagePath = "DoorLock/proximityCard.png"; + // btnAllMethod.SelectedImagePath = "DoorLock/proximityCardOn.png"; + // btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock); + // break; + // case 4: + // btnAllMethod.UnSelectedImagePath = "DoorLock/faceId.png"; + // btnAllMethod.SelectedImagePath = "DoorLock/faceIdOn.png"; + // btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.FaceIDUnlock); + // break; + // case 5: + // btnAllMethod.UnSelectedImagePath = "DoorLock/Fingerprint.png"; + // btnAllMethod.SelectedImagePath = "DoorLock/FingerprintOn.png"; + // btnMethodText.Text = Language.StringByID(R.MyInternationalizationString.CalmFingerprintUnlock); + // break; + //} + } + + /// <summary> + /// 渚ц竟瀵艰埅鏍� + /// </summary> + public void SideslipFramelayout(ZigBee.Device.DoorLock doorLock) + { + #region sidelipFrameLayout UI + var dialog = new Dialog + { + }; + dialog.Show(); + + var flMain = new FrameLayout { BackgroundColor = 0x00000000 }; + dialog.AddChidren(flMain); + flMain.MouseUpEventHandler += (sender11, e11) => + { + dialog.Close(); + }; + + var sidelipFrameLayout = new FrameLayout() + { + Width = Application.GetRealWidth(449), + Y = Application.GetRealHeight(115 + 160), + X = Application.GetRealWidth(596), + BackgroundImagePath = "DoorLock/SideslipPic.png", + }; + flMain.AddChidren(sidelipFrameLayout); + + var sidelipVerticalScrolViewLayout = new VerticalScrolViewLayout() + { + Y = Application.GetRealHeight(28), + }; + sidelipFrameLayout.AddChidren(sidelipVerticalScrolViewLayout); + #endregion + + Button oldbutton = null; + Button oldbuttonText = null; + int count = 1 + GetSupportType(doorLock); + sidelipFrameLayout.Height = Application.GetRealHeight(150) * count + Application.GetRealHeight(6); + sidelipVerticalScrolViewLayout.Height = Application.GetRealHeight(150) * count + Application.GetRealHeight(6); + for (var i = 0; i < count; i++) + { + #region rowFrameLayout UI + var rowFrameLayout = new FrameLayout() + { + Height = Application.GetRealHeight(150), + X = Application.GetRealWidth(81), + }; + sidelipVerticalScrolViewLayout.AddChidren(rowFrameLayout); + + var btnAllMethod = new Button() + { + Width = Application.GetRealWidth(81), + Height = Application.GetRealHeight(81), + Y = Application.GetRealHeight(35), + }; + rowFrameLayout.AddChidren(btnAllMethod); + + var btnMethodText = new Button() + { + Width = Application.GetRealWidth(311), + Height = Application.GetRealHeight(58), + X = Application.GetRealWidth(92), + Y = Application.GetRealHeight(49), + TextColor = Shared.Common.ZigbeeColor.Current.XMGray3, + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft, + }; + rowFrameLayout.AddChidren(btnMethodText); + + var line2 = new Button() + { + Y = rowFrameLayout.Height - 1, + X = Application.GetRealWidth(81), + Width = Application.GetRealWidth(965), + Height = 1, + BackgroundColor = Shared.Common.ZigbeeColor.Current.XMRowLine, + }; + rowFrameLayout.AddChidren(line2); + if (i == count) + { + line2.Visible = false; + } + #endregion + + #region 鏁版嵁澶勭悊 + EventHandler<MouseEventArgs> hander = (sender, e) => + { + if (!btnAllMethod.IsSelected) + { + if (oldbutton != null) + { + oldbutton.IsSelected = false; + } + if (oldbuttonText != null) + { + oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3; + } + oldbutton = btnAllMethod; + oldbuttonText = btnMethodText; + + doorLock.ReSave(); + btnAllMethod.IsSelected = true; + oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack; + oldbuttonText.IsBold = true; + doorLock.currentUserDisplayMethod = btnMethodText.Text; + TypeRefresh(doorLock); + } + dialog.Close(); + }; + rowFrameLayout.MouseUpEventHandler += hander; + btnAllMethod.MouseUpEventHandler += hander; + btnMethodText.MouseUpEventHandler += hander; + + DisplayAllUnlockMethod(doorLock, i, btnAllMethod, btnMethodText); + + if (string.IsNullOrEmpty(doorLock.currentUserDisplayMethod) && i == 0) + { + CurrentSelectUnlockMethod(btnAllMethod, btnMethodText, oldbutton, oldbuttonText); + } + if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.AllMethod) && i == 0) + { + CurrentSelectUnlockMethod(btnAllMethod, btnMethodText, oldbutton, oldbuttonText); + } + if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock) && i == 1) + { + CurrentSelectUnlockMethod(btnAllMethod, btnMethodText, oldbutton, oldbuttonText); + } + if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock) && i == 2) + { + CurrentSelectUnlockMethod(btnAllMethod, btnMethodText, oldbutton, oldbuttonText); + } + if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock) && i == 3) + { + CurrentSelectUnlockMethod(btnAllMethod, btnMethodText, oldbutton, oldbuttonText); + } + if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FaceIDUnlock) && i == 4) + { + CurrentSelectUnlockMethod(btnAllMethod, btnMethodText, oldbutton, oldbuttonText); + } + if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.CalmFingerprintUnlock) && i == 5) + { + CurrentSelectUnlockMethod(btnAllMethod, btnMethodText, oldbutton, oldbuttonText); + } + #endregion + } + } + + /// <summary> + /// 褰撳墠闂ㄩ攣鏀寔鐨勫紑閿佺被鍨嬩釜鏁� + /// </summary> + /// <param name="doorLock"></param> + /// <returns></returns> + public int GetSupportType(ZigBee.Device.DoorLock doorLock) + { + int count = 0; + var listDevice = Common.LocalDevice.Current.GetDevicesByMac(doorLock.DeviceAddr); + var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(listDevice); + if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_AT1F) + { + //AT1F鏈夊瘑鐮侊紝鎰熷簲鍗★紝faceID + count = 3; + } + else if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_AT1T) + { + //AT1T鏈夊瘑鐮侊紝鎸囩汗锛屾劅搴斿崱 + count = 3; + } + else if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_AT1TF) + { + //AT1TF鏈夊瘑鐮侊紝鎸囩汗锛屾劅搴斿崱,faceID + count = 4; + } + else if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_HAT1B) + { + //HAT1B瀵嗙爜銆侀潤鑴夌汗銆佸埛鍗� + count = 3; + } + else if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.IntelligentLocks_HAT1T) + { + //HAT1T瀵嗙爜銆佹寚绾广�佸埛鍗� + count = 3; + } + else + { + //鍙湁瀵嗙爜锛屾寚绾癸紝鎰熷簲鍗� + count = 3; + } + return count; + } + + /// <summary> + /// 绫诲瀷鍖哄垎 + /// </summary> + public void TypeRefresh(ZigBee.Device.DoorLock doorLock) + { + if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.PasswordUnlock)) + { + UndateUnlockMethodAction?.Invoke(0); + } + else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.ProximithCardUnlock)) + { + UndateUnlockMethodAction?.Invoke(3); + } + else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.CalmFingerprintUnlock)) + { + UndateUnlockMethodAction?.Invoke(13); + } + else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FaceIDUnlock)) + { + UndateUnlockMethodAction?.Invoke(14); + } + else if (doorLock.currentUserDisplayMethod == Language.StringByID(R.MyInternationalizationString.FingerprintUnlock)) + { + UndateUnlockMethodAction?.Invoke(15); + } + else + { + UndateUnlockMethodAction?.Invoke(-1); + } + //姣忔璋冨畬娓呯┖ + UndateUnlockMethodAction = null; + } + + #region 鈻� 涓�鑸柟娉昣__________________________ + + /// <summary> + /// 鏄剧ず閿欒淇℃伅绐楀彛 + /// </summary> + /// <param name="msg"></param> + public void ShowErrorMsg(string msg) + { + Application.RunOnMainThread(() => + { + var contr = new ShowMsgControl(ShowMsgType.Error, msg); + contr.Show(); + }); + } + + /// <summary> + /// 鏄剧ずTip淇℃伅绐楀彛 + /// </summary> + /// <param name="msg"></param> + public void ShowTipMsg(string msg) + { + Application.RunOnMainThread(() => + { + var contr = new ShowMsgControl(ShowMsgType.Tip, msg); + contr.Show(); + CommonPage.Loading.Hide(); + }); + } + + #endregion + } +} -- Gitblit v1.8.0