using System;
using HDL_ON.UI.CSS;
using Shared;
using HDL_ON.DAL.Server;
namespace HDL_ON.UI
{
///
/// 手势解锁
///
public class AppUnlockGesturePage : FrameLayout
{
///
///
///
FrameLayout bodyView;
///
/// 错误提示按钮
///
Button btnTipMsg;
string passwrod = "";
string oldPasswrod = "";
Action backAction;
public AppUnlockGesturePage(string pw, Action action)
{
bodyView = this;
bodyView.Tag = "unlockpage";
oldPasswrod = pw;
backAction = action;
}
///
///
///
///
/// 操作方式:
/// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;
/// 5:关闭指纹ID;6:关闭面容ID;7:解锁验证
///
public void LoadPage(string optionType)
{
bodyView.BackgroundColor = CSS_Color.BackgroundColor;
//解锁验证无法后退,必须验证
if (optionType != "7")
{
if (oldPasswrod == "")
new TopViewDiv(bodyView, Language.StringByID(StringId.SetGesturePassword)).LoadTopView();
else
new TopViewDiv(bodyView, Language.StringByID(StringId.VerifyGesturePassword)).LoadTopView();
}
Button btnGestureIcon = new Button()
{
Y = Application.GetRealHeight(96),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(64),
Height = Application.GetRealWidth(64),
//UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/GestureGrayIcon.png",
};
bodyView.AddChidren(btnGestureIcon);
Button btnTipTitle = new Button()
{
Y = Application.GetRealHeight(4) + btnGestureIcon.Bottom,
TextAlignment = TextAlignment.Center,
Height = Application.GetRealHeight(36),
IsBold = true,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.EmphasisFontSize_Secondary,
TextID = StringId.VerifyGesturePassword,
};
bodyView.AddChidren(btnTipTitle);
btnTipMsg = new Button()
{
Y = btnTipTitle.Bottom,
TextAlignment = TextAlignment.Center,
Height = Application.GetRealHeight(36),
IsBold = true,
TextColor = CSS_Color.TextualColor,
SelectedTextColor = CSS_Color.WarningColor,
TextSize = CSS_FontSize.TextFontSize,
TextID = StringId.DrawUnlockPattern,
};
bodyView.AddChidren(btnTipMsg);
if (optionType == "1")
{
btnTipMsg.TextID = string.IsNullOrEmpty(oldPasswrod) ? StringId.DrawUnlockPattern : StringId.DrawUnlockPatternAgain;
//设置手势密码
btnTipTitle.TextID = StringId.SetGesturePassword;
}else if(optionType == "2")
{
//请输入原手势密码
btnTipTitle.TextID = StringId.PleaseDrawTheOriginalGesturePassword;
}
//if (optionType == "7")
//{
// //请绘制解锁图案
// btnTipTitle.TextID = StringId.DrawUnlockPattern;
//}
GestureLockView mGestureLockView = new GestureLockView
{
Y = Application.GetRealHeight(260),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(215),
Height = Application.GetRealWidth(215),
LockViewCorrectColor = CSS_Color.MainColor,//0xFF00FF00,//默认和正确 时显示的颜色
LockViewErrorColor = 0xFFFF0000, //错误时 显示的颜色
BackgroundColor = CSS_Color.BackgroundColor,
};
bodyView.AddChidren(mGestureLockView);
mGestureLockView.SetSolidType(true);
//滑动结束 回调密码结果和密码长度
mGestureLockView.OnLockVerifyEvent += (selectNumStr, selectCount) =>
{
//自行验证密码,提示正确或者错误 false为显示红色错误, 自行选择调用时机
mGestureLockView.showCorrectStatus(false);
if (selectCount < 4)
{
btnTipMsg.Text = Language.StringByID(StringId.DrawingLengthError);
btnTipMsg.TextColor = CSS_Color.WarningColor;
return;
}
passwrod = selectNumStr;
if (string.IsNullOrEmpty(oldPasswrod))
{
this.RemoveFromParent();
var page = new AppUnlockGesturePage(passwrod, backAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage(optionType);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
else
{
//2020-12-11 密码校验
if (passwrod == oldPasswrod)
{
//密码验证通过
PasswordInputPassed(optionType);
}
else
{
//密码验证失败
PasswordInputError(optionType);
}
}
};
if (optionType == "7")
{
//使用账户密码登录按钮 提示按钮
AddLoginTipButton();
}
else if (optionType != "1")
{
//输入登录密码验证 提示按钮
AddInputPasswordTipButton(optionType);
}
//if (optionType == "5" || optionType == "6" || optionType == "7")
//{
// Button btnLoginAccountVerify = new Button()
// {
// Y = Application.GetRealHeight(517),
// Height = Application.GetRealHeight(60),
// TextAlignment = TextAlignment.Center,
// TextSize = CSS_FontSize.TextFontSize,
// TextColor = CSS_Color.MainColor,
// TextID = StringId.EnterLoginPasswordVerification,
// };
// bodyView.AddChidren(btnLoginAccountVerify);
// btnLoginAccountVerify.MouseUpEventHandler = (sender, e) =>
// {
// if (optionType == "7")
// {
// MainPage.GoLoginPage(UserInfo.Current);
// }
// else
// {
// Action action = (pw) =>
// {
// var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw);
// if (resultObj.Code == StateCode.SUCCESS)
// {
// UserInfo.Current.appUnlockPasswrod = "";
// UserInfo.Current.appUnlockType = new System.Collections.Generic.List();
// UserInfo.Current.SaveUserInfo();
// this.RemoveFromParent();
// backAction();
// }
// else
// {
// //登录失败
// IMessageCommon.Current.ShowErrorInfoAlter(resultObj.Code);
// }
// };
// new PublicAssmebly().LoadDialog_EditParater(StringId.EnterLoginPasswordVerification, "", action, StringId.PlsEntryPassword, 0, new System.Collections.Generic.List(), true);
// }
// };
//}
}
///
/// 手势密码输入错误显示错误信息
///
/// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证
void PasswordInputError(string optionType)
{
int errorTextID = 0;
if (optionType == "1")
{
//2次绘制点图案不一致,请重新绘制
errorTextID = StringId.DrawingInconsistencyError;
}
else
{
//验证失败,密码错误.
errorTextID = StringId.AuthenticationFailedPasswordError;
}
btnTipMsg.TextID = errorTextID;
btnTipMsg.IsSelected = true;
btnTipMsg.Visible = true;
}
///
/// 手势密码验证通过后的操作
///
/// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证
void PasswordInputPassed(string optionType)
{
if (optionType == "1")
{
//设置密码 验证通过
this.RemoveFromParent();
var page = new OperationResultDisPalyPage();
page.Show();
page.LoadPage(true, Language.StringByID(StringId.SetSuccessfully), Language.StringByID(StringId.SetSuccessfully), "");
//page.LoadPage(true, Language.StringByID(StringId.SetSuccessfully), Language.StringByID(StringId.SetSuccessfully), "");
string tipMsg = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? Language.StringByID(StringId.TurnOnFingerprintUnlocking) :
Language.StringByID(StringId.TurnOnFaceIdUnlocking);
if (TouchIDUtils.getTouchIDSupperType() != TouchIDUtils.TouchIDSupperType.None)
{
var unlockType = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? "3" : "4";
//如果之前没设置指纹或者面容ID才显示是否开启
if (!UserInfo.Current.appUnlockType.Contains(unlockType))
{
Action action = (result) =>
{
if (result)
{
if (!UserInfo.Current.appUnlockType.Contains(unlockType))
{
UserInfo.Current.appUnlockType.Add(unlockType);
}
}
else
{
if (UserInfo.Current.appUnlockType.Contains(unlockType))
{
UserInfo.Current.appUnlockType.Remove(unlockType);
}
}
UserInfo.Current.SaveUserInfo();
backAction();
};
page.AdditionalOperations(tipMsg, action);
}
}
if (!UserInfo.Current.appUnlockType.Contains("2"))
{
UserInfo.Current.appUnlockType.Add("2");
}
UserInfo.Current.appUnlockPasswrod = passwrod;
UserInfo.Current.SaveUserInfo();
backAction();
}
else if (optionType == "2")
{
//验证密码通过
//移除当前界面,每次返回都返回到最上级
this.RemoveFromParent();
var page = new AppUnlockGesturePage("", backAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("1");
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
else if (optionType == "3" || optionType == "4")
{
//3:关闭密码;4:关闭解锁设置 通过
if (optionType == "4")
{
backAction();
this.RemoveFromParent();
return;
}
if (UserInfo.Current.appUnlockType.Contains("2"))
{
UserInfo.Current.appUnlockType = new System.Collections.Generic.List();
UserInfo.Current.appUnlockPasswrod = "";
UserInfo.Current.SaveUserInfo();
this.RemoveFromParent();
backAction();
}
}
else if (optionType == "5")
{
//5:指纹ID开关 通过
if (UserInfo.Current.appUnlockType.Contains("3"))
UserInfo.Current.appUnlockType.Remove("3");
else
UserInfo.Current.appUnlockType.Add("3");
UserInfo.Current.SaveUserInfo();
this.RemoveFromParent();
backAction();
}
else if (optionType == "6")
{
//6:面容ID开关 通过
if (UserInfo.Current.appUnlockType.Contains("4"))
UserInfo.Current.appUnlockType.Remove("4");
else
UserInfo.Current.appUnlockType.Add("4");
UserInfo.Current.SaveUserInfo();
this.RemoveFromParent();
}
else if (optionType == "7")
{
//7:解锁验证 通过
this.RemoveFromParent();
backAction();
}
}
///
/// 使用账户密码登录按钮 提示按钮
///
void AddLoginTipButton()
{
Button btnLoginAccountVerify = new Button()
{
Y = Application.GetRealHeight(517),
Height = Application.GetRealHeight(60),
TextAlignment = TextAlignment.Center,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.MainColor,
TextID = StringId.LogWithAccountAndPassword,
};
bodyView.AddChidren(btnLoginAccountVerify);
btnLoginAccountVerify.MouseUpEventHandler = (sender, e) =>
{
//退出登录
HDLCommon.Current.Logout();
};
}
///
/// 输入登录密码验证 提示按钮
///
void AddInputPasswordTipButton(string optionType)
{
Button btnLoginAccountVerify = new Button()
{
Y = Application.GetRealHeight(517),
Height = Application.GetRealHeight(60),
TextAlignment = TextAlignment.Center,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.MainColor,
TextID = StringId.EnterLoginPasswordVerification,
};
bodyView.AddChidren(btnLoginAccountVerify);
btnLoginAccountVerify.MouseUpEventHandler = (sender, e) =>
{
//输入登录密码验证
Action action = (pw) =>
{
AuthenticationByLoginPassword(pw, optionType);
//var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw);
//if (resultObj.Code == StateCode.SUCCESS)
//{
// PasswordInputPassed(optionType);
//}
//else
//{
// Application.RunOnMainThread(() =>
// {
// Utlis.ShowTip(Language.StringByID(StringId.AuthenticationFailedPasswordError));
// });
//}
};
new PublicAssmebly().LoadDialog_EditParater(StringId.EnterLoginPasswordVerification, "", action, StringId.PlsEntryPassword, 0, new System.Collections.Generic.List(), true);
};
}
///
/// 登录密码验证
///
///
///
void AuthenticationByLoginPassword(string pw, string optionType)
{
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start(Language.StringByID(StringId.PleaseWait));
new System.Threading.Thread(() =>
{
try
{
var resultObj = new HttpServerRequest().LoginByPassword(UserInfo.Current.AccountString, pw);
Application.RunOnMainThread(() =>
{
if (resultObj.Code == StateCode.SUCCESS)
{
PasswordInputPassed(optionType);
}
else
{
Utlis.ShowTip(Language.StringByID(StringId.AuthenticationFailedPasswordError));
}
});
}
catch { }
finally
{
Application.RunOnMainThread(() =>
{
if (waitPage != null)
{
waitPage.RemoveFromParent();
waitPage = null;
}
});
}
})
{ IsBackground = true }.Start();
}
}
}