using System; using HDL_ON.UI.CSS; using Shared; using HDL_ON.DAL.Server; namespace HDL_ON.UI { /// /// 手势解锁 /// public class AppUnlockGesturePage : FrameLayout { /// /// /// FrameLayout bodyView; /// /// 错误提示按钮 /// Button btnTipMsg; string passwrod = ""; string oldPasswrod = ""; Action backAction; public AppUnlockGesturePage(string pw, Action action) { bodyView = this; bodyView.Tag = "unlockpage"; oldPasswrod = pw; backAction = action; } /// /// /// /// /// 操作方式: /// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置; /// 5:关闭指纹ID;6:关闭面容ID;7:解锁验证 /// public void LoadPage(string optionType) { bodyView.BackgroundColor = CSS_Color.BackgroundColor; //解锁验证无法后退,必须验证 if (optionType != "7") { if (oldPasswrod == "") new TopViewDiv(bodyView, Language.StringByID(StringId.SetGesturePassword)).LoadTopView(); else new TopViewDiv(bodyView, Language.StringByID(StringId.VerifyGesturePassword)).LoadTopView(); } Button btnGestureIcon = new Button() { Y = Application.GetRealHeight(96), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(64), Height = Application.GetRealWidth(64), //UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/GestureGrayIcon.png", }; bodyView.AddChidren(btnGestureIcon); Button btnTipTitle = new Button() { Y = Application.GetRealHeight(4) + btnGestureIcon.Bottom, TextAlignment = TextAlignment.Center, Height = Application.GetRealHeight(36), IsBold = true, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.EmphasisFontSize_Secondary, TextID = StringId.VerifyGesturePassword, }; bodyView.AddChidren(btnTipTitle); btnTipMsg = new Button() { Y = btnTipTitle.Bottom, TextAlignment = TextAlignment.Center, Height = Application.GetRealHeight(36), IsBold = true, TextColor = CSS_Color.TextualColor, SelectedTextColor = CSS_Color.WarningColor, TextSize = CSS_FontSize.TextFontSize, TextID = StringId.DrawUnlockPattern, }; bodyView.AddChidren(btnTipMsg); if (optionType == "1") { btnTipMsg.TextID = string.IsNullOrEmpty(oldPasswrod) ? StringId.DrawUnlockPattern : StringId.DrawUnlockPatternAgain; //设置手势密码 btnTipTitle.TextID = StringId.SetGesturePassword; }else if(optionType == "2") { //请输入原手势密码 btnTipTitle.TextID = StringId.PleaseDrawTheOriginalGesturePassword; } //if (optionType == "7") //{ // //请绘制解锁图案 // btnTipTitle.TextID = StringId.DrawUnlockPattern; //} GestureLockView mGestureLockView = new GestureLockView { Y = Application.GetRealHeight(260), Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(215), Height = Application.GetRealWidth(215), LockViewCorrectColor = CSS_Color.MainColor,//0xFF00FF00,//默认和正确 时显示的颜色 LockViewErrorColor = 0xFFFF0000, //错误时 显示的颜色 BackgroundColor = CSS_Color.BackgroundColor, }; bodyView.AddChidren(mGestureLockView); mGestureLockView.SetSolidType(true); //滑动结束 回调密码结果和密码长度 mGestureLockView.OnLockVerifyEvent += (selectNumStr, selectCount) => { //自行验证密码,提示正确或者错误 false为显示红色错误, 自行选择调用时机 mGestureLockView.showCorrectStatus(false); if (selectCount < 4) { btnTipMsg.Text = Language.StringByID(StringId.DrawingLengthError); btnTipMsg.TextColor = CSS_Color.WarningColor; return; } passwrod = selectNumStr; if (string.IsNullOrEmpty(oldPasswrod)) { this.RemoveFromParent(); var page = new AppUnlockGesturePage(passwrod, backAction); MainPage.BasePageView.AddChidren(page); page.LoadPage(optionType); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } else { //2020-12-11 密码校验 if (passwrod == oldPasswrod) { //密码验证通过 PasswordInputPassed(optionType); } else { //密码验证失败 PasswordInputError(optionType); } } }; if (optionType == "7") { //使用账户密码登录按钮 提示按钮 AddLoginTipButton(); } else if (optionType != "1") { //输入登录密码验证 提示按钮 AddInputPasswordTipButton(optionType); } //if (optionType == "5" || optionType == "6" || optionType == "7") //{ // Button btnLoginAccountVerify = new Button() // { // Y = Application.GetRealHeight(517), // Height = Application.GetRealHeight(60), // TextAlignment = TextAlignment.Center, // TextSize = CSS_FontSize.TextFontSize, // TextColor = CSS_Color.MainColor, // TextID = StringId.EnterLoginPasswordVerification, // }; // bodyView.AddChidren(btnLoginAccountVerify); // btnLoginAccountVerify.MouseUpEventHandler = (sender, e) => // { // if (optionType == "7") // { // MainPage.GoLoginPage(UserInfo.Current); // } // else // { // Action action = (pw) => // { // var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw); // if (resultObj.Code == StateCode.SUCCESS) // { // UserInfo.Current.appUnlockPasswrod = ""; // UserInfo.Current.appUnlockType = new System.Collections.Generic.List(); // UserInfo.Current.SaveUserInfo(); // this.RemoveFromParent(); // backAction(); // } // else // { // //登录失败 // IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code); // } // }; // new PublicAssmebly().LoadDialog_EditParater(StringId.EnterLoginPasswordVerification, "", action, StringId.PlsEntryPassword, 0, new System.Collections.Generic.List(), true); // } // }; //} } /// /// 手势密码输入错误显示错误信息 /// /// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证 void PasswordInputError(string optionType) { int errorTextID = 0; if (optionType == "1") { //2次绘制点图案不一致,请重新绘制 errorTextID = StringId.DrawingInconsistencyError; } else { //验证失败,密码错误. errorTextID = StringId.AuthenticationFailedPasswordError; } btnTipMsg.TextID = errorTextID; btnTipMsg.IsSelected = true; btnTipMsg.Visible = true; } /// /// 手势密码验证通过后的操作 /// /// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证 void PasswordInputPassed(string optionType) { if (optionType == "1") { //设置密码 验证通过 this.RemoveFromParent(); var page = new OperationResultDisPalyPage(); page.Show(); page.LoadPage(true, Language.StringByID(StringId.SetSuccessfully), Language.StringByID(StringId.SetSuccessfully), ""); //page.LoadPage(true, Language.StringByID(StringId.SetSuccessfully), Language.StringByID(StringId.SetSuccessfully), ""); string tipMsg = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? Language.StringByID(StringId.TurnOnFingerprintUnlocking) : Language.StringByID(StringId.TurnOnFaceIdUnlocking); if (TouchIDUtils.getTouchIDSupperType() != TouchIDUtils.TouchIDSupperType.None) { var unlockType = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? "3" : "4"; //如果之前没设置指纹或者面容ID才显示是否开启 if (!UserInfo.Current.appUnlockType.Contains(unlockType)) { Action action = (result) => { if (result) { if (!UserInfo.Current.appUnlockType.Contains(unlockType)) { UserInfo.Current.appUnlockType.Add(unlockType); } } else { if (UserInfo.Current.appUnlockType.Contains(unlockType)) { UserInfo.Current.appUnlockType.Remove(unlockType); } } UserInfo.Current.SaveUserInfo(); backAction(); }; page.AdditionalOperations(tipMsg, action); } } if (!UserInfo.Current.appUnlockType.Contains("2")) { UserInfo.Current.appUnlockType.Add("2"); } UserInfo.Current.appUnlockPasswrod = passwrod; UserInfo.Current.SaveUserInfo(); backAction(); } else if (optionType == "2") { //验证密码通过 //移除当前界面,每次返回都返回到最上级 this.RemoveFromParent(); var page = new AppUnlockGesturePage("", backAction); MainPage.BasePageView.AddChidren(page); page.LoadPage("1"); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; } else if (optionType == "3" || optionType == "4") { //3:关闭密码;4:关闭解锁设置 通过 if (optionType == "4") { backAction(); this.RemoveFromParent(); return; } if (UserInfo.Current.appUnlockType.Contains("2")) { UserInfo.Current.appUnlockType = new System.Collections.Generic.List(); UserInfo.Current.appUnlockPasswrod = ""; UserInfo.Current.SaveUserInfo(); this.RemoveFromParent(); backAction(); } } else if (optionType == "5") { //5:指纹ID开关 通过 if (UserInfo.Current.appUnlockType.Contains("3")) UserInfo.Current.appUnlockType.Remove("3"); else UserInfo.Current.appUnlockType.Add("3"); UserInfo.Current.SaveUserInfo(); this.RemoveFromParent(); backAction(); } else if (optionType == "6") { //6:面容ID开关 通过 if (UserInfo.Current.appUnlockType.Contains("4")) UserInfo.Current.appUnlockType.Remove("4"); else UserInfo.Current.appUnlockType.Add("4"); UserInfo.Current.SaveUserInfo(); this.RemoveFromParent(); } else if (optionType == "7") { //7:解锁验证 通过 this.RemoveFromParent(); backAction(); } } /// /// 使用账户密码登录按钮 提示按钮 /// void AddLoginTipButton() { Button btnLoginAccountVerify = new Button() { Y = Application.GetRealHeight(517), Height = Application.GetRealHeight(60), TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.MainColor, TextID = StringId.LogWithAccountAndPassword, }; bodyView.AddChidren(btnLoginAccountVerify); btnLoginAccountVerify.MouseUpEventHandler = (sender, e) => { //退出登录 HDLCommon.Current.Logout(); }; } /// /// 输入登录密码验证 提示按钮 /// void AddInputPasswordTipButton(string optionType) { Button btnLoginAccountVerify = new Button() { Y = Application.GetRealHeight(517), Height = Application.GetRealHeight(60), TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.TextFontSize, TextColor = CSS_Color.MainColor, TextID = StringId.EnterLoginPasswordVerification, }; bodyView.AddChidren(btnLoginAccountVerify); btnLoginAccountVerify.MouseUpEventHandler = (sender, e) => { //输入登录密码验证 Action action = (pw) => { AuthenticationByLoginPassword(pw, optionType); //var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw); //if (resultObj.Code == StateCode.SUCCESS) //{ // PasswordInputPassed(optionType); //} //else //{ // Application.RunOnMainThread(() => // { // Utlis.ShowTip(Language.StringByID(StringId.AuthenticationFailedPasswordError)); // }); //} }; new PublicAssmebly().LoadDialog_EditParater(StringId.EnterLoginPasswordVerification, "", action, StringId.PlsEntryPassword, 0, new System.Collections.Generic.List(), true); }; } /// /// 登录密码验证 /// /// /// void AuthenticationByLoginPassword(string pw, string optionType) { var waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(StringId.PleaseWait)); new System.Threading.Thread(() => { try { var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw); Application.RunOnMainThread(() => { if (resultObj.Code == StateCode.SUCCESS) { PasswordInputPassed(optionType); } else { Utlis.ShowTip(Language.StringByID(StringId.AuthenticationFailedPasswordError)); } }); } catch { } finally { Application.RunOnMainThread(() => { if (waitPage != null) { waitPage.RemoveFromParent(); waitPage = null; } }); } }) { IsBackground = true }.Start(); } } }