using System; using System.Text.RegularExpressions; using System.Threading; using HDL_ON.DAL.Server; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI.UI1Login { public partial class ForgetPasswordPage { /// /// 加载事件列表 /// void LoadEventList() { LoadPage_SwitchResetMode(); LoadEvent_EditTextFcousChange(); LoadEvent_ChangeTextVisble(); LoadEvent_GetVerificationCode(); LoadEvent_Reset(); LoadEvent_TextChange(); } /// /// 切换修改方式 /// void LoadPage_SwitchResetMode() { //选择手机方式 btnPhoneLogin.MouseUpEventHandler += (sender, e) => { if (registerType == 0) return; etAccount.Text = registerPhone; etPassword.Text = ""; etRepeatPassword.Text = ""; #region 切换选中按钮 btnGetVerificationCode_Phone.Visible = true; btnGetVerificationCode_Mail.Visible = false; btnEmailLogin.TextColor = CSS_Color.PromptingColor1; btnEmailLogin.TextSize = CSS_FontSize.TextFontSize; btnPhoneLogin.TextColor = CSS_Color.MainColor; btnPhoneLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary; etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryAccount); #endregion #region 切换方式方式及图标 registerType = 0; if (btnAccountIcon.Parent != null) { btnAccountIcon.RemoveFromParent(); } accountView.AddChidren(btnGlobalRoaming); #endregion }; //选择邮箱方式 btnEmailLogin.MouseUpEventHandler += (sender, e) => { if (registerType == 1) return; etAccount.Text = registerEmail; etPassword.Text = ""; etRepeatPassword.Text = ""; #region 切换选中按钮 btnGetVerificationCode_Phone.Visible = false; btnGetVerificationCode_Mail.Visible = true; btnPhoneLogin.TextColor = CSS_Color.PromptingColor1; btnPhoneLogin.TextSize = CSS_FontSize.TextFontSize; btnEmailLogin.TextColor = CSS_Color.MainColor; btnEmailLogin.TextSize = CSS_FontSize.EmphasisFontSize_Secondary; etAccount.PlaceholderText = Language.StringByID(StringId.PlsEntryEmailAddress); #endregion #region 切换修改方式及图标 registerType = 1; if (btnGlobalRoaming.Parent != null) { btnGlobalRoaming.RemoveFromParent(); } accountView.AddChidren(btnAccountIcon); #endregion }; } /// /// 加载文本变化事件 /// void LoadEvent_TextChange() { etAccount.TextChangeEventHandler += (sender, e) => { Regex reg = new Regex(@"^[1]+\d{10}"); var mFalg = reg.Match(etAccount.Text.Trim()); if (registerType == 0)//手机获取验证码按钮生效条件 { if (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11) { btnGetVerificationCode_Phone.IsSelected = false; } else { if (btnGetVerificationCode_Phone.Text == Language.StringByID(StringId.GetVerificationCode)) btnGetVerificationCode_Phone.IsSelected = true; } } else//邮箱获取验证码按钮生效条件 { if (!mFalg.Success) { btnGetVerificationCode_Mail.IsSelected = false; } else { if (btnGetVerificationCode_Mail.Text == Language.StringByID(StringId.GetVerificationCode)) btnGetVerificationCode_Mail.IsSelected = true; } } }; } /// /// 加载文本框焦点变化事件 /// void LoadEvent_EditTextFcousChange() { //账号文本框焦点变化事件 etAccount.FoucsChanged += (sender, e) => { if (etAccount.Foucs) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.MainColor; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); } else { //标记手机号码无效 btnAccountViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnAccountViewBottomLine.Height = Application.GetRealHeight(1); //手机方式-验证手机号码是否正确 if (registerType == 0) { btnGetVerificationCode_Phone.IsSelected = false; Regex reg = new Regex(@"^[1]+\d{9}"); var mFalg = reg.Match(etAccount.Text.Trim()); if (!mFalg.Success || (btnGlobalRoaming.Text == "+86" && etAccount.Text.Trim().Length != 11)) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); new Tip() { CloseTime = 3, Text = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber), Direction = AMPopTipDirection.None, }.Show(bodyView); } else { if (btnGetVerificationCode_Phone.Text == Language.StringByID( StringId.GetVerificationCode)) { btnGetVerificationCode_Phone.IsSelected = true; } LoadMothed_EnableResetButton(); } } else if (registerType == 1) { btnGetVerificationCode_Mail.IsSelected = false; //邮箱方式-验证邮箱是否正确 var reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$"); var mFalg = reg.Match(etAccount.Text.Trim()); if (!mFalg.Success ) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); new Tip() { CloseTime = 3, Text = Language.StringByID(StringId.PlsEntryCorrectEmailAddress), Direction = AMPopTipDirection.None, }.Show(bodyView); } else { if (btnGetVerificationCode_Mail.Text == Language.StringByID(StringId.GetVerificationCode)) { btnGetVerificationCode_Mail.IsSelected = true; } LoadMothed_EnableResetButton(); } } } }; //密码文本框焦点变化事件 etPassword.FoucsChanged += (sender, e) => { if (etPassword.Foucs) { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); } else { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnPasswordViewBottomLine.Height = Application.GetRealHeight(1); //校验密码是否符合要求 if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13) { new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.PasswordIsUnqualified) }.Show(bodyView); } } }; //确认密码文本框焦点变化事件 etRepeatPassword.FoucsChanged += (sender, e) => { if (etRepeatPassword.Foucs) { btnRepeatPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor; btnRepeatPasswordViewBottomLine.Height = Application.GetRealHeight(2); } else { btnRepeatPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnRepeatPasswordViewBottomLine.Height = Application.GetRealHeight(1); //校验两次输入的密码是否一致 if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim()) { btnRepeatPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnRepeatPasswordViewBottomLine.Height = Application.GetRealHeight(2); new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.IncorrectRepeatPassword) }.Show(bodyView); } else { LoadMothed_EnableResetButton(); } } }; //验证码文本框焦点变化事件 etVerificationCode.FoucsChanged += (sender, e) => { if (etVerificationCode.Foucs) { btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.MainColor; btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2); } else { btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(1); if (etVerificationCode.Text.Length > 4) { LoadMothed_EnableResetButton(); } } }; } /// /// 更改密码可见性 /// void LoadEvent_ChangeTextVisble() { //密码文本可见性变化 btnVisiblePassword.MouseUpEventHandler += (sender, e) => { btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected; etPassword.SecureTextEntry = !btnVisiblePassword.IsSelected; }; //重复密码文本可见性变化 btnRepeatVisiblePassword.MouseUpEventHandler += (sender, e) => { btnRepeatVisiblePassword.IsSelected = !btnRepeatVisiblePassword.IsSelected; etRepeatPassword.SecureTextEntry = !btnRepeatVisiblePassword.IsSelected; }; } /// /// 获取验证码 /// void LoadEvent_GetVerificationCode() { EventHandler eventHandler = (sender, e) => { var account = etAccount.Text.Trim(); if ((sender as Button).IsSelected) { //短信发送间隔60s (sender as Button).IsSelected = false; etVerificationCode.Foucs = true; //获取验证码 int time = 60; new Thread(() => { while (time > 0) { time--; Application.RunOnMainThread(() => { (sender as Button).Text = time.ToString() + "s"; }); Thread.Sleep(1000); } Application.RunOnMainThread(() => { //回复获取短信按钮事件 (sender as Button).IsSelected = true; (sender as Button).TextID = StringId.GetVerificationCode; }); }){ IsBackground = true}.Start(); new Thread(() => { var result = pm.SendSms(account); if (result.StateCode.ToUpper() == "SUCCESS") { } else { string tipString = "Server error"; switch (result.StateCode) { case "Exist": tipString = Language.StringByID(StringId.AccountAlreadyExists); break; case "SendFail": tipString = Language.StringByID(StringId.FailedToSendVerificationCode); break; case "AccountNoExists": tipString = Language.StringByID(StringId.AccountNotExist); break; case "Self:Net_Error": tipString = Language.StringByID(StringId.NetworkAnomaly); break; } Application.RunOnMainThread(() => { new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = tipString }.Show(bodyView); }); } }) { IsBackground = true }.Start(); } }; btnGetVerificationCode_Mail.MouseUpEventHandler = eventHandler; btnGetVerificationCode_Phone.MouseUpEventHandler = eventHandler; } /// /// 加载方式按钮事件 /// void LoadEvent_Reset() { btnReset.MouseUpEventHandler += (sender, e) => { if (btnReset.IsSelected) { //创建修改密码线程 var loginThread = LoadMothed_ResetThread(); waitPage = new Loading(); new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage); } }; } /// /// 加载重置密码方法 /// Thread LoadMothed_ResetThread() { string account = etAccount.Text.Trim(); string password = etPassword.Text.Trim(); string repeatPassword = etRepeatPassword.Text.Trim(); string verCode = etVerificationCode.Text.Trim(); int countryIndex = 0; try { countryIndex = Convert.ToInt32(btnGlobalRoaming.Text.Trim().Remove('+')); } catch { } return new Thread(() => { var verResult = pm.ValidatorCode(account, verCode, countryIndex); if (verResult.StateCode.ToUpper() == "SUCCESS") { var resetResult = pm.ResetPassword(account, password, repeatPassword, countryIndex); if (resetResult.StateCode.ToUpper() == "SUCCESS") { Application.RunOnMainThread(() => { LoadEvent_AutoLogin(); callbackAction?.Invoke(account); }); } else { string erorrInfo = ""; switch (resetResult.StateCode) { case "PwdNoConfirm"://两次输入的密码不一致 erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword); break; case "AccountNoExists"://两次输入的密码不一致 erorrInfo = Language.StringByID(StringId.AccountNotExist); break; default: erorrInfo = "Server error"; break; } Application.RunOnMainThread(() => { waitPage.Hide(); new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = erorrInfo, }.Show(bodyView); }); } } else { string erorrInfo = ""; switch (verResult.StateCode) { case "ValidCodeAndPhoneNoEqual"://验证码错误 erorrInfo = Language.StringByID(StringId.VerificationCodeWrong); Application.RunOnMainThread(() => { btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2); }); break; case "NoRecord": erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode); Application.RunOnMainThread(() => { btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2); }); break; default: erorrInfo = "Server error"; break; } Application.RunOnMainThread(() => { waitPage.Hide(); new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = erorrInfo, }.Show(bodyView); }); } }); } /// /// 使能修改确定按钮 /// void LoadMothed_EnableResetButton() { if (!string.IsNullOrEmpty(etAccount.Text) && !string.IsNullOrEmpty(etPassword.Text) && !string.IsNullOrEmpty(etVerificationCode.Text) && (etPassword.Text.Trim() == etRepeatPassword.Text.Trim())) { btnReset.IsSelected = true; } else { btnReset.IsSelected = false; } } /// /// 住宅成功之后自动登录 /// void LoadEvent_AutoLogin() { Dialog dialog = new Dialog(); FrameLayout frame = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(198), Width = Application.GetRealWidth(288), Height = Application.GetRealHeight(206), BackgroundColor = CSS_Color.MainBackgroundColor, Radius = (uint)Application.GetRealWidth(12), BorderWidth = 0, BorderColor = 0x00000000, }; dialog.AddChidren(frame); Button btnAccountText = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(40), Height = Application.GetRealHeight(17 + 14 + 14), IsMoreLines = true, TextAlignment = TextAlignment.Center, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, //Text = "s是生生世世", }; frame.AddChidren(btnAccountText); Button btnTipRegisterSuccess = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(123), Height = Application.GetRealHeight(30), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.PasswordChangeSuccessfully, }; frame.AddChidren(btnTipRegisterSuccess); Button btnAutoLoginTip = new Button() { Gravity = Gravity.CenterHorizontal, Y = btnTipRegisterSuccess.Bottom, Height = Application.GetRealHeight(17 + 8), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextID = StringId.AutomaticallyLogin, }; //frame.AddChidren(btnAutoLoginTip); Button btnHeadImage = new Button() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(150), Width = Application.GetRealWidth(84), Height = Application.GetRealWidth(84), Radius = (uint)Application.GetRealWidth(42), BorderColor = 0x00000000, BorderWidth = 0, UnSelectedImagePath = "LoginIcon/2.png", }; dialog.AddChidren(btnHeadImage); dialog.Show(); new Thread(() => { Thread.Sleep(1500); Application.RunOnMainThread(() => { dialog.Close(); this.Close(); }); }) { IsBackground = true }.Start(); } } }