using System; using System.Collections.Generic; using HDL_ON.DriverLayer; using HDL_ON.Entity; using HDL_ON.UI.CSS; using Shared; namespace HDL_ON.UI { public class ArmCenterPage : FrameLayout { /// /// 主窗体 /// public static ArmCenterPage bodyView; /// /// 自定义布防区域 /// HorizontalScrolViewLayout customDeploymentView; /// /// /// FrameLayout alarmIconBgView; //安防状态背景图 Button btnArmTipIcon; /// /// 安防警报图标 /// Button btnInalarmIcon; /// /// 当前布防名称 /// Button btnDefenseName; /// /// 撤防区域 /// FrameLayout disarmView; /// /// 布防接口 /// SecurityAlarm InDefenseMode = null; /// /// 自定义布防控件列表 /// List armDiyViewList = new List(); Action refreshAction = null; public ArmCenterPage(Action action) { refreshAction = action; bodyView = this; } public ArmCenterPage() { bodyView = this; } public void LoadPage() { Action skipAction = () => { }; new TopViewDiv(bodyView, Language.StringByID(StringId.SecurityCenter)).LoadTopView_ArmCenter(skipAction); VerticalScrolViewLayout contentView = new VerticalScrolViewLayout() { Y = Application.GetRealHeight(64), Height = Application.GetRealHeight(667 - 64), BackgroundColor = CSS_Color.MainBackgroundColor, ScrollEnabled = false, }; bodyView.AddChidren(contentView); contentView.AddChidren(new Button() { Height =Application.GetRealWidth(32), }); alarmIconBgView = new FrameLayout() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(198), Height = Application.GetRealWidth(198), }; contentView.AddChidren(alarmIconBgView); btnArmTipIcon = new Button() { //Gravity = Gravity.CenterHorizontal, //Width = Application.GetRealWidth(198), //Height = Application.GetRealWidth(198), UnSelectedImagePath = "FunctionIcon/ArmCenter/NoDefenseBigIcon.png", SelectedImagePath = "FunctionIcon/ArmCenter/InDefenseBigIcon.png", }; alarmIconBgView.AddChidren(btnArmTipIcon); btnInalarmIcon = new Button() { Width = Application.GetRealWidth(198), Height = Application.GetRealWidth(198), UnSelectedImagePath = "FunctionIcon/ArmCenter/InAlarmBigIcon.png", }; btnInalarmIcon.MouseUpEventHandler = (sender, e) => { if(InDefenseMode!= null) { Action action = () => { InDefenseMode.alarm = false; Control.Ins.ControlSecurity(InDefenseMode, "enable"); }; new PublicAssmebly().TipOptionMsg(StringId.Tip, StringId.ClearTheSecurityAlarmTip, action); } }; btnDefenseName = new Button() { Y = Application.GetRealWidth(117), Height = Application.GetRealHeight(81), TextAlignment = TextAlignment.Center, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextColor = CSS_Color.MainBackgroundColor, }; alarmIconBgView.AddChidren(btnDefenseName); contentView.AddChidren(new Button() { Height = Application.GetRealWidth(16), }); #region 撤防区域 Button btnDisarm; disarmView = new FrameLayout() { Height = 0, }; contentView.AddChidren(disarmView); btnDisarm = new Button() { Y = Application.GetRealHeight(10), Width = Application.GetRealWidth(148), Height = Application.GetRealHeight(40), BackgroundColor = CSS_Color.MainColor, TextAlignment = TextAlignment.Center, TextColor = CSS_Color.MainBackgroundColor, TextID = StringId.chefang,// = "撤防", Radius = (uint)Application.GetRealWidth(20), Gravity = Gravity.CenterHorizontal, }; disarmView.AddChidren(btnDisarm); btnDisarm.MouseUpEventHandler = (sender, e) => { if(InDefenseMode!= null) { Control.Ins.ControlSecurity(InDefenseMode, "disable"); } }; #endregion #region 自定义布防 //自定义布防标题 Button btnCustomDeploymentTitle = new Button() { X = Application.GetRealWidth(24), Height = Application.GetRealWidth(54), TextAlignment = TextAlignment.CenterLeft, IsBold = true, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.FirstLevelTitleColor, TextID = StringId.CustomDeployment, }; contentView.AddChidren(btnCustomDeploymentTitle); customDeploymentView = new HorizontalScrolViewLayout() { X = Application.GetRealWidth(23), Height = Application.GetRealWidth(80), ScrollEnabled = false, }; contentView.AddChidren(customDeploymentView); #endregion contentView.AddChidren(new Button() { Height = Application.GetRealHeight(20), }); #region 固定布防区域 /* var fixedDeploymentView = new FrameLayout() { Height = Application.GetRealHeight(133), }; contentView.AddChidren(fixedDeploymentView); Button btnFixedDeploymentTitle = new Button() { X = Application.GetRealWidth(24), Height = Application.GetRealWidth(24), TextAlignment = TextAlignment.CenterLeft, IsBold = true, TextSize = CSS_FontSize.SubheadingFontSize, TextColor = CSS_Color.FirstLevelTitleColor, TextID = StringId.FixedDeployment, }; fixedDeploymentView.AddChidren(btnFixedDeploymentTitle); Button btnFixedDeploymentTip = new Button() { X = Application.GetRealWidth(24), Y = btnFixedDeploymentTitle.Bottom, Height = Application.GetRealWidth(19), TextAlignment = TextAlignment.CenterLeft, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, TextColor = CSS_Color.MainColor, TextID = StringId.UndoDefenseDoesNotAffect }; fixedDeploymentView.AddChidren(btnFixedDeploymentTip); var fixedDeploymentTypeView = new HorizontalScrolViewLayout() { Y = btnFixedDeploymentTip.Bottom + Application.GetRealHeight(15), Height = Application.GetRealHeight(80), ScrollEnabled = false, }; fixedDeploymentView.AddChidren(fixedDeploymentTypeView); fixedDeploymentTypeView.AddChidren(new Button() { Width = Application.GetRealWidth(24), }); #endregion //灾害报警 var disasterAlarmView = new FixedArmView("FunctionIcon/ArmCenter/DisasterAlarmIcon.png", Language.StringByID(StringId.DisasterDefense), Language.StringByID(StringId.Defense24Hour)); fixedDeploymentTypeView.AddChidren(disasterAlarmView); fixedDeploymentTypeView.AddChidren(new Button() { Width = Application.GetRealWidth(30), }); //防盗报警 var burglarAlarmView = new FixedArmView("FunctionIcon/ArmCenter/BurglarAlarmIcon.png", Language.StringByID(StringId.BurglarAlarm), Language.StringByID(StringId.AlarmMute)); fixedDeploymentTypeView.AddChidren(burglarAlarmView); */ #endregion iniCustomDeploymentView(); } /// /// 初始化报警状态 /// /// public void InitAlarmStatus(bool inAlarm) { try { if (inAlarm) { if (btnInalarmIcon.Parent == null) { alarmIconBgView.AddChidren(btnInalarmIcon); } } else { if (btnInalarmIcon.Parent != null) { btnInalarmIcon.RemoveFromParent(); } } } catch { } } /// /// 初始化自定义布防区域 /// private void iniCustomDeploymentView() { customDeploymentView.RemoveAll(); armDiyViewList.Clear(); foreach (var mode in FunctionList.List.securities) { var armDiyView = new ArmDiyView("FunctionIcon/ArmCenter/AtHomeDefenseIcon.png", "FunctionIcon/ArmCenter/AtHomeDefenseIconOn.png", mode.name,mode.sid); customDeploymentView.AddChidren(armDiyView); EventHandler event2 = (sender, e) => { ShowArmDialog(mode); }; armDiyView.SetClickEvent(event2); if (mode.status == "enable") { armDiyView.LightingView(true); InDefenseMode = mode; ///刷新界面 LoadEvent_RefreshSecurityStatus(InDefenseMode); } armDiyViewList.Add(armDiyView); } if (FunctionList.List.securities.Count < 4) { var view = new ArmDiyView("FunctionIcon/ArmCenter/AddDefenseIcon.png", "FunctionIcon/ArmCenter/AddDefenseIcon.png", Language.StringByID(StringId.Custom),"customSid"); customDeploymentView.AddChidren(view); EventHandler event1 = (sender, e) => { Action refreshAction = () => { iniCustomDeploymentView(); }; var addDefensePage = new AddAlarmDeploymentPage(new SecurityAlarm(), refreshAction); MainPage.BasePageView.AddChidren(addDefensePage); addDefensePage.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; view.SetClickEvent(event1); } } private void ShowArmDialog(SecurityAlarm alarm) { Dialog dialog = new Dialog(); FrameLayout contentView = new FrameLayout(); dialog.AddChidren(contentView); contentView.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; VerticalScrolViewLayout optinView = new VerticalScrolViewLayout() { Gravity = Gravity.CenterHorizontal, Y = Application.GetRealHeight(515), Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(88), Radius = (uint)Application.GetRealHeight(13), BackgroundColor = CSS_Color.MainBackgroundColor, }; contentView.AddChidren(optinView); Button btnOpen = new Button() { Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.MainColor, TextSize = CSS_FontSize.SubheadingFontSize, TextID = StringId.OpenArm }; optinView.AddChidren(btnOpen); optinView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor }); Button btnCheckModify = new Button() { Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.Center, TextColor = CSS_Color.PromptingColor1, TextID = StringId.CheckModify, TextSize = CSS_FontSize.SubheadingFontSize, }; optinView.AddChidren(btnCheckModify); Button btnCancel = new Button() { Gravity = Gravity.CenterHorizontal, Y = optinView.Bottom + Application.GetRealHeight(8), Width = Application.GetRealWidth(343), Height = Application.GetRealHeight(44), Radius = (uint)Application.GetRealHeight(13), BackgroundColor = CSS_Color.MainBackgroundColor, TextID = StringId.Cancel, TextColor = CSS_Color.WarningColor, IsBold = true, }; contentView.AddChidren(btnCancel); dialog.Show(); if(alarm.status == "enable") { btnOpen.TextColor = CSS_Color.PromptingColor1; btnOpen.Text = Language.StringByID(StringId.AlreadyOpened).Trim() ; } btnOpen.MouseUpEventHandler = (sender, e) => { string controlStatus = alarm.status == "disable" ? "enable" : "disable"; new System.Threading.Thread(() => { Control.Ins.ControlSecurity(alarm, controlStatus); }) { IsBackground = true }.Start(); dialog.Close(); }; btnCheckModify.MouseUpEventHandler = (sender, e) => { dialog.Close(); Action refreshAction = () => { iniCustomDeploymentView(); }; var armSetPage = new AddAlarmDeploymentPage(alarm,refreshAction); MainPage.BasePageView.AddChidren(armSetPage); armSetPage.LoadPage(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; btnCancel.MouseUpEventHandler = (sender, e) => { dialog.Close(); }; } public static void LoadEvent_RefreshSecurityStatus(SecurityAlarm updataTemp) { Application.RunOnMainThread(() => { try { if (bodyView != null) { bodyView.refreshAction?.Invoke(); //布防 if (updataTemp.status == "enable") { bodyView.InDefenseMode = updataTemp; foreach (var tempView in bodyView.armDiyViewList) { tempView.LightingView(false); if (tempView.sid == updataTemp.sid) { tempView.LightingView(updataTemp.status == "enable"); } } } else { //撤防 if(bodyView.InDefenseMode.sid == updataTemp.sid) { foreach (var tempView in bodyView.armDiyViewList) { tempView.LightingView(false); } } } //foreach(var tempView in bodyView.armDiyViewList) //{ // tempView.LightingView(false); // if(tempView.sid == updataTemp.sid) // { // tempView.LightingView(updataTemp.status == "enable"); // } //} //没有布防的情况 if (bodyView.InDefenseMode ==null|| bodyView.InDefenseMode.status == "disable") { bodyView.disarmView.Height = 0; bodyView.btnArmTipIcon.IsSelected = false; bodyView.btnDefenseName.Text = ""; } else { bodyView.disarmView.Height = Application.GetRealHeight(68); bodyView.btnArmTipIcon.IsSelected = true; bodyView.btnDefenseName.Text = bodyView.InDefenseMode.name; } bodyView.InitAlarmStatus(bodyView.InDefenseMode.alarm); } } catch (Exception ex) { MainPage.Log($"安防界面更新异常:{ex.Message}"); } }); } } /// /// 安防自定义控件 /// public class ArmDiyView : FrameLayout { Button btnIcon; Button btnText; public string sid; /// /// 自定义布防界面 /// /// 图片路径 /// 图片路径 /// 显示文本 public ArmDiyView(string UnSelectedIconPath, string SelectedIconPath, string Text,string inSid) { sid = inSid; this.Width = Application.GetRealWidth(82); this.Height = Application.GetRealWidth(80); btnIcon = new Button() { Gravity = Gravity.CenterHorizontal, Width = Application.GetRealWidth(40), Height = Application.GetRealWidth(40), UnSelectedImagePath = UnSelectedIconPath, SelectedImagePath = SelectedIconPath, }; this.AddChidren(btnIcon); btnText = new Button() { Y = Application.GetRealWidth(40), Height = Application.GetRealWidth(41), Text = Text, TextAlignment = TextAlignment.Center, TextColor = CSS_Color.TextualColor, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, }; this.AddChidren(btnText); } public void SetClickEvent(EventHandler eventHandler) { this.MouseUpEventHandler = eventHandler; btnIcon.MouseUpEventHandler = eventHandler; btnText.MouseUpEventHandler = eventHandler; } /// /// 点亮区域 /// public void LightingView(bool seleted) { btnIcon.IsSelected = seleted; } } /// /// 固定布防控件 /// public class FixedArmView : FrameLayout { /// /// 固定布防控件 /// /// /// /// public FixedArmView(string iconPath, string title, string titleTip) { this.Width = Application.GetRealWidth(144); this.Height = Application.GetRealHeight(66); this.Radius = (uint)Application.GetRealWidth(6); this.BorderColor = CSS_Color.MainColor; this.BorderWidth = 1; var btnIcon = new Button() { X = Application.GetRealWidth(15), Width = Application.GetRealWidth(24), Height = Application.GetRealWidth(24), Gravity = Gravity.CenterVertical, UnSelectedImagePath = iconPath,// "FunctionIcon/ArmCenter/DisasterAlarmIcon.png", }; this.AddChidren(btnIcon); var btnTitle = new Button() { X = Application.GetRealWidth(55), Width = Application.GetRealWidth(89), Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.FirstLevelTitleColor, TextSize = CSS_FontSize.TextFontSize, Text = title, IsBold = true, }; this.AddChidren(btnTitle); var btnTitleTip = new Button() { X = Application.GetRealWidth(55), Y = Application.GetRealHeight(23), Width = Application.GetRealWidth(89), Height = Application.GetRealHeight(44), TextAlignment = TextAlignment.CenterLeft, TextColor = CSS_Color.PromptingColor1, TextSize = CSS_FontSize.PromptFontSize_FirstLevel, Text = titleTip, }; this.AddChidren(btnTitleTip); } } }