using System; using Shared.Common; using Shared.Phone.Device.CommonForm; namespace Shared.Phone.Login { public class AccountRegister : FrameLayout { #region ◆ 变量____________________________ /// /// 手机邮箱 /// private PhoneEmailForm phoneEmailForm; /// /// phoneRowForm /// private PhoneRowForm phoneRow; /// /// emailRow /// private EmailRowForm emailRow; /// /// pwdRow /// private PwdRowForm pwdRow; /// /// pwdComfireRow /// private PwdRowForm pwdComfireRow; /// /// CodeForRegisterRowForm /// private CodeForRegisterRowForm codeRow; /// /// bodyFrameLayout /// private FrameLayout bodyFrameLayout; /// /// 账号验证码fl /// private FrameLayout accountCodeFL; /// /// 注册 /// private Button registerBtn; /// /// 账号登录 /// private Button loginByAccountPWDBtn; /// /// 登录错误提示按钮 /// private Button errorBtn; /// /// 账号 /// private string account = string.Empty; /// /// OpenID /// public string OpenID; #endregion #region ◆ 构造方法_________________________ public AccountRegister() { CommonPage.Instance.IsDrawerLockMode = true; BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor; Tag = "Register"; } #endregion #region ◆ 显示界面_________________________ /// /// show /// public void Show() { //AddTop AddTopFL(); //AddBody AddBodyView(); //bind BindEvent(); } #endregion #region ◆ 添加____________________________ /// /// AddTop /// private void AddTopFL() { var top = new Device.CommonForm.TopFrameLayout(); AddChidren(top); top.InitTopview(); top.SetTopTitle(Language.StringByID(R.MyInternationalizationString.Register)); top.backButton.MouseUpEventHandler += (sender, e) => { RemoveFromParent(); }; } /// /// AddBodyView /// private void AddBodyView() { bodyFrameLayout = new FrameLayout() { Y = Application.GetRealHeight(184), Height = Application.GetRealHeight(1737), BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor, }; AddChidren(bodyFrameLayout); phoneEmailForm = new PhoneEmailForm(); phoneEmailForm.Init(bodyFrameLayout, 127); phoneEmailForm.SetSelectedColor(ZigbeeColor.Current.GXCButtonBlackSelectedColor); accountCodeFL = new FrameLayout() { Y = Application.GetRealHeight(334), Height = Application.GetRealHeight(852), Width = Application.GetRealWidth(942), Gravity = Gravity.CenterHorizontal, BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor, Radius = (uint)Application.GetRealHeight(17) }; bodyFrameLayout.AddChidren(accountCodeFL); AddPhoneOrEmailFL(accountCodeFL, "Phone"); //错误提示Btn errorBtn = new Button() { X = Application.GetRealWidth(127), Y = Application.GetRealHeight(1060), Width = Application.GetRealWidth(700), Height = Application.GetRealHeight(58), TextColor = ZigbeeColor.Current.GXCTextRed, TextAlignment = TextAlignment.CenterLeft, TextSize = CommonFormResouce.TextSize, IsBold = true }; bodyFrameLayout.AddChidren(errorBtn); registerBtn = new Button() { Y = Application.GetRealHeight(1281), Width = Application.GetRealWidth(688), Height = Application.GetRealHeight(127), Gravity = Gravity.CenterHorizontal, TextID = R.MyInternationalizationString.Register, TextColor = ZigbeeColor.Current.GXCTextGrayColor, SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor, SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonBlackSelectedColor, BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor, Radius = (uint)Application.GetRealHeight(127 / 2), Enable = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text), IsSelected = !string.IsNullOrEmpty(codeRow.VerificationCodeET?.Text), TextSize = 16, IsBold = true, }; bodyFrameLayout.AddChidren(registerBtn); loginByAccountPWDBtn = new Button() { Y = registerBtn.Bottom + Application.GetRealHeight(50), Width = Application.GetRealWidth(400), Height = Application.GetRealHeight(58), TextID = R.MyInternationalizationString.LoginByAccountPWD_1, TextColor = ZigbeeColor.Current.GXCTextGrayColor, TextSize = CommonFormResouce.loginTextSize, Gravity=Gravity.CenterHorizontal }; bodyFrameLayout.AddChidren(loginByAccountPWDBtn); } #endregion #region ◆ 选择事件_________________________ /// /// phone/email 选择 /// /// /// private void SelectPhoneOrEmail_MouseUpEvent(object sender, MouseEventArgs mouseEventArgs) { phoneEmailForm.SelectedPhone.IsSelected = phoneEmailForm.SelectedEmail.IsSelected = false; phoneEmailForm.SelectedPhone.IsBold = phoneEmailForm.SelectedEmail.IsBold = false; registerBtn.Enable = registerBtn.IsSelected = false; (sender as Button).IsSelected = (sender as Button).IsBold = true; account = string.Empty; errorBtn.Text = string.Empty; if ((sender as Button).Tag.ToString() == "Phone") { AddPhoneOrEmailFL(accountCodeFL, "Phone"); } else { AddPhoneOrEmailFL(accountCodeFL, "Email"); } } /// /// AddPhoneOrEmailFL /// /// /// private void AddPhoneOrEmailFL(FrameLayout accountCodeFrameLayout, string phoneOrEmail) { accountCodeFrameLayout.RemoveAll(); if (phoneOrEmail == "Phone") { phoneRow = new PhoneRowForm(); phoneRow.Init(accountCodeFrameLayout, this, this.account, 29, 29); phoneRow.AccountET.TextChangeEventHandler += Account_TextChange; } else { emailRow = new EmailRowForm(); emailRow.Init(accountCodeFrameLayout, this.account, 29, 29); emailRow.AccountET.TextChangeEventHandler += Account_TextChange; } pwdRow = new PwdRowForm(); pwdRow.Init(accountCodeFrameLayout, 29, 196); pwdRow.PasswrodET.TextChangeEventHandler += Code_TextChange; pwdComfireRow = new PwdRowForm(); pwdComfireRow.Init(accountCodeFrameLayout, 29, 363); pwdComfireRow.PasswrodET.TextChangeEventHandler += Code_TextChange; pwdComfireRow.SetPlaceholdText(Language.StringByID(R.MyInternationalizationString.PleaseComfirePWD)); codeRow = new CodeForRegisterRowForm(); codeRow.Init(accountCodeFrameLayout, 29, 530); codeRow.VerificationCodeET.TextChangeEventHandler += Code_TextChange; codeRow.SendCodeBtn.ButtonClickEvent += SendCode_MouseUpEventAsync; } #endregion #region ◆ 绑定事件_________________________ /// /// 绑定按钮事件 /// private void BindEvent() { //选择手机邮箱 phoneEmailForm.SelectedPhone.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; phoneEmailForm.SelectedEmail.MouseUpEventHandler += SelectPhoneOrEmail_MouseUpEvent; registerBtn.MouseUpEventHandler += Register; loginByAccountPWDBtn.MouseUpEventHandler += LoginByPWD; codeRow.VerificationCodeET.TextChangeEventHandler += Code_TextChange; } #endregion #region ◆ 注册事件_________________________ //// /// 注册 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void Register(object sender, MouseEventArgs mouseEventArgs) { if (CheckAccount(account) == false) { return; } if (pwdRow.PasswrodET.Text.Trim() != pwdComfireRow.PasswrodET.Text.Trim()) { errorBtn.TextID = R.MyInternationalizationString.TwoPasswordInconsistency; return; } if (AccountLogic.Instance.CheckPwdLength(pwdRow.PasswrodET.Text.Trim()) == false) { errorBtn.TextID = R.MyInternationalizationString.ThePWDLengthError; return; } CommonPage.Loading.Start(); try { var reqDto = new SendDataToServer.RegisterAccountObj() { Account = account, Password = pwdRow.PasswrodET.Text.Trim(), EnterPassword = pwdComfireRow.PasswrodET.Text.Trim(), Language = CommonPage.ZigBeeLanguage, Code = codeRow.VerificationCodeET.Text.Trim(), RegisterSoruce = CommonPage.RegisterSoruceFromZIGBEE, AreaCode = int.Parse(CommonPage.PhoneZoneStr) }; //验证验证码 var requestRevertObj = CommonFormResouce.Register(reqDto); if (requestRevertObj == null) { CommonPage.Instance.FailureToServer(); return; } var stateCodeStr = requestRevertObj.StateCode.ToUpper(); if (stateCodeStr == "SUCCESS") { var registerSuccess = new AccountRegisterSuccess(); CommonPage.Instance.AddChidren(registerSuccess); registerSuccess.ShowForm(account, pwdRow.PasswrodET.Text.Trim(), OpenID); } else if (stateCodeStr == "EXIST") { //已注册 errorBtn.TextID = R.MyInternationalizationString.AccountHasBeenRegistered; } else if (stateCodeStr == "PARAMETEROREMPTY") { //提供的参数错误 errorBtn.TextID = R.MyInternationalizationString.PARAMETEROREMPTY; } else if (stateCodeStr == "PWDNOCONFIRM") { //两次密码不一样 errorBtn.TextID = R.MyInternationalizationString.TwoPasswordInconsistency; } else if (stateCodeStr == "VALIDCODEANDPHONENOEQUAL") { //验证码错误 errorBtn.TextID = R.MyInternationalizationString.VALIDCODEANDPHONENOEQUAL; } else if (stateCodeStr == "NORECORD") { errorBtn.TextID = R.MyInternationalizationString.NORECORD; } else { errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; } } catch { errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; } finally { CommonPage.Loading.Hide(); } } #endregion #region ◆ 密码登录_________________________ /// /// 通过密码登录 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void LoginByPWD(object sender, MouseEventArgs mouseEventArgs) { this.RemoveFromParent(); } #endregion #region ◆ 账号、验证码监听__________________ /// /// 账号监听 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void Account_TextChange(object sender, string mouseEventArgs) { errorBtn.Text = string.Empty; if ((sender as EditText).Text.Trim().Length > 0) { if (codeRow.SendCodeBtn.CanClick == false) { codeRow.SendCodeBtn.CanClick = true; codeRow.SendCodeBtn.BackgroundColor = 0xFFFC744B; } } else { codeRow.SendCodeBtn.CanClick = false; codeRow.SendCodeBtn.BackgroundColor = 0xFFFEBCA9; } account = (sender as EditText).Text.Trim(); } /// /// code监听事件 /// /// Sender. /// The ${ParameterType} instance containing the event data. private void Code_TextChange(object sender, string mouseEventArgs) { errorBtn.Text = string.Empty; if (codeRow.VerificationCodeET.Text.Trim().Length > 0 && account.Trim().Length > 0 && pwdRow.PasswrodET.Text.Trim().Length > 0 && pwdComfireRow.PasswrodET.Text.Trim().Length > 0) { registerBtn.Enable = registerBtn.IsSelected = true; } else { registerBtn.Enable = registerBtn.IsSelected = false; } } #endregion #region ◆ 发送验证码________________________ /// /// 发送验证码 /// /// /// private void SendCode_MouseUpEventAsync(object sender, MouseEventArgs mouseEventArgs) { if (CheckAccount(account) == false) { return; } //先判断2次密码输入是否一致 if (pwdRow.PasswrodET.Text.Trim() != pwdComfireRow.PasswrodET.Text.Trim()) { errorBtn.TextID = R.MyInternationalizationString.TwoPasswordInconsistency; return; } if (AccountLogic.Instance.CheckPwdLength(pwdRow.PasswrodET.Text.Trim()) == false) { errorBtn.TextID = R.MyInternationalizationString.ThePWDLengthError; return; } CommonPage.Loading.Start(); (sender as UserCenter.NormalViewControl).CanClick = false; try { int companyInt = 0; if (CommonPage.PhoneZoneStr == "86") { companyInt = CommonPage.Company; } else { companyInt = CommonPage.CompanyForINTERNETION; } var reqDto = new SendDataToServer.RegisterSendVerCodeObj() { Account = account, Company = companyInt, AreaCode = int.Parse(CommonPage.PhoneZoneStr), Language = CommonPage.ZigBeeLanguage }; var requestRevertObj = CommonFormResouce.RegisterSendVerCode(reqDto); if (requestRevertObj == null) { CommonPage.Instance.FailureToServer(); (sender as UserCenter.NormalViewControl).CanClick = true; return; } var stateCodeStr = requestRevertObj.StateCode.ToUpper(); if (stateCodeStr == "SUCCESS") { codeRow.TimeBegin(); var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.SendVerificationCodeSuccess), Language.StringByID(R.MyInternationalizationString.Confrim)); alert.Show(); return; } if (stateCodeStr == "PARAMETEROREMPTY") { //提供的参数错误 errorBtn.TextID = R.MyInternationalizationString.PARAMETEROREMPTY; } else if (stateCodeStr == "SENDFAIL") { //验证码发送失败 errorBtn.TextID = R.MyInternationalizationString.SENDFAIL; } else if (stateCodeStr == "EXIST") { //账号存在 errorBtn.TextID = R.MyInternationalizationString.AccountHasBeenRegistered; } else { errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; } } catch { errorBtn.TextID = R.MyInternationalizationString.RequestServerFailed; } finally { CommonPage.Loading.Hide(); } } /// /// CheckAccount /// /// /// private bool CheckAccount(string accountStr) { errorBtn.Text = string.Empty; if (phoneEmailForm.SelectedEmail.IsSelected) { if (AccountLogic.Instance.CheckEmail(accountStr) == false) { errorBtn.TextID = R.MyInternationalizationString.TheEmailError; return false; } } else { if (AccountLogic.Instance.CheckPhoneWithZone(accountStr, CommonPage.PhoneZoneStr) == false) { errorBtn.TextID = R.MyInternationalizationString.ThePhoneError; return false; } } return true; } #endregion } }