using System;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
public class AppUnlockGesturePage : FrameLayout
{
FrameLayout bodyView;
string passwrod = "";
string oldPasswrod = "";
Action backAction;
public AppUnlockGesturePage(string pw, Action action)
{
bodyView = this;
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.SetGesturePassword,
};
bodyView.AddChidren(btnTipTitle);
Button 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 = string.IsNullOrEmpty(oldPasswrod) ? StringId.DrawUnlockPattern : StringId.DrawUnlockPatternAgain,
};
bodyView.AddChidren(btnTipMsg);
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 = 0xFF00FF00,//默认和正确 时显示的颜色
//LockViewErrorColor = 0xFFFF0000, //错误时 显示的颜色
BackgroundColor = CSS_Color.BackgroundColor,
};
bodyView.AddChidren(mGestureLockView);
//滑动结束 回调密码结果和密码长度
mGestureLockView.OnLockVerifyEvent += (selectNumStr, selectCount) =>
{
//自行验证密码,提示正确或者错误 false为显示红色错误, 自行选择调用时机
mGestureLockView.showCorrectStatus(false);
Console.WriteLine("手势密码 : " + selectNumStr + " selectCount:" + selectCount);
if (selectCount < 4)
{
btnTipMsg.Text = Language.StringByID(StringId.DrawingLengthError);
btnTipMsg.TextColor = CSS_Color.WarningColor;
return;
}
passwrod = selectNumStr;
if (string.IsNullOrEmpty(oldPasswrod))
{
var page = new AppUnlockGesturePage(passwrod, backAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage(optionType);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
//移除当前界面,每次返回都返回到最上级
MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 2);
}
else
{
if (optionType == "2")
{
var page = new AppUnlockGesturePage("", backAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("1");
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
//移除当前界面,每次返回都返回到最上级
MainPage.BasePageView.RemoveAt(MainPage.BasePageView.ChildrenCount - 2);
return;
}
if(optionType == "7")
{
if (passwrod == oldPasswrod)
{
this.RemoveFromParent();
backAction();
}
else
{
btnTipMsg.TextID = StringId.AuthenticationFailedGestureError;
btnTipMsg.IsSelected = true;
btnTipMsg.Visible = true;
}
return;
}
if (optionType == "3" || optionType == "4")
{
if (passwrod == oldPasswrod)
{
if (optionType == "4")
{
backAction();
this.RemoveFromParent();
return;
}
if (MainPage.LoginUser.appUnlockType.Contains("2"))
{
MainPage.LoginUser.appUnlockType.Remove("2");
MainPage.LoginUser.appUnlockPasswrod = "";
MainPage.LoginUser.SaveUserInfo();
this.RemoveFromParent();
backAction();
}
}
else
{
btnTipMsg.TextID = StringId.AuthenticationFailedGestureError;
btnTipMsg.IsSelected = true;
btnTipMsg.Visible = true;
}
return;
}
if (optionType == "5" || optionType == "6"|| optionType == "8" || optionType == "9")
{
if (passwrod == oldPasswrod)
{
if (optionType == "5" && MainPage.LoginUser.appUnlockType.Contains("3"))
{
MainPage.LoginUser.appUnlockType.Remove("3");
MainPage.LoginUser.SaveUserInfo();
this.RemoveFromParent();
}
if (MainPage.LoginUser.appUnlockType.Contains("4") && optionType == "6")
{
MainPage.LoginUser.appUnlockType.Remove("4");
MainPage.LoginUser.SaveUserInfo();
this.RemoveFromParent();
}
if (optionType == "8" && !MainPage.LoginUser.appUnlockType.Contains("3"))
{
MainPage.LoginUser.appUnlockType.Add("3");
MainPage.LoginUser.SaveUserInfo();
this.RemoveFromParent();
}
if (!MainPage.LoginUser.appUnlockType.Contains("4") && optionType == "9")
{
MainPage.LoginUser.appUnlockType.Remove("4");
MainPage.LoginUser.SaveUserInfo();
this.RemoveFromParent();
}
backAction();
}
else
{
btnTipMsg.TextID = StringId.AuthenticationFailedGestureError;
btnTipMsg.IsSelected = true;
btnTipMsg.Visible = true;
}
return;
}
if (passwrod == oldPasswrod)
{
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);
Action action = (result) =>
{
var unlockType = TouchIDUtils.getTouchIDSupperType() == TouchIDUtils.TouchIDSupperType.TouchID ? "3" : "4";
if (result)
{
if (!MainPage.LoginUser.appUnlockType.Contains(unlockType))
{
MainPage.LoginUser.appUnlockType.Add(unlockType);
}
}
else
{
if (MainPage.LoginUser.appUnlockType.Contains(unlockType))
{
MainPage.LoginUser.appUnlockType.Remove(unlockType);
}
}
MainPage.LoginUser.SaveUserInfo();
backAction();
};
page.AdditionalOperations(tipMsg, action);
if (!MainPage.LoginUser.appUnlockType.Contains("2"))
{
MainPage.LoginUser.appUnlockType.Add("2");
}
MainPage.LoginUser.appUnlockPasswrod = passwrod;
MainPage.LoginUser.SaveUserInfo();
backAction();
}
else
{
btnTipMsg.Text = Language.StringByID(StringId.DrawingInconsistencyError);
btnTipMsg.IsSelected = true;
}
}
};
}
}
}