using System; using System.Collections.Generic; using System.Text; namespace Shared.Phone.UserCenter.Password { /// /// 编辑二次验证的密码验证界面 /// public class EditorSecondaryPasswordForm : EditorCommonForm { #region ■ 变量声明___________________________ /// /// 当前界面模式 /// private FormMode formMode = FormMode.A新建密码; /// /// 第一次密码 /// private string firstPssword = string.Empty; #endregion #region ■ 初始化_____________________________ /// /// 画面显示(底层会固定调用此方法,借以完成画面创建) /// public void ShowForm() { //设置头部信息 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uPasswordAuthentication)); if (string.IsNullOrEmpty(HdlUserCenterResourse.AccountOption.PswAuthentication) == false) { formMode = FormMode.A验证前回密码; } //初始化中部信息 this.InitMiddleFrame(); } /// /// 初始化中部信息 /// private void InitMiddleFrame() { //清空bodyFrame this.ClearBodyFrame(); string title = string.Empty; if (formMode == FormMode.A新建密码) { //请输入新密码 title = Language.StringByID(R.MyInternationalizationString.uPleaseInputNewPassword); } else if (formMode == FormMode.A验证前回密码) { //请输入密码 title = Language.StringByID(R.MyInternationalizationString.uPleaseInputPsw); } else if (formMode == FormMode.A确认新建密码 || formMode == FormMode.A确认修改密码) { //请再次确认密码 title = Language.StringByID(R.MyInternationalizationString.uPleaseConfirmPswAgain); } else if (formMode == FormMode.A修改密码) { //修改密码,请输入新密码 title = Language.StringByID(R.MyInternationalizationString.uEditorPswPleaseInputNewPsw); } //密码控件 var pswControl = new PswNumberInputControl(title); //变更数字表盘背景色 pswControl.NumberIconBackColor = UserCenterColor.Current.White; pswControl.Y = Application.GetRealHeight(104); pswControl.Gravity = Gravity.CenterHorizontal; bodyFrameLayout.AddChidren(pswControl); pswControl.InitControl(); pswControl.FinishInputEvent += (password) => { //校验密码 this.DoAdjustPssword(password, pswControl); }; if (formMode == FormMode.A验证前回密码) { //忘记密码? var btnForgotPsw = new NormalViewControl(bodyFrameLayout.Width, Application.GetRealHeight(49), false); btnForgotPsw.Y = Application.GetRealHeight(1492); btnForgotPsw.TextSize = 12; btnForgotPsw.TextColor = UserCenterColor.Current.TextOrangeColor; btnForgotPsw.TextID = R.MyInternationalizationString.ForgotPasswordMsg; btnForgotPsw.TextAlignment = TextAlignment.Center; bodyFrameLayout.AddChidren(btnForgotPsw); btnForgotPsw.ButtonClickEvent += (sender, e) => { var form = new ForgotSecondaryPasswordForm(); form.AddForm(); }; //底线 int lineWidth = btnForgotPsw.GetRealWidthByText(); var btnLine = new NormalViewControl(lineWidth, HdlControlResourse.BottomLineHeight, false); btnLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor; btnLine.Gravity = Gravity.CenterHorizontal; btnLine.Y = btnForgotPsw.Bottom - Application.GetRealHeight(8); bodyFrameLayout.AddChidren(btnLine); } } #endregion #region ■ 校验密码___________________________ /// /// 校验密码 /// /// /// private void DoAdjustPssword(string i_Psw, PswNumberInputControl pswControl) { if (formMode == FormMode.A新建密码) { //输入二次密码 this.firstPssword = i_Psw; formMode = FormMode.A确认新建密码; this.InitMiddleFrame(); } else if (formMode == FormMode.A确认新建密码) { if (this.firstPssword != i_Psw) { //确认密码错误,请重新设置 pswControl.SetErrorMsg(Language.StringByID(R.MyInternationalizationString.SecondPswNotEqual2)); return; } //保存密码 this.SaveSecondaryPassword(pswControl, i_Psw); } else if (formMode == FormMode.A验证前回密码) { if (HdlUserCenterResourse.AccountOption.PswAuthentication != i_Psw) { HdlUserCenterResourse.AccountOption.PasswordInputCount--; if (HdlUserCenterResourse.AccountOption.PasswordInputCount <= 0) { //管理员身份验证失败,请重新登录 string msg2 = Language.StringByID(R.MyInternationalizationString.uCheckAdministratorFailAndReload); this.ShowMassage(ShowMsgType.Tip, msg2); HdlAccountLogic.Current.ReLoginAgain(Common.Config.Instance.Account); return; } //密码错误,请重新输入 pswControl.SetErrorMsg(Language.StringByID(R.MyInternationalizationString.uOldPsswordIsError)); return; } //重置剩余密码次数 HdlUserCenterResourse.AccountOption.ResetPasswordCount(); formMode = FormMode.A修改密码; this.InitMiddleFrame(); } else if (formMode == FormMode.A修改密码) { if (i_Psw == HdlUserCenterResourse.AccountOption.PswAuthentication) { //新密码和原密码一致,请重新输入 pswControl.SetErrorMsg(Language.StringByID(R.MyInternationalizationString.uNewPswAndOldPswIsEqual)); return; } //输入二次密码 this.firstPssword = i_Psw; formMode = FormMode.A确认修改密码; this.InitMiddleFrame(); } else if (formMode == FormMode.A确认修改密码) { if (this.firstPssword != i_Psw) { //确认密码错误,请重新设置 pswControl.SetErrorMsg(Language.StringByID(R.MyInternationalizationString.SecondPswNotEqual2)); return; } //保存密码 this.SaveSecondaryPassword(pswControl, i_Psw); } } #endregion #region ■ 外部指定模式_______________________ /// /// 强制指定新密码模式(由外部调用) /// public void SetNewPasswordFormMode() { formMode = FormMode.A新建密码; this.InitMiddleFrame(); } #endregion #region ■ 保存密码___________________________ /// /// 保存密码 /// /// 控件 /// 密码 private void SaveSecondaryPassword(PswNumberInputControl contr, string psw) { HdlThreadLogic.Current.RunThread(() => { //打开进度条 this.ShowProgressBar(); var result = HdlAccountLogic.Current.EditorNumberAndGesturePassword(psw, null); //关闭进度条 this.CloseProgressBar(); HdlThreadLogic.Current.RunMain(() => { if (result == false) { //修改密码失败 contr.SetErrorMsg(Language.StringByID(R.MyInternationalizationString.uEditorPasswordFail)); } else { HdlUserCenterResourse.AccountOption.PswAuthentication = psw; HdlUserCenterResourse.AccountOption.Save(); //界面关闭 this.CloseForm(); } }); }); } #endregion #region ■ 结构体_____________________________ /// /// 界面模式 /// private enum FormMode { A新建密码 = 1, A确认新建密码 = 2, A验证前回密码 = 3, A修改密码 = 4, A确认修改密码 = 5 } #endregion } }