using System;
using System.Collections.Generic;
using System.Text;
namespace Shared.Phone.UserCenter.Safety
{
///
/// 修改管理员密码的画面
///
public class EdtiorAdminPasswordForm : UserCenterCommonForm
{
#region ■ 变量声明___________________________
///
/// 信息提示控件
///
private ViewNormalControl txtMsg = null;
#endregion
#region ■ 初始化_____________________________
///
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
///
public void ShowForm()
{
//设置头部信息
base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uChangedPassword));
//初始化中部信息
this.InitMiddleFrame();
}
///
/// 初始化中部信息
///
private void InitMiddleFrame()
{
//请输入管理员密码
var btnTitle = new TitleViewControl();
btnTitle.TextColor = UserCenterColor.Current.TextGrayColor;
btnTitle.Y = Application.GetRealHeight(40);
btnTitle.TextID = R.MyInternationalizationString.uPleaseInputAdministratorPassword;
bodyFrameLayout.AddChidren(btnTitle);
//原密码
string placeholderText = Language.StringByID(R.MyInternationalizationString.uOldPassword);
var rowPsw1 = new RowPasswordControl();
rowPsw1.Y = btnTitle.Bottom;
bodyFrameLayout.AddChidren(rowPsw1);
rowPsw1.Init(placeholderText);
//忘记密码?
var btnForgotPsw = new ViewNormalControl(800, true);
btnForgotPsw.TextColor = UserCenterColor.Current.TextBlueColor;
btnForgotPsw.TextID = R.MyInternationalizationString.ForgotPasswordMsg;
btnForgotPsw.Y = rowPsw1.Bottom + Application.GetRealHeight(10);
btnForgotPsw.X = ControlCommonResourse.XXLeft;
bodyFrameLayout.AddChidren(btnForgotPsw);
btnForgotPsw.MouseUpEventHandler += (sender, e) =>
{
//检验身份然后显示重置画面
this.CheckUserAuthenticationAndShowForm();
};
//新密码
placeholderText = Language.StringByID(R.MyInternationalizationString.uNewPassword);
var rowPsw2 = new RowPasswordControl();
rowPsw2.Y = btnForgotPsw.Bottom;
bodyFrameLayout.AddChidren(rowPsw2);
rowPsw2.Init(placeholderText);
//确认新密码
placeholderText = Language.StringByID(R.MyInternationalizationString.uConfirmNewPassword);
var rowPsw3 = new RowPasswordControl();
rowPsw3.Y = rowPsw2.Bottom;
bodyFrameLayout.AddChidren(rowPsw3);
rowPsw3.Init(placeholderText);
//提示信息
this.txtMsg = new ViewNormalControl(800, true);
txtMsg.X = ControlCommonResourse.XXLeft;
txtMsg.Y = rowPsw3.Bottom + Application.GetRealHeight(5);
txtMsg.TextColor = UserCenterColor.Current.Red;
bodyFrameLayout.AddChidren(txtMsg);
//完成
var btnfinish = new TopLayoutFinshView();
topFrameLayout.AddChidren(btnfinish);
btnfinish.MouseUpEventHandler += (sender, e) =>
{
//执行修改管理员密码
this.ChangedAdminPassword(rowPsw1.Text, rowPsw2.Text, rowPsw3.Text);
};
}
#endregion
#region ■ 修改密码___________________________
///
/// 执行修改管理员密码
///
/// 旧密码
/// 新密码
/// 确认密码
private async void ChangedAdminPassword(string oldPassword, string pswValue1, string pswValue2)
{
//检测密码
string msg = this.CheckPassword(oldPassword, pswValue1, pswValue2);
if (msg != string.Empty)
{
Application.RunOnMainThread(() =>
{
txtMsg.Text = msg;
});
return;
}
//执行修改
bool result = await Common.LocalSafeguard.Current.ChangedAdminPassword(oldPassword, pswValue1);
if (result == false)
{
return;
}
//管理员密码已更新
string Refmsg = Language.StringByID(R.MyInternationalizationString.uAdminPasswordRefreshMsg);
Application.RunOnMainThread(() =>
{
var form = new PasswordRefreshMsgForm();
this.AddFromAndRemoveNowForm(form, Refmsg);
});
}
#endregion
#region ■ 一般方法___________________________
///
/// 密码检查,返回错误信息,无错误信息(空字符串)则表示成功
///
///
///
///
///
private string CheckPassword(string oldPassword, string pswValue1, string pswValue2)
{
if (pswValue1 == string.Empty)
{
//请输入新密码
return Language.StringByID(R.MyInternationalizationString.uPleaseInputNewPassword);
}
if (pswValue2 == string.Empty)
{
//请输入确认密码
return Language.StringByID(R.MyInternationalizationString.PleaseInputConfirmPsw);
}
if (pswValue1.Length < UserCenterResourse.PasswordLength)
{
//密码长度不低于{0}位数
return string.Format(Language.StringByID(R.MyInternationalizationString.PswLengthMsg), UserCenterResourse.PasswordLength);
}
if (pswValue1 != pswValue2)
{
//两次输入的密码不一致
return Language.StringByID(R.MyInternationalizationString.SecondPswNotEqual);
}
return string.Empty;
}
#endregion
#region ■ 身份验证___________________________
///
/// 身份验证
///
private void CheckUserAuthenticationAndShowForm()
{
//尝试验证的次数
int count = 3;
var dialog = new DialogInputFrameControl(this, DialogFrameMode.OnlyPassword);
dialog.SetTipText(Language.StringByID(R.MyInternationalizationString.uPleaseInputAccountPswToCheckAdmin));
dialog.SetTitleText(Language.StringByID(R.MyInternationalizationString.uUserAuthentication));
dialog.SetOkButtonText(Language.StringByID(R.MyInternationalizationString.uVerification));
dialog.ComfirmClickEvent += () =>
{
if (dialog.InputText == string.Empty)
{
//请输入账号的登录密码
this.ShowErrorMsg(Language.StringByID(R.MyInternationalizationString.uPleaseInputAccountPswToCheckAdmin));
return;
}
if (dialog.InputText == Common.Config.Instance.Password)
{
dialog.CloseDialog();
var from = new ResetAdminPasswordForm();
this.AddFromAndRemoveNowForm(from);
return;
}
count--;
if (count > 0)
{
//管理员身份验证失败
string msg = Language.StringByID(R.MyInternationalizationString.uCheckAdministratorFail);
this.ShowErrorMsg(msg);
}
else
{
dialog.CloseDialog();
//管理员身份验证失败,请重新登录
string msg2 = Language.StringByID(R.MyInternationalizationString.uCheckAdministratorFailAndReload);
this.ShowTip(msg2);
UserCenterLogic.ReLoginAgain(Common.Config.Instance.Account);
}
};
}
#endregion
}
}