using HDL_ON.UI.CSS;
|
using Shared;
|
using System;
|
using System.Collections.Generic;
|
using System.Text;
|
|
namespace HDL_ON.Stan
|
{
|
/// <summary>
|
/// App数字密码验证界面
|
/// </summary>
|
public class AppNumPasswordSecurityForm : EditorCommonForm
|
{
|
#region ■ 变量声明___________________________
|
|
/// <summary>
|
/// <para>Action事件</para>
|
/// <para>1:密码输入结束,这个时候,第二个参数为输入的密码</para>
|
/// <para>2:点击了底部的消息</para>
|
/// </summary>
|
public Action<int, string> ActionEvent = null;
|
/// <summary>
|
/// 图标控件集合
|
/// </summary>
|
private List<IconViewControl> listIconContr = new List<IconViewControl>();
|
/// <summary>
|
/// 消息控件
|
/// </summary>
|
private NormalViewControl btnErrorMsg = null;
|
/// <summary>
|
/// 一个高度为0的输入框
|
/// </summary>
|
private EditText txtPassword = null;
|
|
#endregion
|
|
#region ■ 初始化_____________________________
|
|
/// <summary>
|
/// 画面显示(底层会固定调用此方法,借以完成画面创建)
|
/// </summary>
|
/// <param name="addTopFrame">是否添加头部Frame</param>
|
/// <param name="i_title">标题信息</param>
|
/// <param name="i_bottomMsg">底部显示的信息行</param>
|
public void ShowForm(bool addTopFrame, string i_title, string i_bottomMsg)
|
{
|
//不允许左滑
|
this.ScrollLeftEnabled = false;
|
|
if (addTopFrame == false)
|
{
|
//清空头部全部控件
|
topFrameLayout.RemoveAll();
|
//然后让背景色一体化
|
topFrameLayout.BackgroundColor = bodyFrameLayout.BackgroundColor;
|
topMenuFrameLayout.BackgroundColor = bodyFrameLayout.BackgroundColor;
|
}
|
else
|
{
|
//验证数字密码
|
base.SetTitleText(Language.StringByID(StringId.VerifyDigitalPassword));
|
}
|
|
//初始化中部信息
|
this.InitMiddleFrame(i_title, i_bottomMsg);
|
}
|
|
/// <summary>
|
/// 初始化中部信息
|
/// </summary>
|
/// <param name="i_title">标题信息</param>
|
/// <param name="i_bottomMsg">底部显示的信息行</param>
|
private void InitMiddleFrame(string i_title, string i_bottomMsg)
|
{
|
//清空bodyFrame
|
this.ClearBodyFrame();
|
|
//标题
|
var btnTitle = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(42), false);
|
btnTitle.Y = Application.GetRealHeight(228) - topFrameLayout.Bottom;
|
btnTitle.Gravity = Gravity.CenterHorizontal;
|
btnTitle.TextAlignment = TextAlignment.Center;
|
btnTitle.TextColor = CSS_Color.FirstLevelTitleColor;
|
btnTitle.TextSize = CSS_FontSize.SubheadingFontSize;
|
btnTitle.Text = i_title;
|
bodyFrameLayout.AddChidren(btnTitle);
|
|
//第一个圆圈
|
var btnIcon1 = this.InitIconControl();
|
btnIcon1.X = Application.GetRealWidth(132);
|
btnIcon1.Y = btnTitle.Bottom + Application.GetRealWidth(10);
|
|
//第二个圆圈
|
var btnIcon2 = this.InitIconControl();
|
btnIcon2.X = btnIcon1.Right + Application.GetRealWidth(16);
|
btnIcon2.Y = btnIcon1.Y;
|
|
//第三个圆圈
|
var btnIcon3 = this.InitIconControl();
|
btnIcon3.X = btnIcon2.Right + Application.GetRealWidth(16);
|
btnIcon3.Y = btnIcon1.Y;
|
|
//第四个圆圈
|
var btnIcon4 = this.InitIconControl();
|
btnIcon4.X = btnIcon3.Right + Application.GetRealWidth(16);
|
btnIcon4.Y = btnIcon1.Y;
|
|
//错误消息
|
this.btnErrorMsg = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, Application.GetRealHeight(24), false);
|
btnErrorMsg.Y = btnIcon1.Bottom + Application.GetRealHeight(4);
|
btnErrorMsg.Gravity = Gravity.CenterHorizontal;
|
btnErrorMsg.TextColor = CSS_Color.WarningColor;
|
btnErrorMsg.TextAlignment = TextAlignment.Center;
|
btnErrorMsg.IsMoreLines = true;
|
bodyFrameLayout.AddChidren(btnErrorMsg);
|
|
//底部消息
|
if (string.IsNullOrEmpty(i_bottomMsg) == false)
|
{
|
var btnBottomTip = new NormalViewControl(bodyFrameLayout.Width - HdlControlResourse.XXLeft * 2, 20, false);
|
btnBottomTip.Y = Application.GetRealHeight(517) - topFrameLayout.Bottom;
|
btnBottomTip.Gravity = Gravity.CenterHorizontal;
|
btnBottomTip.TextAlignment = TextAlignment.TopCenter;
|
btnBottomTip.TextColor = CSS_Color.MainColor;
|
btnBottomTip.Text = i_bottomMsg;
|
btnBottomTip.Height = btnBottomTip.GetRealRowCountByText() * Application.GetRealHeight(24);
|
btnBottomTip.IsMoreLines = true;
|
bodyFrameLayout.AddChidren(btnBottomTip);
|
btnBottomTip.ButtonClickEvent += (sender, e) =>
|
{
|
this.ActionEvent?.Invoke(2, null);
|
};
|
}
|
|
//密码输入框
|
this.txtPassword = new EditText();
|
txtPassword.IsNumberKeyboardType = true;
|
txtPassword.Height = 1;
|
bodyFrameLayout.AddChidren(txtPassword);
|
txtPassword.Foucs = true;
|
txtPassword.TextChangeEventHandler = (sender, e) =>
|
{
|
string passwrod = txtPassword.Text.Trim();
|
btnErrorMsg.Text = string.Empty;
|
for (int i = 0; i < 4; i++)
|
{
|
if (i < passwrod.Length)
|
{
|
//实心图标
|
this.listIconContr[i].IsSelected = true;
|
}
|
else
|
{
|
//空心图标
|
this.listIconContr[i].IsSelected = false;
|
}
|
}
|
if (passwrod.Length == 4)
|
{
|
//关闭输入法
|
Application.HideSoftInput();
|
|
this.ActionEvent?.Invoke(1, passwrod);
|
}
|
};
|
|
bodyFrameLayout.ButtonClickEvent += (sedner, e) =>
|
{
|
txtPassword.Foucs = true;
|
};
|
btnIcon1.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
|
btnIcon2.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
|
btnIcon3.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
|
btnIcon4.ButtonClickEvent += (sender, e) => { bodyFrameLayout.ButtonClickEvent(null, null); };
|
}
|
|
/// <summary>
|
/// 初始化图标控件
|
/// </summary>
|
/// <returns></returns>
|
private IconViewControl InitIconControl()
|
{
|
var btnIcon1 = new IconViewControl(16);
|
btnIcon1.BorderColor = CSS_Color.FirstLevelTitleColor;
|
btnIcon1.BorderWidth = (uint)Application.GetRealWidth(1);
|
btnIcon1.Radius = (uint)Application.GetRealWidth(8);
|
btnIcon1.BackgroundColor = CSS_Color.MainBackgroundColor;
|
btnIcon1.SelectedBackgroundColor = CSS_Color.FirstLevelTitleColor;
|
bodyFrameLayout.AddChidren(btnIcon1);
|
|
//加入缓存
|
this.listIconContr.Add(btnIcon1);
|
|
return btnIcon1;
|
}
|
|
#endregion
|
|
#region ■ 界面关闭___________________________
|
|
/// <summary>
|
/// 界面关闭
|
/// </summary>
|
public override void CloseFormBefore()
|
{
|
base.CloseFormBefore();
|
|
this.ActionEvent = null;
|
}
|
|
#endregion
|
|
#region ■ 一般方法___________________________
|
|
/// <summary>
|
/// 显示错误消息
|
/// </summary>
|
/// <param name="i_errorMsg">需要显示的错误消息</param>
|
public void ShowErrorMsg(string i_errorMsg)
|
{
|
this.txtPassword.Text = string.Empty;
|
btnErrorMsg.Text = i_errorMsg;
|
btnErrorMsg.Height = btnErrorMsg.GetRealRowCountByText() * Application.GetRealHeight(24);
|
//全部弄成空心图标
|
for (int i = 0; i < this.listIconContr.Count; i++)
|
{
|
this.listIconContr[i].IsSelected = false;
|
}
|
}
|
|
#endregion
|
}
|
}
|