using System; using System.Collections.Generic; using Shared; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class AddTarget : FrameLayout { public AddTarget() { Tag = "Logic"; } public void Show() { LogicView.TopView topView = new LogicView.TopView(); this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (e, sen) => { RemoveFromParent(); }; topView.topNameBtn.TextID = StringId.addtarget; FrameLayout viewLayout = new FrameLayout { Y = Application.GetRealHeight(64), Width = Application.GetRealWidth(LogicView.TextSize.view375), Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64), BackgroundColor = CSS.CSS_Color.viewMiddle, }; this.AddChidren(viewLayout); #region 功能 //功能 LogicView.SelectTypeView functionView = new LogicView.SelectTypeView(); functionView.btnText.TextID = StringId.funLogic; functionView.btnIcon.UnSelectedImagePath = "LogicIcon/functionicon.png"; viewLayout.AddChidren(functionView.FLayoutView()); //场景 LogicView.SelectTypeView sceneView= new LogicView.SelectTypeView(); sceneView.frameLayout.Y = functionView.frameLayout.Bottom; sceneView.btnText.TextID = StringId.Scenes; sceneView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png"; viewLayout.AddChidren(sceneView.FLayoutView()); //安防 LogicView.SelectTypeView securityView = new LogicView.SelectTypeView(); securityView.frameLayout.Y = sceneView.frameLayout.Bottom; securityView.btnText.TextID = StringId.anfang; securityView.btnIcon.UnSelectedImagePath = "LogicIcon/security.png"; viewLayout.AddChidren(securityView.FLayoutView()); //延时 LogicView.SelectTypeView delayView = new LogicView.SelectTypeView(); delayView.frameLayout.Y = sceneView.frameLayout.Bottom; delayView.btnText.TextID = StringId.delayLogic; delayView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png"; //viewLayout.AddChidren(delayView.FLayoutView()); #endregion #region 所有点击事件 //功能点击事件 functionView.btnClick.MouseUpEventHandler += (sen, e) => { FunTpye funTpye = new FunTpye(); MainPage.BasePageView.AddChidren(funTpye); funTpye.Show(LogicMethod.target_if); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; //场景点击事件 sceneView.btnClick.MouseUpEventHandler += (sen, e) => { SceneMethod(); }; //安防点击事件 securityView.btnClick.MouseUpEventHandler += (sen, e) => { Security security = new Security(); MainPage.BasePageView.AddChidren(security); security.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; //SecurityMethod(this); }; //延时点击事件 delayView.btnClick.MouseUpEventHandler += (sen, e) => { FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(fLayout); Delayed(fLayout,false,1000); }; #endregion } /// /// 添加场景 /// public void SceneMethod() { var sceneList = LogicMethod.CurrLogicMethod.GetSceneList(); List nameList = new List(); for (int i = 0; i < sceneList.Count; i++) { var scene = sceneList[i]; nameList.Add(scene.name); } PublicInterface publicInterface = new PublicInterface(); publicInterface.FrameOrVv(this, nameList,new List { }, StringId.addSceneLogic, (index) => { var sceneSelecetd = sceneList[index]; Output outputDevice = new Output(); outputDevice.target_type = "2"; outputDevice.sid = sceneSelecetd.sid; //没啥作用,为了发送数据格式统一; outputDevice.status = new List> { new Dictionary { { "key", "scene" }, { "value", "0" } } }; AddOutput(outputDevice); LogicMethod.CurrLogicMethod.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); } /// /// 添加安防 /// public void SecurityMethod(FrameLayout frameLayout, bool edit=false, int index1=-1) { List stateList = new List(); if (edit&& index1 != -1) { Output output = Logic.currlogic.output[index1]; var security = LogicMethod.CurrLogicMethod.GetSecurity(output.sid); stateList.Add(security.name); } var securityList = LogicMethod.CurrLogicMethod.GetSecurityList(); List nameList = new List(); for (int i = 0; i < securityList.Count; i++) { var security = securityList[i]; nameList.Add(security.name); } PublicInterface publicInterface = new PublicInterface(); publicInterface.FrameOrVv(frameLayout, nameList, stateList, StringId.addSecurityLogic,(index) => { var securitySelecetd = securityList[index]; Output outputDevice = new Output(); outputDevice.target_type = "3"; outputDevice.sid = securitySelecetd.sid; //没啥作用,为了发送数据格式统一; outputDevice.status = new List> { new Dictionary { { "key", "security" }, { "value", "0" } } }; AddOutput(outputDevice,true); LogicMethod.CurrLogicMethod.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }); } /// /// 延时时间方法 /// /// 在哪个界面显示 /// (true=编辑;false=新建) /// 编辑条件的索引 public void Delayed(FrameLayout fLayout, bool edit, int index) { LogicView.TimeView timePointView = new LogicView.TimeView(); timePointView.FLayoutView(fLayout); EventHandler RemovefLayout = (sender, e1) => { //移除fLayout界面 fLayout.RemoveFromParent(); }; //取消点击事件 timePointView.btnCancel.MouseUpEventHandler += RemovefLayout; //加载数据界面的设置方法(列表互不联动) timePointView.mUIPickerView.setNPicker(timePointView.GethStringList0(), timePointView.GetmStringList(), null); //默认初始选中状态 timePointView.mUIPickerView.setCurrentItems(0, 5, 0); //定义一个局部变量记录选中时间 string timepoint = "00:05"; if (edit) { Output output = Logic.currlogic.output[index]; if (output.target_type == "4") { List> dicList = output.status as List>; foreach (var dic in dicList) { string timeValue = dic["value"]; int hIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GethIntList()); int mIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList()); //更新初始状态 timePointView.mUIPickerView.setCurrentItems(hIndex, mIndex, 0); timepoint = timeValue; } } } //选中时间回调方法,时间变化一次回调一次 timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) => { string hour = timePointView.GethStringList0()[index1].Split(' ')[0]; string minuet = timePointView.GetmStringList()[index2].Split(' ')[0]; timepoint = hour + ":" + minuet; }; //确定点击事件 timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) => { if (timepoint=="00:00") { //提示 return; } Output outputTime= new Output(); outputTime.sid = LogicMethod.CurrLogicMethod.NewSid(); outputTime.target_type = "4"; Dictionary dic = new Dictionary(); LogicMethod.CurrLogicMethod.dictionary(dic, "key", "delay"); LogicMethod.CurrLogicMethod.dictionary(dic, "value", timepoint); outputTime.status.Add(dic); if (edit) { //移除旧数据 Logic.currlogic.output.RemoveAt(index); //新数据插入旧数据的位置; Logic.currlogic.output.Insert(index, outputTime); } else { //添加一个新的时间点条件 AddOutput(outputTime); } fLayout.RemoveFromParent(); LogicMethod.CurrLogicMethod.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } /// /// 添加目标 /// /// /// 表示启用不同条件 private void AddOutput(Output target,bool bool_if=false) { int indexValue = -1; for (int i = 0; i < Logic.currlogic.output.Count; i++) { if (bool_if) { ///安防允许一种 if (Logic.currlogic.output[i].target_type == target.target_type) { indexValue = i; break; } } else { if (Logic.currlogic.output[i].sid == target.sid) { indexValue = i; break; } } } if (indexValue != -1) { Logic.currlogic.output.RemoveAt(indexValue); Logic.currlogic.output.Insert(indexValue, target); } else { Logic.currlogic.output.Add(target); } } } }