HDL Home App 第二版本 旧平台金堂用 正在使用
chenqiyang
2022-06-22 dc0309e64f02227d8e1468b7326c07955f804612
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Form/PswSecondarySecurityForm.cs
old mode 100755 new mode 100644
@@ -1,185 +1,177 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter
{
    /// <summary>
    /// 二次密码验证界面
    /// </summary>
    public class PswSecondarySecurityForm : DialogCommonForm
    {
        #region ■ 变量声明___________________________
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_TouchText">Touch ID验证的显示文本</param>
        /// <param name="i_PasswordText">密码验证的显示文本</param>
        /// <param name="i_GestureText">手势验证的显示文本</param>
        /// <param name="SuccessAction">验证成功后的回调函数,如果不成功,不会调用这个东西</param>
        public void ShowForm(string i_TouchText, string i_PasswordText, string i_GestureText, Action SuccessAction)
        {
            //初始化中部信息
            this.InitMiddleFrame(i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        /// <param name="i_TouchText">Touch ID验证的显示文本</param>
        /// <param name="i_PasswordText">密码验证的显示文本</param>
        /// <param name="i_GestureText">手势验证的显示文本</param>
        /// <param name="SuccessAction">验证成功后的回调函数,如果不成功,不会调用这个东西</param>
        private void InitMiddleFrame(string i_TouchText, string i_PasswordText, string i_GestureText, Action SuccessAction)
        {
            var frameBack = new FrameLayout();
            frameBack.Y = Application.GetRealHeight(101);
            frameBack.Gravity = Gravity.CenterHorizontal;
            frameBack.Width = Application.GetRealWidth(965);
            frameBack.Height = Application.GetRealHeight(1711);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.Radius = 6;
            bodyFrameLayout.AddChidren(frameBack);
            //密码输入控件
            var pswControl = new PswNumberInputControl(i_PasswordText, 4);
            pswControl.Gravity = Gravity.CenterHorizontal;
            pswControl.Y = Application.GetRealHeight(81);
            frameBack.AddChidren(pswControl);
            pswControl.InitControl();
            //改变删除按钮的坐标
            pswControl.ChangedDeleteButtonPoint(-1, pswControl.Height, false);
            //添加关闭按钮
            var btnClose = pswControl.AddCloseButton();
            btnClose.ButtonClickEvent += (sender, e) =>
            {
                this.CloseForm();
            };
            pswControl.FinishInputEvent += (strPsw) =>
            {
                if (UserCenterResourse.Option.PswAuthentication != strPsw)
                {
                    UserCenterResourse.Option.PasswordInputCount--;
                    if (UserCenterResourse.Option.PasswordInputCount <= 0)
                    {
                        //管理员身份验证失败,请重新登录
                        string msg2 = Language.StringByID(R.MyInternationalizationString.uCheckAdministratorFailAndReload);
                        this.ShowMassage(ShowMsgType.Tip, msg2);
                        UserCenterLogic.ReLoginAgain(Common.Config.Instance.Account);
                        return;
                    }
                    //密码错误,请重新输入
                    pswControl.SetErrorMsg(Language.StringByID(R.MyInternationalizationString.uOldPsswordIsError));
                    return;
                }
                //重置剩余密码次数
                UserCenterResourse.Option.ResetPasswordCount();
                //界面关闭
                this.CloseForm();
                SuccessAction?.Invoke();
                SuccessAction = null;
            };
            //手势开锁
            var btnGesture = new NormalClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
            btnGesture.oldBackgroundColor = 0xfff5f6fa;
            btnGesture.BackgroundColor = 0xfff5f6fa;
            btnGesture.Text = i_GestureText;
            btnGesture.TextColor = UserCenterColor.Current.TextColor1;
            btnGesture.Gravity = Gravity.BottomLeft;
            frameBack.AddChidren(btnGesture);
            if (string.IsNullOrEmpty(UserCenterResourse.Option.GestureAuthentication) == true)
            {
                //没有启用手势开锁
                btnGesture.CanClick = false;
            }
            btnGesture.ButtonClickEvent += (sender, e) =>
            {
                var form = new PswGestureSecirityForm();
                this.AddFromAndRemoveNowForm(form, i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
            };
            //Touch ID开锁
            var btnTouch = new NormalClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
            btnTouch.BackgroundColor = 0xff232323;
            btnTouch.oldBackgroundColor = 0xff232323;
            btnTouch.Text = i_TouchText;
            btnTouch.TextColor = UserCenterColor.Current.White;
            btnTouch.Gravity = Gravity.BottomRight;
            frameBack.AddChidren(btnTouch);
            if (UserCenterResourse.Option.FingerprintAuthentication == false)
            {
                //没有启用Touch ID
                btnTouch.CanClick = false;
            }
            btnTouch.ButtonClickEvent += (sender, e) =>
            {
                //二次检测
                TouchIDUtils.TouchIDSupperType type = TouchIDUtils.getTouchIDSupperType();
                if (type != TouchIDUtils.TouchIDSupperType.TouchID)
                {
                    return;
                }
                //界面关闭
                this.CloseForm();
                TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent += (sender2, e2) =>
                {
                    if (e2 == TouchIDUtils.TouchIDState.Success)
                    {
                        TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
                        //TouchID验证成功
                        SuccessAction?.Invoke();
                        SuccessAction = null;
                    }
                    else if (e2 == TouchIDUtils.TouchIDState.InputPassword)
                    {
                        TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
                        //密码验证
                        if (string.IsNullOrEmpty(UserCenterResourse.Option.PswAuthentication) == false)
                        {
                            var form = new PswSecondarySecurityForm();
                            this.AddFromAndRemoveNowForm(form, i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
                        }
                        //手势验证
                        else if (string.IsNullOrEmpty(UserCenterResourse.Option.GestureAuthentication) == false)
                        {
                            var form = new PswGestureSecirityForm();
                            this.AddFromAndRemoveNowForm(form, i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
                        }
                        else
                        {
                            //没有设置密码验证
                            this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uPasswordAuthenticationNotSettion));
                        }
                    }
                };
                TouchIDUtils.Instance.showTouchIDWithDescribe(null, null);
            };
        }
        #endregion
        #region ■ 界面关闭___________________________
        public override void CloseFormBefore()
        {
            //取消事件
            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
            base.CloseFormBefore();
        }
        #endregion
    }
}
using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter
{
    /// <summary>
    /// 二次密码验证界面
    /// </summary>
    public class PswSecondarySecurityForm : DialogCommonForm
    {
        #region ■ 变量声明___________________________
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_TouchText">Touch ID验证的显示文本</param>
        /// <param name="i_PasswordText">密码验证的显示文本</param>
        /// <param name="i_GestureText">手势验证的显示文本</param>
        /// <param name="SuccessAction">验证成功后的回调函数,如果不成功,不会调用这个东西</param>
        public void ShowForm(string i_TouchText, string i_PasswordText, string i_GestureText, Action SuccessAction)
        {
            //初始化中部信息
            this.InitMiddleFrame(i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        /// <param name="i_TouchText">Touch ID验证的显示文本</param>
        /// <param name="i_PasswordText">密码验证的显示文本</param>
        /// <param name="i_GestureText">手势验证的显示文本</param>
        /// <param name="SuccessAction">验证成功后的回调函数,如果不成功,不会调用这个东西</param>
        private void InitMiddleFrame(string i_TouchText, string i_PasswordText, string i_GestureText, Action SuccessAction)
        {
            var frameBack = new FrameLayout();
            frameBack.Y = Application.GetRealHeight(101);
            frameBack.Gravity = Gravity.CenterHorizontal;
            frameBack.Width = Application.GetRealWidth(965);
            frameBack.Height = Application.GetRealHeight(1711);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.Radius = (uint)Application.GetRealHeight(17);
            bodyFrameLayout.AddChidren(frameBack);
            //密码输入控件
            var pswControl = new PswNumberInputControl(i_PasswordText, 4);
            pswControl.Gravity = Gravity.CenterHorizontal;
            pswControl.Y = Application.GetRealHeight(81);
            frameBack.AddChidren(pswControl);
            pswControl.InitControl();
            //改变删除按钮的坐标
            pswControl.ChangedDeleteButtonPoint(-1, pswControl.Height, false);
            //添加关闭按钮
            var btnClose = pswControl.AddCloseButton();
            btnClose.ButtonClickEvent += (sender, e) =>
            {
                this.CloseForm();
            };
            pswControl.FinishInputEvent += (strPsw) =>
            {
                if (UserCenterResourse.AccountOption.PswAuthentication != strPsw)
                {
                    UserCenterResourse.AccountOption.PasswordInputCount--;
                    if (UserCenterResourse.AccountOption.PasswordInputCount <= 0)
                    {
                        //管理员身份验证失败,请重新登录
                        string msg2 = Language.StringByID(R.MyInternationalizationString.uCheckAdministratorFailAndReload);
                        this.ShowMassage(ShowMsgType.Tip, msg2);
                        UserCenterLogic.ReLoginAgain(Common.Config.Instance.Account);
                        return;
                    }
                    //密码错误,请重新输入
                    pswControl.SetErrorMsg(Language.StringByID(R.MyInternationalizationString.uOldPsswordIsError));
                    return;
                }
                //重置剩余密码次数
                UserCenterResourse.AccountOption.ResetPasswordCount();
                //界面关闭
                this.CloseForm();
                SuccessAction?.Invoke();
                SuccessAction = null;
            };
            //手势开锁
            var btnGesture = new BottomLeftClickButton(frameBack.Width / 2, Application.GetRealHeight(127));
            frameBack.AddChidren(btnGesture);
            btnGesture.InitControl(i_GestureText);
            if (string.IsNullOrEmpty(UserCenterResourse.AccountOption.GestureAuthentication) == true)
            {
                //没有启用手势开锁
                btnGesture.CanClick = false;
            }
            btnGesture.ButtonClickEvent += (sender, e) =>
            {
                var form = new PswGestureSecirityForm();
                this.AddFromAndRemoveNowForm(form, i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
            };
            //Touch ID开锁
            var btnTouch = new BottomRightClickButton(frameBack.Width - btnGesture.Width, btnGesture.Height);
            frameBack.AddChidren(btnTouch);
            btnTouch.InitControl(i_TouchText);
            if (UserCenterResourse.AccountOption.FingerprintAuthentication == false)
            {
                //没有启用Touch ID
                btnTouch.CanClick = false;
            }
            btnTouch.ButtonClickEvent += (sender, e) =>
            {
                //二次检测
                TouchIDUtils.TouchIDSupperType type = TouchIDUtils.getTouchIDSupperType();
                if (type != TouchIDUtils.TouchIDSupperType.TouchID)
                {
                    return;
                }
                //界面关闭
                this.CloseForm();
                TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent += (sender2, e2) =>
                {
                    if (e2 == TouchIDUtils.TouchIDState.Success)
                    {
                        TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
                        //TouchID验证成功
                        SuccessAction?.Invoke();
                        SuccessAction = null;
                    }
                    else if (e2 == TouchIDUtils.TouchIDState.InputPassword)
                    {
                        TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
                        //密码验证
                        if (string.IsNullOrEmpty(UserCenterResourse.AccountOption.PswAuthentication) == false)
                        {
                            var form = new PswSecondarySecurityForm();
                            this.AddFromAndRemoveNowForm(form, i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
                        }
                        //手势验证
                        else if (string.IsNullOrEmpty(UserCenterResourse.AccountOption.GestureAuthentication) == false)
                        {
                            var form = new PswGestureSecirityForm();
                            this.AddFromAndRemoveNowForm(form, i_TouchText, i_PasswordText, i_GestureText, SuccessAction);
                        }
                        else
                        {
                            //没有设置密码验证
                            this.ShowMassage(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uPasswordAuthenticationNotSettion));
                        }
                    }
                };
                TouchIDUtils.Instance.showTouchIDWithDescribe(null, null);
            };
        }
        #endregion
        #region ■ 界面关闭___________________________
        public override void CloseFormBefore()
        {
            //取消事件
            TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = null;
            base.CloseFormBefore();
        }
        #endregion
    }
}