wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/UI/UI2/4-PersonalCenter/UnlockSetting/AppUnlockPasswordPage.cs
@@ -1,23 +1,32 @@
using System;
using Shared;
using HDL_ON.UI.CSS;
using HDL_ON.DAL.Server;
namespace HDL_ON.UI
{
    /// <summary>
    /// 密码解锁
    /// </summary>
    public partial class AppUnlockPasswordPage : FrameLayout
    {
        FrameLayout bodyView;
        EditText etPassword;
        /// <summary>
        ///
        /// </summary>
        Button btnTipError;
        string passwrod = "";
        string oldPasswrod = "";
        Action backAction;
        public AppUnlockPasswordPage(string pw,Action action)
        public AppUnlockPasswordPage(string pw, Action action)
        {
            bodyView = this;
            bodyView.Tag = "unlockpage";
            oldPasswrod = pw;
            backAction = action;
        }
        /// <summary>
        /// 
@@ -46,16 +55,19 @@
                TextAlignment = TextAlignment.Center,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.SubheadingFontSize,
                TextID = string.IsNullOrEmpty(oldPasswrod)? StringId.PlsEntryPassword : StringId.PlsRegisterRepeatPassword,
                TextID = string.IsNullOrEmpty(oldPasswrod) ? StringId.PlsEntryPassword : StringId.PlsRegisterRepeatPassword,
            };
            bodyView.AddChidren(btnTipTitle);
            if (optionType == "2"|| optionType == "3")
            if (optionType == "1")
            {
                btnTipTitle.TextID = string.IsNullOrEmpty(oldPasswrod) ? StringId.PlsEntryPassword : StringId.PlsRegisterRepeatPassword;
            }
            else if (optionType == "2")
            {
                btnTipTitle.TextID = StringId.PleaseEnterTheOriginalDigitalPassword;
            }
            if(optionType == "7")
            else
            {
                btnTipTitle.TextID = StringId.PlsEntryPassword;
            }
@@ -120,7 +132,7 @@
            bodyView.AddChidren(btnTipIcon4);
            Button btnTipError = new Button()
            btnTipError = new Button()
            {
                Y = Application.GetRealWidth(258),
                Height = Application.GetRealWidth(40),
@@ -132,19 +144,22 @@
            bodyView.AddChidren(btnTipError);
            var etPassword = new EditText()
            etPassword = new EditText()
            {
                Y = Application.GetRealWidth(100),
                Height = Application.GetRealWidth(10),
                Height = 1,
                Foucs = true,
                Visible = false,
                //Visible = false,
                IsNumberKeyboardType = true,
            };
            bodyView.AddChidren(etPassword);
            etPassword.TextChangeEventHandler = (sender, e) => {
            //etPassword.MouseUpEventHandler = (sender, e) => { };
            etPassword.TextChangeEventHandler = (sender, e) =>
            {
                passwrod = etPassword.Text.Trim();
                switch(etPassword.Text.Trim().Length)
                switch (etPassword.Text.Trim().Length)
                {
                    case 0:
                        btnTipIcon1.IsSelected = false;
@@ -176,154 +191,36 @@
                        btnTipIcon2.IsSelected = true;
                        btnTipIcon3.IsSelected = true;
                        btnTipIcon4.IsSelected = true;
                        Application.HideSoftInput();
                        if (string.IsNullOrEmpty(oldPasswrod))
                        {
                            var page = new AppUnlockPasswordPage(passwrod,backAction);
                            //移除当前界面,每次返回都返回到最上级
                            this.RemoveFromParent();
                            var page = new AppUnlockPasswordPage(passwrod, backAction);
                            MainPage.BasePageView.AddChidren(page);
                            page.LoadPage(optionType);
                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            //移除当前界面,每次返回都返回到最上级
                            MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 2);
                        }
                        else
                        {
                            if(optionType == "2")
                            {
                                var page = new AppUnlockPasswordPage("", backAction);
                                MainPage.BasePageView.AddChidren(page);
                                page.LoadPage("1");
                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                //移除当前界面,每次返回都返回到最上级
                                MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 2);
                                return;
                            }
                            if (optionType == "7")
                            {
                                if (passwrod == oldPasswrod)
                                {
                                    this.RemoveFromParent();
                                    backAction();
                                }
                                else
                                {
                                    btnTipError.TextID = StringId.AuthenticationFailedPasswordError;
                                    etPassword.Text = "";
                                    btnTipError.Visible = true;
                                }
                                return;
                            }
                            if (optionType == "3"|| optionType == "4")
                            {
                                if (passwrod == oldPasswrod)
                                {
                                    if(optionType == "4")
                                    {
                                        backAction();
                                        this.RemoveFromParent();
                                        return;
                                    }
                                    if (MainPage.LoginUser.appUnlockType.Contains("1"))
                                    {
                                        MainPage.LoginUser.appUnlockType.Remove("1");
                                        MainPage.LoginUser.appUnlockPasswrod = "";
                                        MainPage.LoginUser.SaveUserInfo();
                                        this.RemoveFromParent();
                                        backAction();
                                    }
                                }
                                else
                                {
                                    btnTipError.TextID = StringId.AuthenticationFailedPasswordError;
                                    etPassword.Text = "";
                                    btnTipError.Visible = true;
                                }
                                return;
                            }
                            //关闭/开启指纹或者面容
                            if (optionType == "5" || optionType == "6")//|| optionType == "8" || optionType == "9")
                            {
                                if (passwrod == oldPasswrod)
                                {
                                    if (optionType == "5")
                                    {
                                        if (MainPage.LoginUser.appUnlockType.Contains("3"))
                                            MainPage.LoginUser.appUnlockType.Remove("3");
                                        else
                                            MainPage.LoginUser.appUnlockType.Add("3");
                                        MainPage.LoginUser.SaveUserInfo();
                                        this.RemoveFromParent();
                                    }
                                    if (optionType == "6")
                                    {
                                        if (MainPage.LoginUser.appUnlockType.Contains("4"))
                                            MainPage.LoginUser.appUnlockType.Remove("4");
                                        else
                                            MainPage.LoginUser.appUnlockType.Add("4");
                                        MainPage.LoginUser.SaveUserInfo();
                                        this.RemoveFromParent();
                                    }
                                    backAction();
                                }
                                else
                                {
                                    btnTipError.TextID = StringId.AuthenticationFailedPasswordError;
                                    etPassword.Text = "";
                                    btnTipError.Visible = true;
                                }
                                return;
                            }
                            //2020-12-11 密码校验
                            if (passwrod == oldPasswrod)
                            {
                                this.RemoveFromParent();
                                var page = new OperationResultDisPalyPage();
                                page.Show();
                                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);
                                Action<bool> action = (result) =>
                                {
                                    var unlockType = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? "3" : "4";
                                    if (result)
                                    {
                                        if (!MainPage.LoginUser.appUnlockType.Contains(unlockType))
                                        {
                                            MainPage.LoginUser.appUnlockType.Add(unlockType);
                                        }
                                    }
                                    else
                                    {
                                        if (MainPage.LoginUser.appUnlockType.Contains(unlockType))
                                        {
                                            MainPage.LoginUser.appUnlockType.Remove(unlockType);
                                        }
                                    }
                                    backAction();
                                    MainPage.LoginUser.SaveUserInfo();
                                };
                                page.AdditionalOperations(tipMsg, action);
                                if (!MainPage.LoginUser.appUnlockType.Contains("1"))
                                {
                                    MainPage.LoginUser.appUnlockType.Add("1");
                                }
                                MainPage.LoginUser.appUnlockPasswrod = passwrod;
                                MainPage.LoginUser.SaveUserInfo();
                                backAction();
                                //密码验证通过
                                PasswordInputPassed(optionType);
                            }
                            else
                            {
                                btnTipError.TextID = StringId.IncorrectRepeatPassword;
                                etPassword.Text = "";
                                btnTipError.Visible = true;
                                //密码验证失败
                                PasswordInputError(optionType);
                            }
                        }
                        break;
                }
            };
            EventHandler<MouseEventArgs> eventHandler = (sender, e) => {
            EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
            {
                etPassword.Foucs = true;
            };
            bodyView.MouseUpEventHandler = eventHandler;
@@ -331,6 +228,276 @@
            btnTipIcon2.MouseUpEventHandler = eventHandler;
            btnTipIcon3.MouseUpEventHandler = eventHandler;
            btnTipIcon4.MouseUpEventHandler = eventHandler;
            etPassword.Foucs = true;
            if (optionType == "7")
            {
                //使用账户密码登录按钮 提示按钮
                AddLoginTipButton();
            }
            else if (optionType != "1")
            {
                //输入登录密码验证 提示按钮
                AddInputPasswordTipButton(optionType);
            }
        }
        /// <summary>
        /// 密码输入错误显示错误信息
        /// </summary>
        /// <param name="optionType">1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证</param>
        void PasswordInputError(string optionType)
        {
            int errorTextID = 0;
            if (optionType == "1")
            {
                //两次输入密码不一致,请重新输入
                errorTextID = StringId.IncorrectRepeatPassword;
            }
            else
            {
                //验证失败,密码错误.
                errorTextID = StringId.AuthenticationFailedPasswordError;
            }
            btnTipError.TextID = errorTextID;
            etPassword.Text = "";
            btnTipError.Visible = true;
        }
        /// <summary>
        /// 密码验证通过后的操作
        /// </summary>
        /// <param name="optionType">1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证</param>
        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), "");
                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<bool> 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);
                                }
                            }
                            backAction();
                            UserInfo.Current.SaveUserInfo();
                        };
                        page.AdditionalOperations(tipMsg, action);
                    }
                }
                if (!UserInfo.Current.appUnlockType.Contains("1"))
                {
                    UserInfo.Current.appUnlockType.Add("1");
                }
                UserInfo.Current.appUnlockPasswrod = passwrod;
                UserInfo.Current.SaveUserInfo();
                backAction();
            }
            else if (optionType == "2")
            {
                //验证密码通过
                //移除当前界面,每次返回都返回到最上级
                this.RemoveFromParent();
                var page = new AppUnlockPasswordPage("", 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("1"))
                {
                    UserInfo.Current.appUnlockType = new System.Collections.Generic.List<string>();//.Remove("1");
                    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();
                backAction();
            }
            else if (optionType == "7")
            {
                //7:解锁验证 通过
                this.RemoveFromParent();
                backAction();
            }
        }
        /// <summary>
        /// 使用账户密码登录按钮 提示按钮
        /// </summary>
        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();
            };
        }
        /// <summary>
        /// 输入登录密码验证 提示按钮
        /// </summary>
        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<string> 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<string>(), true);
            };
        }
        /// <summary>
        /// 登录密码验证
        /// </summary>
        /// <param name="pw"></param>
        /// <param name="optionType"></param>
        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();
        }
    }
}