using System;
|
using Shared.Common;
|
using Shared.Phone.Device.CommonForm;
|
|
namespace Shared.Phone.Login
|
{
|
public class AccountRegister : FrameLayout
|
{
|
#region ◆ 变量____________________________
|
/// <summary>
|
/// 手机邮箱
|
/// </summary>
|
private PhoneEmailForm phoneEmailForm;
|
/// <summary>
|
/// phoneRowForm
|
/// </summary>
|
private PhoneRowForm phoneRow;
|
/// <summary>
|
/// emailRow
|
/// </summary>
|
private EmailRowForm emailRow;
|
/// <summary>
|
/// pwdRow
|
/// </summary>
|
private PwdRowForm pwdRow;
|
/// <summary>
|
/// pwdComfireRow
|
/// </summary>
|
private PwdRowForm pwdComfireRow;
|
/// <summary>
|
/// CodeForRegisterRowForm
|
/// </summary>
|
private CodeForRegisterRowForm codeRow;
|
/// <summary>
|
/// bodyFrameLayout
|
/// </summary>
|
private FrameLayout bodyFrameLayout;
|
/// <summary>
|
/// 账号验证码fl
|
/// </summary>
|
private FrameLayout accountCodeFL;
|
/// <summary>
|
/// 注册
|
/// </summary>
|
private Button registerBtn;
|
/// <summary>
|
/// 账号登录
|
/// </summary>
|
private Button loginByAccountPWDBtn;
|
/// <summary>
|
/// 登录错误提示按钮
|
/// </summary>
|
private Button errorBtn;
|
/// <summary>
|
/// 账号
|
/// </summary>
|
private string account = string.Empty;
|
/// <summary>
|
/// OpenID
|
/// </summary>
|
public string OpenID;
|
|
#endregion
|
|
#region ◆ 构造方法_________________________
|
public AccountRegister()
|
{
|
CommonPage.Instance.IsDrawerLockMode = true;
|
BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
|
Tag = "Register";
|
}
|
#endregion
|
|
#region ◆ 显示界面_________________________
|
/// <summary>
|
/// show
|
/// </summary>
|
public void Show()
|
{
|
//AddTop
|
AddTopFL();
|
//AddBody
|
AddBodyView();
|
|
//bind
|
BindEvent();
|
}
|
|
#endregion
|
|
#region ◆ 添加____________________________
|
/// <summary>
|
/// AddTop
|
/// </summary>
|
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();
|
};
|
|
}
|
/// <summary>
|
/// AddBodyView
|
/// </summary>
|
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 ◆ 选择事件_________________________
|
/// <summary>
|
/// phone/email 选择
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="mouseEventArgs"></param>
|
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");
|
}
|
}
|
|
/// <summary>
|
/// AddPhoneOrEmailFL
|
/// </summary>
|
/// <param name="accountCodeFrameLayout"></param>
|
/// <param name="phoneOrEmail"></param>
|
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 ◆ 绑定事件_________________________
|
|
/// <summary>
|
/// 绑定按钮事件
|
/// </summary>
|
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 ◆ 注册事件_________________________
|
//// <summary>
|
/// 注册
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
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 ◆ 密码登录_________________________
|
/// <summary>
|
/// 通过密码登录
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
private void LoginByPWD(object sender, MouseEventArgs mouseEventArgs)
|
{
|
this.RemoveFromParent();
|
}
|
|
#endregion
|
|
#region ◆ 账号、验证码监听__________________
|
/// <summary>
|
/// 账号监听
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
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();
|
}
|
|
/// <summary>
|
/// code监听事件
|
/// </summary>
|
/// <param name="sender">Sender.</param>
|
/// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
|
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 ◆ 发送验证码________________________
|
/// <summary>
|
/// 发送验证码
|
/// </summary>
|
/// <param name="sender"></param>
|
/// <param name="mouseEventArgs"></param>
|
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();
|
}
|
}
|
|
/// <summary>
|
/// CheckAccount
|
/// </summary>
|
/// <param name="accountStr"></param>
|
/// <returns></returns>
|
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
|
}
|
}
|