using System; using System.Threading; using HDL_ON.DAL.Server; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI.UI1Login { public partial class LoginPage { /// /// 加载事件 /// void LoadEventList() { LoadPage_SwitchLoginType(); LoadMethod_VisiblePassword(); LoadPage_SwitchLoginMode(); LoadMethod_LoginMethod(); LoadPage_SelectionEditText(); LoadPage_RegisterPage(); GetVerificationCode(); } /// /// 点击按钮获取验证码 /// void GetVerificationCode() { btnGetVerificationCode.MouseUpEventHandler += (sender, e) => { #if DEBUG etAccount.Text = "17576024298"; #endif string phoneNumber = etAccount.Text.Trim(); btnGetVerificationCode.Enable = false; btnGetVerificationCode.TextColor = CSS_Color.PromptingColor1; int time = 60; new Thread(() => { while (time != 0) { time--; Application.RunOnMainThread(() => { btnGetVerificationCode.Text = time.ToString() + "s"; }); Thread.Sleep(1000); } }) { IsBackground = true }.Start(); //检查手机是否已经被注册 var checkPhoneResult = pm.IsExistingAccount(etAccount.Text.Trim()); //手机已经被注册 if (checkPhoneResult.StateCode == HttpRequesResult.SUCCESS.ToString()) { //获取验证码 pm.GetPhoneVerificationCode(phoneNumber,MainPage.Company); } }; } /// /// 切换登录类型 /// void LoadPage_SwitchLoginType() { //选择手机登录 btnPhoneLogin.MouseUpEventHandler += (sender, e) => { #region 切换选中按钮 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(R.InternationalizationString.PlsEntryCorrectMobilNeumber); #endregion #region 切换登录方式及图标 logintType = 0; if (btnAccountIcon.Parent != null) { btnAccountIcon.RemoveFromParent(); } accountView.AddChidren(btnGlobalRoaming); //显示验证码登录方式,手机登录有验证码登录 btnSwitchLoginMode.Visible = true; #endregion }; //选择邮箱登录 btnEmailLogin.MouseUpEventHandler += (sender, e) => { #region 切换选中按钮 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(R.InternationalizationString.PlsEntryEmailAddress); #endregion #region 切换登录类型及图标 logintType = 1; if (btnGlobalRoaming.Parent != null) { btnGlobalRoaming.RemoveFromParent(); } accountView.AddChidren(btnAccountIcon); #endregion //邮箱只有密码登录模式 logintMode = 0; //密码登录 btnSwitchLoginMode.TextID = R.InternationalizationString.VerificationCodeLogin; passwordView.AddChidren(btnVisiblePassword); passwordView.AddChidren(btnDividingLineVertical_PasswordView2); passwordView.AddChidren(btnForgetPassword); btnPasswordIcon.IsSelected = false; if (btnGetVerificationCode.Parent != null) { btnGetVerificationCode.RemoveFromParent(); } //隐藏密码 etPassword.SecureTextEntry = true; //隐藏验证码登录方式,邮箱登录没有验证码登录 btnSwitchLoginMode.Visible = false; }; } /// /// 切换登录方式 /// 验证码/密码 /// void LoadPage_SwitchLoginMode() { btnSwitchLoginMode.MouseUpEventHandler += (sender, e) => { logintMode = logintMode == 0 ? 1 : 0; //清除密码框文本数据 etPassword.Text = ""; //密码登录 if (logintMode == 0) { btnSwitchLoginMode.TextID = R.InternationalizationString.VerificationCodeLogin; passwordView.AddChidren(btnVisiblePassword); passwordView.AddChidren(btnDividingLineVertical_PasswordView2); passwordView.AddChidren(btnForgetPassword); btnPasswordIcon.IsSelected = false; if (btnGetVerificationCode.Parent != null) { btnGetVerificationCode.RemoveFromParent(); } //隐藏密码 etPassword.SecureTextEntry = true; } //验证码登录 else if (logintMode == 1) { btnSwitchLoginMode.TextID = R.InternationalizationString.PasswordLogin; passwordView.AddChidren(btnGetVerificationCode); btnPasswordIcon.IsSelected = true; if (btnVisiblePassword.Parent != null) { btnVisiblePassword.RemoveFromParent(); } if (btnDividingLineVertical_PasswordView2.Parent != null) { btnDividingLineVertical_PasswordView2.RemoveFromParent(); } if (btnForgetPassword.Parent != null) { btnForgetPassword.RemoveFromParent(); } //验证码不需要隐藏 etPassword.SecureTextEntry = false; } }; } /// /// 文本框选中事件 /// void LoadPage_SelectionEditText() { //当焦点在账号文本框时,文本框底线点亮 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); } }; //当焦点在密码文本框时,文本框底线点亮 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); } }; //当焦点在账号文本框时,点击键盘回撤按键,触发的事件 etAccount.EditorEnterAction += (obj) => { etPassword.Foucs = true; }; //当焦点在密码文本框时,点击键盘回撤按键,触发的事件 etPassword.EditorEnterAction += (obj) => { etPassword.Foucs = false; }; } /// /// 隐藏/显示密码 /// void LoadMethod_VisiblePassword() { btnVisiblePassword.MouseUpEventHandler += (sender, e) => { btnVisiblePassword.IsSelected = !btnVisiblePassword.IsSelected; if (btnVisiblePassword.IsSelected) { etPassword.SecureTextEntry = false; } else { etPassword.SecureTextEntry = true; } }; } /// /// 登录按钮点击事件 /// void LoadMethod_LoginMethod() { btnLogin.MouseUpEventHandler += (sender, e) => { if (btnLogin.IsSelected) { account = etAccount.Text.Trim(); password = etPassword.Text.Trim(); //创建登录线程 var loginThread = LoadMethod_LoginThread(); LoadPage_WaitPage(loginThread); } }; #region 当账号密码都输入时,才能点击登录按钮 etAccount.TextChangeEventHandler += (sender, e) => { if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0) { btnLogin.IsSelected = true; } else { btnLogin.IsSelected = false; } }; etPassword.TextChangeEventHandler += (sender, e) => { if (etAccount.Text.Trim().Length > 0 && etPassword.Text.Trim().Length > 0) { btnLogin.IsSelected = true; } else { btnLogin.IsSelected = false; } }; #endregion } /// /// 加载等待界面 /// void LoadPage_WaitPage(Thread thread) { waitPage = new Loading(); bodyView.AddChidren(waitPage); waitPage.Start(Language.StringByID(R.InternationalizationString.PleaseWait)); var showedTime = DateTime.Now; //如果等待事件过长,可以允许用户取消当前操作 waitPage.MouseUpEventHandler += (sender, e) => { if (showedTime.AddSeconds(30) > DateTime.Now) { waitPage.RemoveFromParent(); waitPage = null; thread.Abort(); } }; thread.Start(); } /// /// 加载登录线程 /// Thread LoadMethod_LoginThread() { var loginThread = new Thread(() => { try { var loginResult = pm.LoginByPassword(account,password,MainPage.Company); Application.RunOnMainThread(() => { waitPage.RemoveFromParent(); waitPage = null; }); //登录成功 if (loginResult.StateCode == HttpRequesResult.SUCCESS.ToString()) { var loginResponseData = Newtonsoft.Json.JsonConvert.DeserializeObject(loginResult.ResponseData.ToString()); //记录用户数据 MainPage.LoginUser = new UserInfo { ID = loginResponseData.UserId, MasterID = loginResponseData.MainUserId, AccountType = loginResponseData.UserType, AccountString = account, Password = password, LastTime = DateTime.Now, SIP_Account = loginResponseData.AllVisionRegisterDevUserNameGuid, }; MainPage.LoginUser.SaveUserInfo(); MainPage.Log("登录成功。"); /* * Wait : 推送注册 */ } //登录失败 else { Application.RunOnMainThread(() => { //提示原因 var tip = new Tip() { Text = loginResult.ErrorInfo, CloseTime = 3, Direction = AMPopTipDirection.None }; tip.Show(bodyView); //if (loginResult.StateCode == HttpRequesResult.LoginFailed_AccountErorr.ToString()) { btnAccountViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnAccountViewBottomLine.Height = Application.GetRealHeight(2); //} //else if (loginResult.StateCode == HttpRequesResult.LoginFailed_PasswordErorr.ToString()) //{ btnPasswordViewBottomLine.BackgroundColor = CSS_Color.AuxiliaryColor2; btnPasswordViewBottomLine.Height = Application.GetRealHeight(2); } }); } } catch (Exception ex) { MainPage.Log($"LoginPage : {ex.Message}"); } }) { IsBackground = true }; return loginThread; } /// /// 加载注册界面 /// void LoadPage_RegisterPage() { btnRegister.MouseUpEventHandler += (sender, e) => { //回调事件 Action callBackAction = (callBackPar_Action) => { try { etAccount.Text = callBackPar_Action; } catch (Exception ex) { MainPage.Log($"login callBackAction : {ex.Message}"); } }; var registerPage = new RegisterPage(callBackAction); registerPage.Show(); registerPage.ShowDialog(); }; } } }