using System;
using HDL_ON.Common;
using HDL_ON.DAL.Server;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI.UI2.FuntionControlView.VideoDoorLock
{
///
/// 萤石视频门锁-人脸开锁设置页面
///
public class UnlockSettingFacePage : FrameLayout
{
FrameLayout bodyView;
bool faceUnlockSwitch;
Function device;
public UnlockSettingFacePage(Function function)
{
bodyView = this;
device = function;
}
public void LoadPage()
{
var faceUnlockSetup = new FaceUnlockSetupObj();
new TopViewDiv(bodyView, Language.StringByID(StringId.FaceUnlockSetting)).LoadTopView();
var contentView = new VerticalScrolViewLayout()
{
Y = Application.GetRealHeight(64),
Height = Application.GetRealHeight(600),
ScrollEnabled = false,
BackgroundColor = CSS_Color.BackgroundColor,
};
bodyView.AddChidren(contentView);
#region 人脸开锁
var faceUnlockView = new FrameLayout()
{
Height = Application.GetRealHeight(74),
BackgroundColor = CSS_Color.MainBackgroundColor,
};
contentView.AddChidren(faceUnlockView);
var btnFaceUnlockText = new Button()
{
X = Application.GetRealWidth(16),
Y = Application.GetRealHeight(7),
Height = Application.GetRealHeight(37),
TextAlignment = TextAlignment.CenterLeft,
TextColor = CSS_Color.FirstLevelTitleColor,
TextSize = CSS_FontSize.SubheadingFontSize,
TextID = StringId.FaceUnlock,
};
faceUnlockView.AddChidren(btnFaceUnlockText);
var btnFaceUnlockTipText = new Button()
{
X = Application.GetRealWidth(16),
Y = btnFaceUnlockText.Bottom,
Width = Application.GetRealWidth(339),
Height = Application.GetRealHeight(37),
TextAlignment = TextAlignment.TopLeft,
TextColor = CSS_Color.PromptingColor1,
TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
IsMoreLines = true,
TextID = StringId.FaceUnlockOpenTip
};
faceUnlockView.AddChidren(btnFaceUnlockTipText);
var btnFaceUnlockSwitchIcon = new Button()
{
X = Application.GetRealWidth(322),
Y = Application.GetRealHeight(8),
Width = Application.GetMinRealAverage(36),
Height = Application.GetMinRealAverage(36),
UnSelectedImagePath = "Public/Switch_2.png",
SelectedImagePath = "Public/SwitchOn_2.png",
IsSelected = faceUnlockSwitch,
};
faceUnlockView.AddChidren(btnFaceUnlockSwitchIcon);
var waitPage = new Loading();
bodyView.AddChidren(waitPage);
waitPage.Start("");
#endregion
contentView.AddChidren(new Button()
{
Height = Application.GetRealHeight(8),
BackgroundColor = CSS_Color.BackgroundColor,
});
var view = new VerticalScrolViewLayout()
{
Height = Application.GetRealHeight(300),
};
contentView.AddChidren(view);
btnFaceUnlockSwitchIcon.MouseUpEventHandler = (sender, e) =>
{
waitPage.Start("");
bool changeState = false;
if (!btnFaceUnlockSwitchIcon.IsSelected)
{
btnFaceUnlockSwitchIcon.IsSelected = true;
changeState = true;
}
new System.Threading.Thread(() =>
{
try
{
var pack = ApiUtlis.Ins.HttpRequest.SetFaceUnlockCfg(device.deviceId, changeState, faceUnlockSetup.mode);
if (pack != null && pack.Code == StateCode.SUCCESS)
{
Application.RunOnMainThread(() =>
{
//更新界面
btnFaceUnlockSwitchIcon.IsSelected = changeState;
loadSubView(view, faceUnlockSetup);
});
}
else
{
//失败提示
Application.RunOnMainThread(() =>
{
if (!string.IsNullOrEmpty(pack.message))
{
var tip = new Tip()
{
MaxWidth = Application.GetRealWidth(300),
Text = $"{pack.message}({pack.Code})",
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(MainPage.BaseView);
}
});
}
}
catch (Exception ex)
{
MainPage.Log($"btnFaceUnlockSwitchIcon error : {ex.Message}");
}
finally
{
Application.RunOnMainThread(() =>
{
waitPage.Hide();
});
}
})
{ IsBackground = true }.Start();
};
new System.Threading.Thread(() => {
try
{
var pack = ApiUtlis.Ins.HttpRequest.GetFaceUnlockCfg(device.deviceId);
if (pack != null && pack.Code == StateCode.SUCCESS)
{
Application.RunOnMainThread(() =>
{
//更新界面
faceUnlockSetup = Newtonsoft.Json.JsonConvert.DeserializeObject(pack.Data.ToString());
btnFaceUnlockSwitchIcon.IsSelected = faceUnlockSetup.enabled;
loadSubView(view, faceUnlockSetup);
});
}
else
{
//失败提示
Application.RunOnMainThread(() =>
{
if (!string.IsNullOrEmpty(pack.message))
{
var tip = new Tip()
{
MaxWidth = Application.GetRealWidth(300),
Text = $"{pack.message}({pack.Code})",
CloseTime = 3,
Direction = AMPopTipDirection.None
};
tip.Show(MainPage.BaseView);
}
});
}
}
catch (Exception ex)
{
MainPage.Log($"UnlockSettingPage error : {ex.Message}");
}
finally
{
Application.RunOnMainThread(() =>
{
waitPage.Hide();
});
}
})
{ IsBackground = true }.Start();
}
void loadSubView(VerticalScrolViewLayout view, FaceUnlockSetupObj faceUnlockSetup)
{
if (faceUnlockSetup.enabled)
{
#region 触发方式 TriggerMode
var triggerModeView = new FrameLayout()
{
Height = Application.GetRealHeight(50),
BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
};
view.AddChidren(triggerModeView);
var btnTriggerModeRight = new Button()
{
X = Application.GetRealWidth(339),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/Right.png",
};
triggerModeView.AddChidren(btnTriggerModeRight);
var btnTriggerModeStateText = new Button()
{
X = Application.GetRealWidth(100),
Width = Application.GetRealWidth(223),
TextAlignment = TextAlignment.CenterRight,
TextSize = CSS_FontSize.TextFontSize,
TextColor = CSS_Color.PromptingColor1,
};
triggerModeView.AddChidren(btnTriggerModeStateText);
btnTriggerModeStateText.TextID = faceUnlockSetup.mode == 0 ? StringId.AutomaticTriggering : StringId.ManualTriggering;
var btnTriggerModeText = new Button()
{
X = Application.GetRealWidth(16),
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.TriggerMode,
};
triggerModeView.AddChidren(btnTriggerModeText);
btnTriggerModeText.MouseUpEventHandler = (sender, e) =>
{
var page = new VideoDoorlockFaceUnlockTriggerSettingPage(device, faceUnlockSetup);
MainPage.BasePageView.AddChidren(page);
page.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
#endregion
view.AddChidren(new Button { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
}
#region 人脸录入帮助
var faceEntryHelpView = new FrameLayout()
{
Height = Application.GetRealHeight(50),
BackgroundColor = CSS.CSS_Color.MainBackgroundColor,
};
view.AddChidren(faceEntryHelpView);
var btnFaceEntryHelpRight = new Button()
{
X = Application.GetRealWidth(339),
Gravity = Gravity.CenterVertical,
Width = Application.GetMinRealAverage(16),
Height = Application.GetMinRealAverage(16),
UnSelectedImagePath = "Public/Right.png",
};
faceEntryHelpView.AddChidren(btnFaceEntryHelpRight);
var btnFaceEntryHelpText = new Button()
{
X = Application.GetRealWidth(16),
TextSize = CSS_FontSize.SubheadingFontSize,
TextColor = CSS_Color.FirstLevelTitleColor,
TextAlignment = TextAlignment.CenterLeft,
TextID = StringId.FaceEntryHelp,
};
faceEntryHelpView.AddChidren(btnFaceEntryHelpText);
btnFaceEntryHelpText.MouseUpEventHandler = (sender, e) =>
{
var page = new VideoDoorlockFaceUnlockHelpPage();
MainPage.BasePageView.AddChidren(page);
page.LoadPage();
MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
};
#endregion
}
}
///
/// 人脸开锁配置
///
public class FaceUnlockSetupObj
{
///
/// 开关
///
public bool enabled = false;
///
/// 解锁方式 0-自动 1-手动
///
public int mode;
///
/// 灵敏度 0-高 1-低
///
public int sensitivity;
}
}