using System;
|
using System.Text.RegularExpressions;
|
|
namespace Shared.SimpleControl.Phone
|
{
|
public class ForgotPassword : Dialog
|
{
|
|
PageLayout bodyPageView;
|
|
/// <summary>
|
/// 构造函数
|
/// </summary>
|
public ForgotPassword ()
|
{
|
BackgroundColor = SkinStyle.Current.MainColor;
|
ForgotPasswordShow ();
|
}
|
|
void ForgotPasswordShow ()
|
{
|
#region 标题
|
var topView = new FrameLayout () {
|
Y = Application.GetRealHeight (36),
|
Height = Application.GetRealHeight (90),
|
};
|
AddChidren (topView);
|
|
var title = new Button () {
|
TextAlignment = TextAlignment.Center,
|
Text = "Forgot password?",
|
TextSize = 19,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
topView.AddChidren (title);
|
|
//var logo = new Button () {
|
// Width = Application.GetRealWidth (154),
|
// Height = Application.GetRealHeight (90),
|
// X = Application.GetRealWidth (486),
|
// UnSelectedImagePath = MainPage.LogoString,
|
// Gravity = Gravity.CenterVertical,
|
//};
|
//topView.AddChidren (logo);
|
var back = new Button () {
|
Height = Application.GetRealHeight (90),
|
Width = Application.GetRealWidth (85),
|
UnSelectedImagePath = "Item/Back.png",
|
//SelectedImagePath = "Item/BackSelected.png",
|
Gravity = Gravity.CenterVertical,
|
};
|
topView.AddChidren (back);
|
back.MouseUpEventHandler += (sender, e) => {
|
new AccountLogin ().Show ();
|
Close ();
|
};
|
#endregion
|
|
bodyPageView = new PageLayout () {
|
Width = LayoutParams.MatchParent,
|
Height = Application.GetRealHeight (Application.DesignHeight - 126),
|
Y = topView.Bottom,
|
BackgroundColor = SkinStyle.Current.ViewColor,
|
};
|
|
AddChidren (bodyPageView);
|
|
bodyPageView.PageChange += (sender, e) => {
|
//2020-09-04 修复安卓右滑闪退问题
|
if (e < bodyPageView.ChildrenCount - 1) {
|
bodyPageView.GetChildren (bodyPageView.ChildrenCount - 1).RemoveFromParent ();
|
}
|
};
|
|
|
FrameLayout bodyView = new FrameLayout ();
|
bodyPageView.AddChidren (bodyView);
|
bodyPageView.IsShowPoint = false;
|
|
EmailForgotView (bodyView);
|
}
|
|
/// <summary>
|
/// 邮箱忘记密码页面
|
/// </summary>
|
/// <param name="registrationView"></param>
|
void EmailForgotView (FrameLayout registrationView)
|
{
|
registrationView.RemoveAll ();
|
Button btnEmail = new Button () {
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
Gravity = Gravity.CenterHorizontal,
|
Y = Application.GetRealWidth (20),
|
TextID = R.MyInternationalizationString.EmailAddress,
|
TextAlignment = TextAlignment.CenterLeft,
|
TextSize = 12,
|
TextColor = SkinStyle.Current.TextColor1,
|
};
|
registrationView.AddChidren (btnEmail);
|
|
FrameLayout EmailView = new FrameLayout () {
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
Gravity = Gravity.CenterHorizontal,
|
Y = btnEmail.Bottom,
|
BorderWidth = 1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.BorderColor,
|
//Text = "1270166900@qq.com"
|
};
|
registrationView.AddChidren (EmailView);
|
|
EditText etEmailAddress = new EditText () {
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1,
|
PlaceholderText = Language.StringByID (R.MyInternationalizationString.EmailAddress),
|
PlaceholderTextColor = SkinStyle.Current.PlaceholderTextColor,
|
};
|
EmailView.AddChidren (etEmailAddress);
|
|
Button btnNext = new Button () {
|
Y = EmailView.Bottom + Application.GetRealWidth (20),
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
Gravity = Gravity.CenterHorizontal,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
TextID = R.MyInternationalizationString.Send,
|
TextColor = SkinStyle.Current.TextColor1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 0,
|
TextSize = 18,
|
TextAlignment = TextAlignment.Center,
|
//IsSelected = true
|
};
|
registrationView.AddChidren (btnNext);
|
|
btnNext.MouseDownEventHandler += (sender, e) => {
|
btnNext.IsSelected = true;
|
};
|
|
btnNext.MouseUpEventHandler += (sender, e) => {
|
btnNext.IsSelected = false;
|
string account = etEmailAddress.Text.Trim ();
|
if (!CommonUtlis.Current.CheckEmail (account)) {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PleaseCheckEmailAddressCorrectly),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
//
|
SendVerificationCode (account, false);
|
};
|
|
}
|
|
/// <summary>
|
/// 手机或者邮箱发送验证码并加载对应的 忘记密码页面
|
/// </summary>
|
/// <param name="account">账号 邮箱或者手机号</param>
|
/// <param name="isPhone">是否是手机</param>
|
void SendVerificationCode (string account, bool isPhone = true)
|
{
|
MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load));
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
var requestRevertObj = HttpServerRequest.Current.VerificationCodeSend (VerifyType.FIND_PASSWORD, account);
|
if (requestRevertObj.Code.ToUpper () == StateCode.SUCCESS) {
|
Application.RunOnMainThread (() => {
|
InitSMSView (account, false);
|
bodyPageView.PageIndex = bodyPageView.ChildrenCount - 1;
|
});
|
} else {
|
//提示错误
|
IMessageCommon.Current.ShowErrorInfoAlter (requestRevertObj.Code);
|
}
|
|
} catch {
|
MainPage.FailureToServer ();
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
}
|
|
/// <summary>
|
/// 验证验证码并提交注册
|
/// </summary>
|
/// <param name="mAccount"></param>
|
/// <param name="bPhone"></param>
|
void InitSMSView (string mAccount, bool bPhone = true)
|
{
|
FrameLayout mobileChencView = new FrameLayout ();
|
bodyPageView.AddChidren (mobileChencView);
|
|
Button btnAccount = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = Application.GetRealHeight (20),
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (50),
|
Text = mAccount,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextAlignment = TextAlignment.Center,
|
};
|
mobileChencView.AddChidren (btnAccount);
|
|
Button btnPassword = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = btnAccount.Bottom,
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
TextID = R.MyInternationalizationString.Password,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
mobileChencView.AddChidren (btnPassword);
|
|
EditText etPassword = new EditText () {
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
Gravity = Gravity.CenterHorizontal,
|
Y = btnPassword.Bottom,
|
BorderWidth = 1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.BorderColor,
|
SecureTextEntry = true,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1
|
//Text = "1270166900@qq.com"
|
};
|
mobileChencView.AddChidren (etPassword);
|
|
|
Button btnConfrimPassword = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = etPassword.Bottom,
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
TextID = R.MyInternationalizationString.ConfirmPassword,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
mobileChencView.AddChidren (btnConfrimPassword);
|
|
EditText etConfrimPassword = new EditText () {
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
Gravity = Gravity.CenterHorizontal,
|
Y = btnConfrimPassword.Bottom,
|
BorderWidth = 1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.BorderColor,
|
SecureTextEntry = true,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
mobileChencView.AddChidren (etConfrimPassword);
|
|
Button btnTitle = new Button () {
|
Gravity = Gravity.CenterHorizontal,
|
Y = etConfrimPassword.Bottom,
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
TextID = R.MyInternationalizationString.MobileVerificationCode,
|
TextColor = SkinStyle.Current.TextColor1,
|
TextAlignment = TextAlignment.CenterLeft,
|
};
|
mobileChencView.AddChidren (btnTitle);
|
|
EditText etCode = new EditText () {
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
Gravity = Gravity.CenterHorizontal,
|
Y = btnTitle.Bottom,
|
BorderWidth = 1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.BorderColor,
|
TextAlignment = TextAlignment.Center,
|
TextColor = SkinStyle.Current.TextColor1
|
};
|
mobileChencView.AddChidren (etCode);
|
|
Button btnConfirem = new Button () {
|
Y = etCode.Bottom + Application.GetRealWidth (50),
|
Width = Application.GetRealWidth (500),
|
Height = Application.GetRealWidth (85),
|
Gravity = Gravity.CenterHorizontal,
|
BackgroundColor = SkinStyle.Current.MainColor,
|
SelectedBackgroundColor = SkinStyle.Current.SelectedColor,
|
TextID = R.MyInternationalizationString.Confrim,
|
TextColor = SkinStyle.Current.TextColor1,
|
Radius = 5,
|
BorderColor = SkinStyle.Current.Transparent,
|
BorderWidth = 0,
|
TextSize = 18,
|
TextAlignment = TextAlignment.Center,
|
};
|
mobileChencView.AddChidren (btnConfirem);
|
|
etCode.TextChangeEventHandler += (sender, e) => {
|
if (e.Length > 6) {
|
etCode.Text = e.Remove (6);
|
} else if (e.Length == 6) {
|
//btnConfirem.IsSelected = btnConfirem.Enable = true;
|
} else {
|
//btnConfirem.IsSelected = btnConfirem.Enable = false;
|
}
|
};
|
|
btnConfirem.MouseDownEventHandler += (sender, e) => {
|
btnConfirem.IsSelected = true;
|
};
|
|
btnConfirem.MouseUpEventHandler += (sender, e) => {
|
btnConfirem.IsSelected = false;
|
string passwordText = etPassword.Text.Trim ();
|
string confrimPasswordText = etConfrimPassword.Text.Trim ();
|
//检测密码
|
if (passwordText == "" && confrimPasswordText == "") {
|
new Alert ("", Language.StringByID (R.MyInternationalizationString.PleaseWriteTheCompleteContent), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
} else if (!CommonUtlis.Current.CheckPassword (passwordText)) {
|
new Alert ("", ErrorCode.PasswordStrengthNotMatch,
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
} else if (passwordText != confrimPasswordText) {
|
new Alert ("", Language.StringByID (R.MyInternationalizationString.RepeatPasswordsDidNotmatch),
|
Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
return;
|
}
|
|
//检测验证码
|
string verCode = etCode.Text.Trim ();
|
if (string.IsNullOrEmpty (verCode)) {
|
Utlis.ShowTip (Language.StringByID (R.MyInternationalizationString.PlsEntryVerificationCode));
|
return;
|
}
|
|
MainPage.Loading.Start (Language.StringByID (R.MyInternationalizationString.load));
|
System.Threading.Tasks.Task.Run (() => {
|
try {
|
var requestObj = HttpServerRequest.Current.ForgetPassword (mAccount, passwordText, verCode, bPhone);
|
if (requestObj.Code == StateCode.SUCCESS) {
|
Application.RunOnMainThread (() => {
|
new Alert (Language.StringByID (R.MyInternationalizationString.Tip), Language.StringByID (R.MyInternationalizationString.PasswordModificationSuccess), Language.StringByID (R.MyInternationalizationString.Close)).Show ();
|
Close ();
|
new AccountLogin (mAccount, passwordText).Show ();
|
});
|
} else {
|
//提示错误
|
IMessageCommon.Current.ShowErrorInfoAlter (requestObj.Code);
|
}
|
} catch {
|
MainPage.FailureToServer ();
|
} finally {
|
Application.RunOnMainThread (() => {
|
MainPage.Loading.Hide ();
|
});
|
}
|
});
|
|
};
|
|
|
}
|
}
|
|
|
}
|