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 ForgetPasswordPage
{
///
/// 加载事件列表
///
void LoadEventList()
{
LoadPage_SwitchResetMode();
LoadEvent_EditTextFcousChange();
LoadEvent_ChangeTextVisble();
LoadEvent_GetVerificationCode();
LoadEvent_Reset();
LoadEvent_TextChange();
}
///
/// 切换修改方式
///
void LoadPage_SwitchResetMode()
{
//选择手机方式
btnPhoneLogin.MouseUpEventHandler += (sender, e) =>
{
if (registerType == 0)
return;
if (!string.IsNullOrEmpty(etAccount.Text.Trim()))
{
//记录之前的邮箱
registerEmail = etAccount.Text.Trim();
}
etAccount.IsNumberKeyboardType = true;
etAccount.Text = registerPhone;
etPassword.Text = "";
etRepeatPassword.Text = "";
#region 切换选中按钮
btnGetVerificationCode_Phone.Visible = true;
btnGetVerificationCode_Mail.Visible = false;
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;
if (!string.IsNullOrEmpty(etAccount.Text.Trim()))
{
//记录之前的手机号
registerPhone = etAccount.Text.Trim();
}
etAccount.IsNumberKeyboardType = false;
etAccount.SecureTextEntry = false;//2020-12-10 解决Android数字切换回路普通键盘变加密问题
etAccount.Text = registerEmail;
etPassword.Text = "";
etRepeatPassword.Text = "";
#region 切换选中按钮
btnGetVerificationCode_Phone.Visible = false;
btnGetVerificationCode_Mail.Visible = true;
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_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;
}
}
LoadMothed_EnableResetButton();
};
//etVerificationCode.TextChangeEventHandler = (sender, e) => {
// if (etVerificationCode.Text.Length > 1)
// {
// LoadMothed_EnableResetButton();
// }
//};
//Action textChangeEventHandler = (view, textStr) =>
//{
// LoadMothed_EnableResetButton();
//};
////etAccount.TextChangeEventHandler += textChangeEventHandler;
//etPassword.TextChangeEventHandler += textChangeEventHandler;
//etRepeatPassword.TextChangeEventHandler += textChangeEventHandler;
//etVerificationCode.TextChangeEventHandler += textChangeEventHandler;
}
///
/// 加载文本框焦点变化事件
///
void LoadEvent_EditTextFcousChange()
{
//账号文本框焦点变化事件
etAccount.FoucsChanged += (sender, e) =>
{
if (etAccount.Foucs)
{
HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.GotFocus);
}
else
{
if (isHitBack) return;//点击返回关闭页面不检测提示
HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Normal);
if (etAccount.Text.Length == 0) return;//没输入不检测提示
//手机方式-验证手机号码是否正确
if (registerType == 0)
{
btnGetVerificationCode_Phone.IsSelected = false;
if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode))
{
HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Error);
new Tip()
{
MaxWidth = Application.GetRealWidth(300),
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;
}
LoadMothed_EnableResetButton();
}
}
else if (registerType == 1)
{
btnGetVerificationCode_Mail.IsSelected = false;
//邮箱方式-验证邮箱是否正确
if (!Utlis.CheckEmail(etAccount.Text.Trim()))
{
HDLCommon.Current.BottomLineShowType(btnAccountViewBottomLine, BottomLineType.Error);
new Tip()
{
MaxWidth = Application.GetRealWidth(300),
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;
}
LoadMothed_EnableResetButton();
}
}
}
};
//密码文本框焦点变化事件
etPassword.FoucsChanged += (sender, e) =>
{
if (etPassword.Foucs)
{
HDLCommon.Current.BottomLineShowType(btnPasswordViewBottomLine, BottomLineType.GotFocus);
}
else
{
if (isHitBack) return;//点击返回关闭页面不检测提示
HDLCommon.Current.BottomLineShowType(btnPasswordViewBottomLine, BottomLineType.Normal);
if (etPassword.Text.Length == 0) return;//没输入不检测提示
//校验密码是否符合要求
if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13)
{
HDLCommon.Current.BottomLineShowType(btnPasswordViewBottomLine, BottomLineType.Error);
new Tip()
{
MaxWidth = Application.GetRealWidth(300),
CloseTime = 1,
Direction = AMPopTipDirection.None,
Text = Language.StringByID(StringId.PasswordIsUnqualified)
}.Show(bodyView);
}
}
};
//确认密码文本框焦点变化事件
etRepeatPassword.FoucsChanged += (sender, e) =>
{
if (etRepeatPassword.Foucs)
{
HDLCommon.Current.BottomLineShowType(btnRepeatPasswordViewBottomLine, BottomLineType.GotFocus);
}
else
{
if (isHitBack) return;//点击返回关闭页面不检测提示
HDLCommon.Current.BottomLineShowType(btnRepeatPasswordViewBottomLine, BottomLineType.Normal);
//校验两次输入的密码是否一致
if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim())
{
HDLCommon.Current.BottomLineShowType(btnRepeatPasswordViewBottomLine, BottomLineType.Error);
new Tip()
{
CloseTime = 1,
Direction = AMPopTipDirection.None,
MaxWidth = Application.GetRealWidth(300),
Text = Language.StringByID(StringId.IncorrectRepeatPassword)
}.Show(bodyView);
}
else
{
LoadMothed_EnableResetButton();
}
}
};
//验证码文本框焦点变化事件
//etVerificationCode.FoucsChanged += (sender, e) =>
//{
// if (etVerificationCode.Foucs)
// {
// HDLCommon.Current.BottomLineShowType(btnVerificationCodeViewBottomLine, BottomLineType.GotFocus);
// }
// else
// {
// if (isHitBack) return;//点击返回关闭页面不检测提示
// HDLCommon.Current.BottomLineShowType(btnVerificationCodeViewBottomLine, BottomLineType.Normal);
// if (etVerificationCode.Text.Length > 4)
// {
// LoadMothed_EnableResetButton();
// }
// }
//};
}
///
/// 更改密码可见性
///
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 CheckAndSetUserRequestHost(ResponsePackNew result)
{
try
{
var mGlobalRegionListObj = Newtonsoft.Json.JsonConvert.DeserializeObject(result.Data.ToString());
if (OnAppConfig.Instance.RequestHttpsHost != mGlobalRegionListObj.regionUrl)
{
OnAppConfig.Instance.RequestHttpsHost = mGlobalRegionListObj.regionUrl;
OnAppConfig.Instance.GlobalRegion = mGlobalRegionListObj;
OnAppConfig.Instance.SaveConfig();
}
}
catch { }
}
///
/// 获取验证码
///
void LoadEvent_GetVerificationCode()
{
EventHandler eventHandler = (sender, e) =>
{
var account = etAccount.Text.Trim();
if ((sender as Button).IsSelected)
{
//加载Loading效果
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start(Language.StringByID(StringId.PleaseWait));
int time = 60;
new Thread(() =>
{
try
{
//1.先检查账号是否注册过
var result = pm.GetRegionByAccount(account);
if (result.Code != StateCode.SUCCESS)
{
IMessageCommon.Current.ShowErrorInfoAlter(result.Code);
return;
}
else
{
//2.1检测当前配置域名是否一致,不一致则替换
CheckAndSetUserRequestHost(result);
//2.2已经注册过,发送验证码找回密码
ResponsePackNew resultObj;
//2.3请求获取验证码
if (registerType == 1)//邮箱
{
resultObj = pm.VerificationCodeSend(VerifyType.FIND_PASSWORD, account);
}
else
{
resultObj = pm.VerificationCodeSend(VerifyType.FIND_PASSWORD, account, true, phoneZoneCode);
}
if (resultObj.Code != StateCode.SUCCESS)
{
// 提示错误
IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
}
else
{
//3.发送验证码成功,开始计时
Application.RunOnMainThread(() =>
{
//短信发送间隔60s
(sender as Button).IsSelected = false;
//etVerificationCode.Foucs = true;
});
//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();
}
}
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
if (waitPage != null)
{
waitPage.RemoveFromParent();
waitPage = null;
}
});
}
})
{ IsBackground = true }.Start();
}
};
btnGetVerificationCode_Mail.MouseUpEventHandler = eventHandler;
btnGetVerificationCode_Phone.MouseUpEventHandler = eventHandler;
}
///
/// 加载方式按钮事件
///
void LoadEvent_Reset()
{
btnReset.MouseUpEventHandler += (sender, e) =>
{
if (btnReset.IsSelected)
{
//检测账号
if (!CheckAccount()) return;
//检测密码
if (!CheckPassword()) return;
//检测验证码
if (!CheckVerificationCode()) return;
//创建修改密码线程
var loginThread = LoadMothed_ResetThread();
waitPage = new Loading();
new PublicAssmebly().LoadPage_WaitPage(loginThread, bodyView, waitPage);
}
};
}
///
/// 加载重置密码方法
///
Thread LoadMothed_ResetThread()
{
string account = etAccount.Text.Trim();
string password = etPassword.Text.Trim();
string repeatPassword = etRepeatPassword.Text.Trim();
string verCode = etVerificationCode.Text.Trim();
int countryIndex = 0;
try
{
countryIndex = Convert.ToInt32(btnGlobalRoaming.Text.Trim().Remove('+'));
}
catch { }
return new Thread(() =>
{
// 忘记密码
var isPhone = registerType == 0;
var resultObj = pm.ForgetPassword(account, password, verCode, isPhone);
if (resultObj.Code == StateCode.SUCCESS)
{
Application.RunOnMainThread(() =>
{
if (waitPage != null)
{
waitPage.Hide();
}
ShowAutoLoginDialog(account, password, isPhone);
});
}
else
{
Application.RunOnMainThread(() =>
{
if (waitPage != null)
{
waitPage.Hide();
}
// 验证码错误 警告提示
if (resultObj.Code == StateCode.VERIFICATION_CODE_WRONG)
{
HDLCommon.Current.BottomLineShowType(btnVerificationCodeViewBottomLine, BottomLineType.Error);
}
});
// 提示错误
IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
}
});
}
///
/// 使能修改确定按钮
///
void LoadMothed_EnableResetButton()
{
if (!string.IsNullOrEmpty(etAccount.Text) && !string.IsNullOrEmpty(etPassword.Text) && !string.IsNullOrEmpty(etVerificationCode.Text) && (etPassword.Text.Trim() == etRepeatPassword.Text.Trim()))
{
btnReset.IsSelected = true;
}
else
{
btnReset.IsSelected = false;
}
}
///
/// 检测账号
///
///
bool CheckAccount()
{
//手机方式-验证手机号码是否正确
if (registerType == 0)
{
if (!Utlis.CheckPhoneNumber(etAccount.Text.Trim(), phoneZoneCode))
{
Utlis.ShowTip(Language.StringByID(StringId.PlsEntryCorrectMobilNeumber));
}
else
{
return true;
}
}
else if (registerType == 1)
{
//邮箱方式-验证邮箱是否正确
if (!Utlis.CheckEmail(etAccount.Text.Trim()))
{
Utlis.ShowTip(Language.StringByID(StringId.PlsEntryCorrectEmailAddress));
}
else
{
return true;
}
}
return false;
}
///
/// 检测密码是否正确
///
///
bool CheckPassword()
{
//校验密码是否符合要求
if (etPassword.Text.Trim().Length < 6 || etPassword.Text.Trim().Length > 13)
{
Utlis.ShowTip(Language.StringByID(StringId.PasswordIsUnqualified));
return false;
}
if (etPassword.Text.Trim() != etRepeatPassword.Text.Trim())
{
Utlis.ShowTip(Language.StringByID(StringId.IncorrectRepeatPassword));
return false;
}
return true;
}
///
/// 检测验证码是否输入
///
///
bool CheckVerificationCode()
{
if (string.IsNullOrEmpty(etVerificationCode.Text))
{
Utlis.ShowTip(Language.StringByID(StringId.PlsEntryVerificationCode));
return false;
}
return true;
}
///
/// 显示自动自动登录事件
///
void ShowAutoLoginDialog(string account, string password, bool isPhone)
{
Dialog dialog = new Dialog();
FrameLayout dialogView = new FrameLayout();
dialogView.MouseUpEventHandler = (sender, e) =>
{
dialog.Close();
};
dialog.AddChidren(dialogView);
FrameLayout contentView = new FrameLayout()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealWidth(200),
Width = Application.GetRealWidth(288),
Height = Application.GetRealWidth(270),
Radius = (uint)Application.GetRealWidth(6),
BackgroundColor = CSS_Color.MainBackgroundColor,
};
dialogView.AddChidren(contentView);
contentView.Y = (dialogView.Height - contentView.Height) / 2;
Button btnTitleIcon = new Button()
{
X = Application.GetRealWidth(108),
Y = contentView.Y - Application.GetRealWidth(71),
Width = Application.GetRealWidth(160),
Height = Application.GetRealWidth(160),
UnSelectedImagePath = "Public/Dialog/DialogTipTitleIcon_1.png"
};
dialogView.AddChidren(btnTitleIcon);
btnTitleIcon.MouseUpEventHandler = (sender, e) =>
{
dialog.Close();
};
Button btnMsg = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealWidth(88),
Width = Application.GetRealWidth(220),
Height = Application.GetRealWidth(44),
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextID = StringId.ModifySuccess
};
contentView.AddChidren(btnMsg);
Button btnMsg2 = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = btnMsg.Bottom + Application.GetRealWidth(8),
Width = Application.GetRealWidth(220),
Height = Application.GetRealWidth(60),
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
TextID = StringId.YourPasswordHasBeenChanged,
TextAlignment = TextAlignment.TopCenter,
IsMoreLines = true
};
contentView.AddChidren(btnMsg2);
Button btnSkipBindPage = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealWidth(194),
Width = Application.GetRealWidth(220),
Height = Application.GetRealWidth(44),
TextAlignment = TextAlignment.Center,
Radius = (uint)Application.GetRealWidth(22),
BackgroundColor = CSS_Color.MainColor,
TextID = StringId.Login,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.MainBackgroundColor,
};
contentView.AddChidren(btnSkipBindPage);
btnSkipBindPage.MouseUpEventHandler = (sender, e) =>
{
dialog.Close();
this.Close();
AutoLoginAction?.Invoke(account, password, isPhone);
};
dialog.Show();
}
}
}