using System;
using System.Threading;
using HDL_ON.DAL.Server;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
///
/// 增加子账号界面
///
public partial class AddMemberScanPage : FrameLayout
{
FrameLayout bodyView;
Button btnAddMember;
Button btnScan;
EditText etMemberAccount;
EditText etMemberName;
///
/// 人脸照片数据
///
string base64string;
Action backAction;
public AddMemberScanPage(Action action)
{
backAction = action;
bodyView = this;
}
public void LoadPage()
{
bodyView.BackgroundColor = CSS_Color.MainBackgroundColor;
new TopViewDiv(bodyView, Language.StringByID(StringId.AddMember)).LoadTopView();
if (Entity.DB_ResidenceData.Instance.SupportFacePass)
{
var btnMemberName = new Button()
{
Y = Application.GetRealHeight(70),
X = Application.GetRealWidth(16),
Height = Application.GetRealHeight(32),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.MemberName,
};
bodyView.AddChidren(btnMemberName);
etMemberName = new EditText()
{
Y = btnMemberName.Bottom,
X = Application.GetRealWidth(16),
Width = Application.GetRealWidth(356),
Height = Application.GetRealHeight(40),
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextAlignment = TextAlignment.CenterLeft,
PlaceholderText = Language.StringByID(StringId.PleaseEnterContent),
PlaceholderTextColor = CSS_Color.PromptingColor2
};
bodyView.AddChidren(etMemberName);
var btnLine = new Button()
{
Y = etMemberName.Bottom,
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(1),
BackgroundColor = CSS_Color.DividingLineColor,
};
bodyView.AddChidren(btnLine);
var btnTitle = new Button()
{
Y = btnLine.Bottom + Application.GetRealHeight(20),
X = Application.GetRealWidth(16),
Height = Application.GetRealHeight(32),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.MemberAccount,
};
bodyView.AddChidren(btnTitle);
etMemberAccount = new EditText()
{
Y = btnTitle.Bottom,
X = Application.GetRealWidth(16),
Width = Application.GetRealWidth(356),
Height = Application.GetRealHeight(40),
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextAlignment = TextAlignment.CenterLeft,
PlaceholderText = Language.StringByID(StringId.PleaseEnterContent),
PlaceholderTextColor = CSS_Color.PromptingColor2
};
bodyView.AddChidren(etMemberAccount);
var btnLine1 = new Button()
{
Y = etMemberAccount.Bottom,
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(1),
BackgroundColor = CSS_Color.DividingLineColor,
};
bodyView.AddChidren(btnLine1);
#region 人脸管理
var btnMemberFaceTitle = new Button()
{
Y = btnLine1.Bottom + Application.GetRealHeight(20),
X = Application.GetRealWidth(16),
Height = Application.GetRealHeight(32),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.MemberFace,
};
bodyView.AddChidren(btnMemberFaceTitle);
var btnAddFace = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = btnMemberFaceTitle.Bottom,
Width = Application.GetRealWidth(120),
Height = Application.GetRealWidth(120),
Radius = (uint)Application.GetRealWidth(22),
BorderWidth = 0,
UnSelectedImagePath = "PersonalCenter/FacePassage/FaceIcon.png",
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.SubheadingFontSize,
IsBold = true,
TextAlignment = TextAlignment.Center,
};
bodyView.AddChidren(btnAddFace);
EventHandler eFaceHandler = (sender, e) =>
{
Application.HideSoftInput();
if (OnAppConfig.Instance.FaceManagementTip)
{
OnAppConfig.Instance.FaceManagementTip = true;
OnAppConfig.Instance.SaveConfig();
LoadPictureOptionView(btnAddFace);
return;
}
Dialog dialog = new Dialog()
{
BackgroundColor = CSS_Color.DialogTransparentColor1,
};
FrameLayout contentView = new FrameLayout()
{
Gravity = Gravity.Center,
Width = Application.GetRealWidth(270),
Height = Application.GetRealHeight(192),
BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
BorderColor = 0x00000000,
BorderWidth = 0,
Radius = (uint)Application.GetMinRealAverage(10),
};
dialog.AddChidren(contentView);
Button btnTitle2 = new Button()
{
Y = Application.GetRealHeight(16),
Height = Application.GetRealHeight(30),
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextAlignment = TextAlignment.Center,
IsBold = true,
TextID = StringId.FaceProtocolPrompt,
};
contentView.AddChidren(btnTitle2);
Button btnMsg = new Button()
{
Gravity = Gravity.CenterHorizontal,
Height = Application.GetRealHeight(35),
Y = btnTitle2.Bottom,
Width = Application.GetRealHeight(200),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = " 为保护您的个人隐私权益,特向您通知并申请明确同意授权。请你仔细阅读",
IsMoreLines = true,
};
if(Language.CurrentLanguage != "Chinese")
{
btnMsg.Text = " In order to protect your personal privacy rights, we hereby notify you and apply for explicit consent authorization. Please read it carefully";
}
contentView.AddChidren(btnMsg);
Button btnMsg1 = new Button()
{
Gravity = Gravity.CenterHorizontal,
Height = Application.GetRealHeight(15),
Y = btnMsg.Bottom,
Width = Application.GetRealHeight(200),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = " 《On Pro人脸信息采集协议》",
IsMoreLines = true,
};
if (Language.CurrentLanguage != "Chinese")
{
btnMsg1.Text = " 'On Pro Face Information Collection Protocol'";
}
contentView.AddChidren(btnMsg1);
Button btnMsg2 = new Button()
{
Gravity = Gravity.CenterHorizontal,
Height = Application.GetRealHeight(35),
Y = btnMsg1.Bottom,
Width = Application.GetRealHeight(200),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = " 若同意该协议,请点击【同意】按键,表示您已经理解并同意人脸信息采集协议。",
IsMoreLines = true,
};
if (Language.CurrentLanguage != "Chinese")
{
btnMsg2.Text = " If you agree to this agreement, please click the [Agree] button to indicate that you have understood and agreed to the face information collection agreement.";
}
contentView.AddChidren(btnMsg2);
Button btnLine2 = new Button()
{
Y = Application.GetRealHeight(149),
Height = Application.GetRealHeight(1),
Width = Application.GetRealWidth(270 / 2),
BackgroundColor = CSS.CSS_Color.DividingLineColor,
};
contentView.AddChidren(btnLine2);
Button btnCancel = new Button()
{
Y = btnLine2.Bottom,
Width = Application.GetRealWidth(135),
Height = Application.GetRealHeight(43),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.SubheadingFontSize,
//SelectedTextColor = CSS_Color.MainBackgroundColor,
//SelectedBackgroundColor = CSS_Color.MainColor,
TextID = StringId.Disagree,
};
contentView.AddChidren(btnCancel);
Button btnConfirm = new Button()
{
X = btnCancel.Right,
Y = btnLine2.Y,
Width = Application.GetRealWidth(135),
Height = Application.GetRealHeight(45),
TextAlignment = TextAlignment.Center,
//TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.MainBackgroundColor,
BackgroundColor = CSS_Color.MainColor,
TextID = StringId.Agree,
};
contentView.AddChidren(btnConfirm);
//例:右下圆角 大小为50
int mRectCornerID = HDLUtils.RectCornerBottomRight;
btnConfirm.SetCornerWithSameRadius((uint)Application.GetMinRealAverage(10), mRectCornerID);
dialog.Show();
btnCancel.MouseUpEventHandler += (sender2, e2) =>
{
dialog.Close();
};
btnMsg1.MouseUpEventHandler += (sender2, e2) =>
{
string url = "https://developer.hdlcontrol.com/人脸信息采集协议.html";
if (Language.CurrentLanguage != "Chinese")
{
url = "https://developer.hdlcontrol.com/Face information collection protocol.html";
}
new WebViewDialog().LoadPage("人脸信息采集协议", url);
dialog.Close();
};
btnConfirm.MouseUpEventHandler = (sender2, e2) => {
dialog.Close();
OnAppConfig.Instance.FaceManagementTip = true;
OnAppConfig.Instance.SaveConfig();
LoadPictureOptionView(btnAddFace);
};
};
btnAddFace.MouseUpEventHandler = eFaceHandler;
#endregion
btnAddMember = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = btnAddFace.Bottom + Application.GetRealHeight(30),
Width = Application.GetRealWidth(220),
Height = Application.GetRealWidth(44),
Radius = (uint)Application.GetRealWidth(22),
BorderWidth = 0,
BorderColor = 0x00000000,
BackgroundColor = CSS_Color.MainColor,
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.SubheadingFontSize,
IsBold = true,
TextAlignment = TextAlignment.Center,
TextID = StringId.Confirm,
};
bodyView.AddChidren(btnAddMember);
btnScan = new Button()
{
Y = btnTitle.Bottom,
Width = Application.GetRealWidth(40),
Height = Application.GetRealWidth(40),
X = Application.GetRealWidth(310),
UnSelectedImagePath = "Public/Scan.png"
};
bodyView.AddChidren(btnScan);
}
else
{
var btnTitle2 = new Button()
{
Y = Application.GetRealHeight(70),
X = Application.GetRealWidth(16),
Height = Application.GetRealHeight(32),
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.TextFontSize,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.NewMemberAccount,
};
bodyView.AddChidren(btnTitle2);
etMemberAccount = new EditText()
{
Y = btnTitle2.Bottom,
X = Application.GetRealWidth(16),
Width = Application.GetRealWidth(356),
Height = Application.GetRealHeight(40),
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextAlignment = TextAlignment.CenterLeft,
PlaceholderText = Language.StringByID(StringId.PleaseEnterContent),
PlaceholderTextColor = CSS_Color.PromptingColor2
};
bodyView.AddChidren(etMemberAccount);
var btnLine = new Button()
{
Y = etMemberAccount.Bottom,
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(1),
BackgroundColor = CSS_Color.DividingLineColor,
};
bodyView.AddChidren(btnLine);
btnAddMember = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(244),
Width = Application.GetRealWidth(220),
Height = Application.GetRealWidth(44),
Radius = (uint)Application.GetRealWidth(22),
BorderWidth = 0,
BorderColor = 0x00000000,
BackgroundColor = CSS_Color.MainColor,
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.SubheadingFontSize,
IsBold = true,
TextAlignment = TextAlignment.Center,
TextID = StringId.Confirm,
};
bodyView.AddChidren(btnAddMember);
btnScan = new Button()
{
Y = btnAddMember.Bottom,
Height = Application.GetRealHeight(44),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.TextFontSize,
TextID = StringId.ScanQRCoden,
};
bodyView.AddChidren(btnScan);
}
LoadEventList();
}
void TipDivMsg(string msg)
{
var tipBodyView = new FrameLayout();
bodyView.AddChidren(tipBodyView);
var msgView = new FrameLayout()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(167),
Width = Application.GetRealWidth(210),
Height = Application.GetRealHeight(62),
Radius = (uint)Application.GetRealWidth(8),
BorderWidth = 0,
BorderColor = 0x00000000,
BackgroundColor = 0xFF333333,
};
tipBodyView.AddChidren(msgView);
var btnMsg = new Button()
{
Gravity = Gravity.Center,
Width = Application.GetRealWidth(186),
Height = Application.GetRealHeight(42),
TextColor = CSS_Color.MainBackgroundColor,
TextSize = CSS_FontSize.TextFontSize,
TextAlignment = TextAlignment.Center,
Text = msg,
IsMoreLines = true,
};
msgView.AddChidren(btnMsg);
new System.Threading.Thread(() => {
System.Threading.Thread.Sleep(1200);
Application.RunOnMainThread(() => {
tipBodyView.RemoveAll();
tipBodyView.RemoveFromParent();
});
}) { IsBackground = true }.Start();
}
const int imageHeight = 400;
///
/// 加载图标选择选项
///
void LoadPictureOptionView(Button btnAddFace)
{
var pView = new FrameLayout()
{
BackgroundColor = CSS_Color.DialogTransparentColor1,
};
bodyView.AddChidren(pView);
var pictureOptionView = new FrameLayout()
{
Y = Application.GetRealHeight(445 + 50),
Height = Application.GetRealHeight(250),
AnimateSpeed = 0.3f,
Animate = Animate.DownToUp,
};
pView.AddChidren(pictureOptionView);
var optionView = new VerticalScrolViewLayout()
{
Gravity = Gravity.CenterHorizontal,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(100),
BackgroundColor = CSS_Color.MainBackgroundColor,
Radius = (uint)Application.GetRealWidth(12),
};
pictureOptionView.AddChidren(optionView);
var btnTakePicture = new Button()
{
Height = Application.GetRealHeight(50),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.TextualColor,
SelectedTextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextID = StringId.TakePicture,
};
optionView.AddChidren(btnTakePicture);
optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
var btnAlbum = new Button()
{
Height = Application.GetRealHeight(50),
TextAlignment = TextAlignment.Center,
TextColor = CSS_Color.TextualColor,
SelectedTextColor = CSS_Color.MainColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextID = StringId.Album,
};
optionView.AddChidren(btnAlbum);
optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
var btnCancel = new Button()
{
Gravity = Gravity.CenterHorizontal,
Y = Application.GetRealHeight(8) + optionView.Bottom,
Width = Application.GetRealWidth(343),
Height = Application.GetRealHeight(50),
BackgroundColor = CSS_Color.MainBackgroundColor,
Radius = (uint)Application.GetRealWidth(12),
TextID = StringId.Cancel,
TextColor = CSS_Color.WarningColor,
TextSize = CSS_FontSize.SubheadingFontSize,
};
pictureOptionView.AddChidren(btnCancel);
pictureOptionView.MouseUpEventHandler = (sender, e) =>
{
pictureOptionView.Parent.RemoveFromParent();
};
pView.MouseUpEventHandler = (sender, e) =>
{
pictureOptionView.Parent.RemoveFromParent();
};
btnCancel.MouseUpEventHandler = (sender, e) =>
{
pictureOptionView.Parent.RemoveFromParent();
};
btnTakePicture.MouseDownEventHandler = (sender, e) =>
{
btnTakePicture.IsSelected = true;
};
btnTakePicture.MouseUpEventHandler = (sender, e) =>
{
btnTakePicture.IsSelected = false;
var imageName = Guid.NewGuid().ToString();
CropImage.TakePicture((imagePath) =>
{
if (imagePath != null)
{
var imageBytes = getFaceImageBytes(imagePath);
btnAddFace.ImageBytes = imageBytes;
base64string = Convert.ToBase64String(imageBytes);
}
}, imageName, 6, 6, imageHeight);
pictureOptionView.Parent.RemoveFromParent();
};
btnAlbum.MouseDownEventHandler = (sender, e) =>
{
btnAlbum.IsSelected = true;
};
btnAlbum.MouseUpEventHandler = (sender, e) =>
{
btnAlbum.IsSelected = false;
//从相册选择图片裁剪
var imageName = Guid.NewGuid().ToString();
//var imageName = scene.sid;
CropImage.SelectPicture((imagePath) =>
{
if (imagePath != null)
{
var imageBytes = getFaceImageBytes(imagePath);
btnAddFace.ImageBytes = imageBytes;
base64string = Convert.ToBase64String(imageBytes);
}
}, imageName, 6, 6, imageHeight);
pictureOptionView.Parent.RemoveFromParent();
};
}
///
/// 获取本地选取的人脸数据
///
///
///
byte[] getFaceImageBytes(string selectImagePath)
{
var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath);
System.IO.File.Delete(selectImagePath);
return imageBytes;
}
}
}