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;
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);
var 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) =>
{
if (OnAppConfig.Instance.FaceManagementTip)
{
OnAppConfig.Instance.FaceManagementTip = true;
OnAppConfig.Instance.SaveConfig();
LoadPictureOptionView();
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 btnTitle = 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(btnTitle);
Button btnMsg = new Button()
{
Gravity = Gravity.CenterHorizontal,
Height = Application.GetRealHeight(35),
Y = btnTitle.Bottom,
Width = Application.GetRealHeight(200),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.TextualColor,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
Text = " 为保护您的个人隐私权益,特向您通知并申请明确同意授权。请你仔细阅读",
IsMoreLines = true,
};
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,
};
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,
};
contentView.AddChidren(btnMsg2);
Button btnLine = new Button()
{
Y = Application.GetRealHeight(149),
Height = Application.GetRealHeight(1),
Width = Application.GetRealWidth(270 / 2),
BackgroundColor = CSS.CSS_Color.DividingLineColor,
};
contentView.AddChidren(btnLine);
Button btnCancel = new Button()
{
Y = btnLine.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 = btnLine.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 += (sender, e) =>
{
dialog.Close();
};
btnMsg1.MouseUpEventHandler += (sender, e) =>
{
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 = (sender, e) => {
dialog.Close();
OnAppConfig.Instance.FaceManagementTip = true;
OnAppConfig.Instance.SaveConfig();
LoadPictureOptionView();
};
};
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.ConfirmInvitation,
};
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 btnTitle = 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(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 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.ConfirmInvitation,
};
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()
{
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) =>
{
CropImageCallBack(imagePath, 1, imageName);
}, imageName, 4, 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) =>
{
CropImageCallBack(imagePath, 2, imageName);
}, imageName, 4, 6, imageHeight);
pictureOptionView.Parent.RemoveFromParent();
};
}
///
/// 裁剪完照片回调,统一处理
///
/// 裁剪后的真实路径
/// 照片来源;1:拍照;2:图库
void CropImageCallBack(string selectImagePath, int imageSource, string imageName)
{
if (string.IsNullOrEmpty(selectImagePath) == true)
{
return;
}
//上传成功到回调
Action uploadSuccessAction = (isSuccess) =>
{
//点击重新录入事件
Action action = () =>
{
if (!isSuccess)
{
if (imageSource == 1)
{
CropImage.TakePicture((imagePath) =>
{
CropImageCallBack(imagePath, 2, imageName);
}, imageName, 4, 6, imageHeight);
}
else
{
CropImage.SelectPicture((imagePath) =>
{
CropImageCallBack(imagePath, 1, imageName);
}, imageName, 4, 6, imageHeight);
}
}
};
if (isSuccess)
{
//ReadFaceInfo(false);
}
Application.RunOnMainThread(() =>
{
var page = new FaceSettingResultPage(action);
MainPage.BasePageView.AddChidren(page);
page.LoadPage(isSuccess);
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
});
};
//上传图片到云端
UploadImage(selectImagePath, uploadSuccessAction);
}
///
/// 上传图片方法
///
/// 裁剪后的图片路径
///
///
void UploadImage(string selectImagePath, Action uploadResultAction)
{
try
{
//1.读取裁剪后的图片,然后删除
var imageBytes = Shared.IO.FileUtils.ReadFile(selectImagePath);
System.IO.File.Delete(selectImagePath);
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start(Language.StringByID(StringId.PleaseWait));
//开始上传
new Thread(() =>
{
try
{
string base64string = Convert.ToBase64String(imageBytes);
//Utlis.WriteLine("上传图片Length:" + imageBytes.Length + " base64:" + base64string);
var pack = new HttpServerRequest().FaceSetting(base64string);
if (pack != null)
{
Utlis.WriteLine("上传结果:" + pack.message);
uploadResultAction?.Invoke(pack.Code == StateCode.SUCCESS);
}
}
catch (Exception ex)
{
}
finally
{
Application.RunOnMainThread(() =>
{
if (waitPage != null)
{
waitPage.RemoveFromParent();
waitPage = null;
}
});
}
})
{ IsBackground = true }.Start();
}
catch (Exception ex)
{
MainPage.Log(ex.Message);
}
}
}
}