using System;
using Shared;
namespace HDL_ON.UI
{
///
/// app解锁界面
///
public class AppUnlockPage
{
void LoadOption()
{
//2020-12-12 未登录或者APP未启动都返回,解决闪退问题
if (UserInfo.Current == null || !UserInfo.Current.IsLogin || MainPage.BasePageView == null)
{
return;
}
Action action = () =>
{
UserInfo.Current.unlockTime = DateTime.Now;
};
//1:验证指纹
if (UserInfo.Current.appUnlockType.Contains("3"))
{
TouchIDVerification();
}
else if (UserInfo.Current.appUnlockType.Contains("4"))
{
//Face ID验证
//2020-12-11 待增加面容失败验证页面,不然会导致锁屏加密无效
FaceIDVerification();
}
else if (UserInfo.Current.appUnlockType.Contains("1"))
{
var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, action);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("7");
}
else if (UserInfo.Current.appUnlockType.Contains("2"))
{
var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, action);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("7");
}
#if __ANDROID__
new System.Threading.Thread(() =>
{
int i = 0;
while (i > 1)
{
MainPage.Log($"倒计时:{i} sec");
System.Threading.Thread.Sleep(1000);
i++;
}
Application.RunOnMainThread(() =>
{
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
});
})
{ IsBackground = true }.Start();
#else
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
#endif
}
///
///
///
/// 如果是第一次启动直接弹窗验证密码
public void LoadPage(bool isFirstOpen = false)
{
try
{
if (!isFirstOpen)
{
if (UserInfo.Current.unlockTime.AddMinutes(5) > DateTime.Now || UserInfo.Current.appUnlockPasswrod == "" || UserInfo.Current.appUnlockPage.Count == 0)
{
return;
}
}
LoadOption();
}
catch
{
Utlis.WriteLine("AppUnlockPage error");
}
}
///
/// 指纹验证
///
void TouchIDVerification()
{
//验证成功Action
Action successAction = () =>
{
UserInfo.Current.unlockTime = DateTime.Now;
};
//提示数字密码验证还是绘制手势验证
string verificationTitleString = GetVerificationTitleString();
//弹出指纹验证对话框
Action fingerAction = () =>
{
TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
};
//加载UI页面
LoadGesturePage("7", fingerAction, null);
TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, Language.StringByID(StringId.PleaseVerifyTheFingerprint));
TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
{
if (e == TouchIDUtils.TouchIDState.Success)
{
MainPage.Log("KK:TouchID验证成功");
UserInfo.Current.unlockTime = DateTime.Now;
MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
}
else
{
///将验证指纹的页面移除
MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
if (UserInfo.Current.appUnlockType.Contains("1"))
{
var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, successAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("7");
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
else if (UserInfo.Current.appUnlockType.Contains("2"))
{
var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, successAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("7");
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
}
};
}
///
/// 加载指纹验证界面
///
///
///
///
public void LoadGesturePage(string optionType, Action fingerAction, Action successAction)
{
var bodyView = new FrameLayout()
{
BackgroundColor = CSS.CSS_Color.MainBackgroundColor
};
MainPage.BasePageView.AddChidren(bodyView);
bodyView.AddChidren(new Button()
{
Height = Application.GetRealHeight(64),
BackgroundColor = CSS.CSS_Color.BackgroundColor,
});
bodyView.AddChidren(new Button()
{
Y = Application.GetRealHeight(196),
Height = Application.GetRealHeight(42),
TextAlignment = TextAlignment.Center,
TextColor = CSS.CSS_Color.FirstLevelTitleColor,
TextSize = CSS.CSS_FontSize.SubheadingFontSize,
TextID = StringId.PleaseVerifyTheFingerprint,
});
var btnFingerIcon = new Button()
{
Y = Application.GetRealHeight(260),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(102),
Height = Application.GetRealWidth(102),
UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/FingerIconBlue.png",
};
bodyView.AddChidren(btnFingerIcon);
btnFingerIcon.MouseUpEventHandler = (sender, e) =>
{
fingerAction();
};
var btnOtherVerify = new Button()
{
Y = Application.GetRealHeight(527),
Height = Application.GetRealHeight(40),
TextAlignment = TextAlignment.Center,
TextColor = CSS.CSS_Color.MainColor,
TextSize = CSS.CSS_FontSize.TextFontSize,
TextID = UserInfo.Current.appUnlockType.Contains("1") ? StringId.VerifyDigitalPassword : StringId.VerifyGesturePassword,
};
bodyView.AddChidren(btnOtherVerify);
btnOtherVerify.MouseUpEventHandler = (sender, e) =>
{
///将验证指纹的页面移除
MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
//Action action = () =>
//{
// UserInfo.Current.unlockTime = DateTime.Now;
//};
//if (UserInfo.Current.appUnlockType.Contains("1"))
//{
// var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, action);
// MainPage.BasePageView.AddChidren(page);
// page.LoadPage(optionType);
// MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
//}
//else if (UserInfo.Current.appUnlockType.Contains("2"))
//{
// var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, action);
// MainPage.BasePageView.AddChidren(page);
// page.LoadPage(optionType);
// MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
//}
if (successAction == null)
{
Action action = () =>
{
UserInfo.Current.unlockTime = DateTime.Now;
};
GotogoToVerifyPasswordPage(optionType, action);
}
else
{
GotogoToVerifyPasswordPage(optionType, successAction);
}
};
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
//dialog.Show();
//Console.WriteLine("-0987654321");
}
///
/// 面容ID验证
///
void FaceIDVerification()
{
//验证成功Action
Action successAction = () =>
{
UserInfo.Current.unlockTime = DateTime.Now;
};
//提示数字密码验证还是绘制手势验证
string verificationTitleString = GetVerificationTitleString();
//弹出指纹验证对话框
Action faceIDAction = () =>
{
TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, Language.StringByID(StringId.VerifyFaceID));
};
//加载UI页面
LoadFaceIDGesturePage("7", faceIDAction, null);
TouchIDUtils.Instance.showTouchIDWithDescribe(verificationTitleString, Language.StringByID(StringId.VerifyFaceID));
TouchIDUtils.Instance.OnHDLTouchIDStateBackEvent = (sender1, e) =>
{
if (e == TouchIDUtils.TouchIDState.Success)
{
MainPage.Log("KK:TouchID验证成功");
UserInfo.Current.unlockTime = DateTime.Now;
MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
}
else
{
///将验证指纹的页面移除
MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
if (UserInfo.Current.appUnlockType.Contains("1"))
{
var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, successAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("7");
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
else if (UserInfo.Current.appUnlockType.Contains("2"))
{
var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, successAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage("7");
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
}
};
}
///
/// 加载面容ID验证界面
///
///
///
/// 指定成功的事件回调
public void LoadFaceIDGesturePage(string optionType, Action faceIDAction, Action successAction)
{
var bodyView = new FrameLayout()
{
BackgroundColor = CSS.CSS_Color.MainBackgroundColor
};
MainPage.BasePageView.AddChidren(bodyView);
bodyView.AddChidren(new Button()
{
Height = Application.GetRealHeight(64),
BackgroundColor = CSS.CSS_Color.BackgroundColor,
});
bodyView.AddChidren(new Button()
{
Y = Application.GetRealHeight(196),
Height = Application.GetRealHeight(42),
TextAlignment = TextAlignment.Center,
TextColor = CSS.CSS_Color.FirstLevelTitleColor,
TextSize = CSS.CSS_FontSize.SubheadingFontSize,
TextID = StringId.VerifyFaceID,
});
var btnFaceIdIcon = new Button()
{
Y = Application.GetRealHeight(260),
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(102),
Height = Application.GetRealWidth(102),
UnSelectedImagePath = "PersonalCenter/AppUnlockSetting/FaceIdIconBig.png",
};
bodyView.AddChidren(btnFaceIdIcon);
btnFaceIdIcon.MouseUpEventHandler = (sender, e) =>
{
faceIDAction();
};
var btnOtherVerify = new Button()
{
Y = Application.GetRealHeight(527),
Height = Application.GetRealHeight(40),
TextAlignment = TextAlignment.Center,
TextColor = CSS.CSS_Color.MainColor,
TextSize = CSS.CSS_FontSize.TextFontSize,
TextID = UserInfo.Current.appUnlockType.Contains("1") ? StringId.VerifyDigitalPassword : StringId.VerifyGesturePassword,
};
bodyView.AddChidren(btnOtherVerify);
btnOtherVerify.MouseUpEventHandler = (sender, e) =>
{
///将验证面容ID的页面移除
MainPage.BasePageView.GetChildren(MainPage.BasePageView.ChildrenCount - 1).RemoveFromParent();
if (successAction == null)
{
Action action = () =>
{
UserInfo.Current.unlockTime = DateTime.Now;
};
GotogoToVerifyPasswordPage(optionType, action);
}
else
{
GotogoToVerifyPasswordPage(optionType, successAction);
}
};
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
///
/// 跳转手势或者密码验证界面
///
/// 1:设置密码;2:验证密码;3:关闭密码;4:关闭解锁设置;5:指纹ID开关;6:面容ID开关;7:解锁验证
///
void GotogoToVerifyPasswordPage(string optionType, Action successAction)
{
if (UserInfo.Current.appUnlockType.Contains("1"))
{
var page = new AppUnlockPasswordPage(UserInfo.Current.appUnlockPasswrod, successAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage(optionType);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
else if (UserInfo.Current.appUnlockType.Contains("2"))
{
var page = new AppUnlockGesturePage(UserInfo.Current.appUnlockPasswrod, successAction);
MainPage.BasePageView.AddChidren(page);
page.LoadPage(optionType);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
}
}
///
/// 判断是否数字验证、否则绘制手势验证
///
///
bool CheckIfUnlockPassword()
{
return UserInfo.Current.appUnlockType.Contains("1");
}
///
/// 判断是否数字验证、否则绘制手势验证
///
///
string GetVerificationTitleString()
{
if (CheckIfUnlockPassword())
{
return Language.StringByID(StringId.PasswordVerification);
}
else
{
return Language.StringByID(StringId.GestureVerification);
}
}
}
}