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 RegisterPage { /// /// 加载事件列表 /// void LoadEventList() { LoadPage_SwitchRegisterType(); LoadEvent_EditTextFcousChange(); LoadEvent_ChangeTextVisble(); LoadEvent_GetVerificationCode(); LoadEvent_Register(); LoadEvent_LimtPasswordLength(); LoadEvent_TextChange(); //var areaCodeList = pm.GetAreaCode(); } /// /// 加载文本变化事件 /// 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 LoadPage_SwitchRegisterType() { //选择手机注册 btnPhoneLogin.MouseUpEventHandler = (sender, e) => { if(registerType == 0) { return; } etAccount.Text = registerPhone; etPassword.Text = ""; etRepeatPassword.Text = ""; #region 切换选中按钮 btnGetVerificationCode_Mail.Visible = false; btnGetVerificationCode_Phone.Visible = true; 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.PlsEntryPhoneNumber); #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_Mail.Visible = true; btnGetVerificationCode_Phone.Visible = false; 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_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 (etAccount.Text.Trim().Length > 0) { if (registerType == 0) { Regex reg = new Regex(@"^[1]+\d{10}"); 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); btnGetVerificationCode_Phone.IsSelected = false; 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; } //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword && !string.IsNullOrEmpty(etVerificationCode.Text.Trim())) { btnRegister.IsSelected = true; } } } else if (registerType == 1) { //邮箱注册-验证邮箱是否正确 var reg = new Regex("^\\s*([A-Za-z0-9_-]+(\\.\\w+)*@(\\w+\\.)+\\w{2,5})\\s*$"); //Regex.IsMatch(etAccount.Text.Trim(), "([a-zA-Z0-9_\\.\\-])+\\@(([a-zA-Z0-9\\-])+\\.)+([a-zA-Z0-9]{2,5})+"); var mFalg = reg.Match(etAccount.Text.Trim()); if (!mFalg.Success) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); btnGetVerificationCode_Mail.IsSelected = false; 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; } //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword && string.IsNullOrEmpty(etVerificationCode.Text.Trim())) { btnRegister.IsSelected = true; } } } } if(accountType ==0) { registerPhone = etAccount.Text.Trim(); } else { registerEmail = etAccount.Text.Trim(); } } }; //密码文本框焦点变化事件 etPassword.FoucsChanged += (sender, e) => { if (etPassword.Foucs) { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.MainColor; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); } else { if (etPassword.Text.Length == 0) { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnPasswordViewBottomLine.Height = Application.GetRealHeight(1); return; } //需要输入6位以上的密码 if (etPassword.Text.Length < 6 || etPassword.Text.Length > 13) { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.PlsRegisterPassword) }.Show(bodyView); } else { btnPasswordViewBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnPasswordViewBottomLine.Height = Application.GetRealHeight(1); } } }; //确认密码文本框焦点变化事件 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().Length > 5) { 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 { ValidPassword = true; //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword && !string.IsNullOrEmpty(etVerificationCode.Text.Trim())) { btnRegister.IsSelected = true; } } } } }; //验证码文本框焦点变化事件 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 > 1) { //账号有效、密码有效、验证码输入了,才能点击注册 if (ValidPassword) { btnRegister.IsSelected = true; } } } }; } /// /// 限制密码文本库输入长度 /// void LoadEvent_LimtPasswordLength() { etPassword.TextChangeEventHandler = (sender, e) => { if (etPassword.Text.Length > 16) { etPassword.Text = etPassword.Text.Remove(15); } }; etRepeatPassword.TextChangeEventHandler = (sender, e) => { if (etRepeatPassword.Text.Length > 16) { etRepeatPassword.Text = etRepeatPassword.Text.Remove(15); } }; } /// /// 更改密码可见性 /// 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) => { if ((sender as Button).IsSelected) { (sender as Button).IsSelected = false; string account = etAccount.Text.Trim(); //短信发送间隔60s 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.GetRegisterVerCode(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 "Self:Net_Error": tipString = Language.StringByID(StringId.NetworkAnomaly); break; case "ParameterOrEmpty": if (registerType == 0) tipString = Language.StringByID(StringId.PlsEntryCorrectMobilNeumber); else tipString = Language.StringByID(StringId.PlsEntryCorrectEmailAddress); break; } Application.RunOnMainThread(() => { new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = tipString }.Show(bodyView); }); } }) { IsBackground = true }.Start(); } }; btnGetVerificationCode_Phone.MouseDownEventHandler = eventHandler; btnGetVerificationCode_Mail.MouseDownEventHandler = eventHandler; } /// /// 加载注册按钮事件 /// void LoadEvent_Register() { btnRegister.MouseUpEventHandler = (sender, e) => { if(etPassword.Text.Trim().Length > 13 || etPassword.Text.Trim().Length<6) { new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.PlsRegisterPassword) }.Show(bodyView); return; } if (btnRegister.IsSelected) { waitPage = new Loading(); new PublicAssmebly().LoadPage_WaitPage(LoadMethod_RegisterThread(), bodyView, waitPage); } }; } /// /// 加载注册方法 /// Thread LoadMethod_RegisterThread() { string account = etAccount.Text.Trim(); string password = etPassword.Text.Trim(); string entryPassword = etRepeatPassword.Text.Trim(); string verCode = etVerificationCode.Text.Trim(); return new Thread(() => { try { //校验验证码/注册账号 var validateSmsResult = pm.ValidataCodeAndRegister(account, password, entryPassword, verCode, 86); //验证码校验成功 if (validateSmsResult.StateCode.ToUpper() == "SUCCESS") { //注册成功 //执行回调事件 //callbackAction?.Invoke(account); Application.RunOnMainThread(() => { this.Close(); LoadEvent_AutoLogin(account, password); }); } else//注册失败 { string erorrInfo = ""; switch (validateSmsResult.StateCode) { case "Exist": erorrInfo = Language.StringByID(StringId.AccountAlreadyExists); break; case "PwdNoConfirm": erorrInfo = Language.StringByID(StringId.IncorrectRepeatPassword); break; case "ValidCodeAndPhoneNoEqual": erorrInfo = Language.StringByID(StringId.VerificationCodeWrong); break; case "NoRecord": erorrInfo = Language.StringByID(StringId.PlsGetTheVerificationCode); Application.RunOnMainThread(() => { btnVerificationCodeViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnVerificationCodeViewBottomLine.Height = Application.GetRealHeight(2); }); break; default: erorrInfo = Language.StringByID(StringId.RegistrationFailedPleaseTryAgain); break; } Application.RunOnMainThread(() => { new Tip() { CloseTime = 3, Direction = AMPopTipDirection.None, Text = erorrInfo, }.Show(bodyView); }); } } catch (Exception ex) { MainPage.Log("Exception 1 : " + ex.Message); } finally { Application.RunOnMainThread(() => { waitPage.Hide(); }); } }); } } }