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(); LoadEvent_Server(); //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 (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode)) { btnGetVerificationCode_Phone.IsSelected = false; } else { if (btnGetVerificationCode_Phone.Text == Language.StringByID(StringId.GetVerificationCode)) btnGetVerificationCode_Phone.IsSelected = true; } } else//邮箱注册获取验证码按钮生效条件 { if (!Utlis.CheckEmail(etAccount.Text.Trim())) { 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.IsNumberKeyboardType = true; 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.IsNumberKeyboardType = false; 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) { if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode)) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); btnGetVerificationCode_Phone.IsSelected = false; new Tip() { CloseTime = 1, 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) { //邮箱注册-验证邮箱是否正确 if (!Utlis.CheckEmail(etAccount.Text.Trim())) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); btnGetVerificationCode_Mail.IsSelected = false; new Tip() { CloseTime = 1, 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 = 1, 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 = 1, 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) { //判断是否选择了服务器,选择了才能发送验证码 if (CheckIfSelectServer() == false) return; string account = etAccount.Text.Trim(); int time = 60; new Thread(() => { //1.先检查账号是否注册过 var result = pm.GetRegionByAccount(account); //2.账号不存在,才允许继续注册 if (result.Code == StateCode.ACCOUNT_NOT_EXIST) { //账号不存在 未注册允许发送验证码注册 Application.RunOnMainThread(() => { //短信发送间隔60s (sender as Button).IsSelected = false; }); //2.1 开始倒计时 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(); //2.2 获取验证码 ResponsePackNew resultObj; if (registerType == 1)//邮箱 { resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account); } else { resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account, true, phoneZoneCode); } if (resultObj.Code != StateCode.SUCCESS) { // 提示错误 IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code); } } else if (result.Code.ToUpper() == StateCode.SUCCESS) { //3.提示账号已存在,无法重复注册 Utlis.ShowAlertOnMainThread(Language.StringByID(StringId.AccountAlreadyUse)); } else { //4.提示其它异常错误 IMessageCommon.Current.ShowErrorInfoAlter(result.Code); } }) { IsBackground = true }.Start(); //(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(() => //{ // ResponsePackNew resultObj; // // 获取验证码 // if (registerType == 1)//邮箱 // { // resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account); // } // else // { // resultObj = pm.VerificationCodeSend(VerifyType.REGISTER_USER, account, true, phoneZoneCode); // } // if (resultObj.Code != StateCode.SUCCESS_CODE) // { // // 提示错误 // IMessageCommon.Current.ShowErrorInfoAlter(NewAPI.API_POST_Verification_Send, resultObj.Code); // } //}) //{ 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 = 1, Direction = AMPopTipDirection.None, Text = Language.StringByID(StringId.PlsRegisterPassword) }.Show(bodyView); return; } if (btnRegister.IsSelected) { //判断是否选择了服务器,选择了才能发送验证码 if (CheckIfSelectServer() == false) return; 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 isPhone = registerType == 0; var validateSmsResult = pm.ValidataCodeAndRegister(account, password, verCode, isPhone); if (validateSmsResult.Code == StateCode.SUCCESS) { //注册成功 //执行回调事件 //callbackAction?.Invoke(account); Application.RunOnMainThread(() => { this.Close(); LoadEvent_AutoLogin(account, password); }); } else// 注册失败 { // 提示错误 IMessageCommon.Current.ShowErrorInfoAlter(validateSmsResult.Code); //2020-11-13 待修改 //string erorrInfo = ""; //switch (validateSmsResult.StateCode) //{ // case "Exist": // erorrInfo = Language.StringByID(StringId.AccountAlreadyUse); // 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 = 1, // Direction = AMPopTipDirection.None, // Text = erorrInfo, // }.Show(bodyView); //}); } } catch (Exception ex) { MainPage.Log("Exception 1 : " + ex.Message); } finally { Application.RunOnMainThread(() => { waitPage.Hide(); }); } }); } /// /// 加载服务器选择按钮事件 /// void LoadEvent_Server() { EventHandler eventHandler = (sender, e) => { Action selectAction = () => { //服务器选择过标记为true isSelectServer = true; ShowServerBottomLineState(false); btnServerText.TextColor = CSS_Color.FirstLevelTitleColor; btnServerText.Text = UserInfo.Current.GlobalRegion.regionName; }; new SelectServerDialog(selectAction).LoadPage(); }; btnServerGo.MouseUpEventHandler = eventHandler; btnServerText.MouseUpEventHandler = eventHandler; } /// /// 检测是否选择了服务器 /// /// private bool CheckIfSelectServer() { if (isSelectServer == false) { //请先选择国家/区域 Utlis.ShowTip(Language.StringByID(StringId.PleaseSelectCountryOrRegion)); ShowServerBottomLineState(true); return false; } return true; } /// /// 服务器下划线样式 /// /// void ShowServerBottomLineState(bool isError) { if (isError) { btnServerBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnServerBottomLine.Height = Application.GetRealHeight(2); } else { btnServerBottomLine.BackgroundColor = CSS_Color.DividingLineColor; btnServerBottomLine.Height = Application.GetRealHeight(1); } } } }