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 delayView = new LogicView.SelectTypeView(); delayView.frameLayout.Y = sceneView.frameLayout.Bottom; delayView.btnText.TextID = StringId.delayLogic; delayView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.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) => { FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(fLayout); SceneMethod(fLayout); }; //延时点击事件 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(FrameLayout fLayout) { int line = 0; var sceneList = LogicMethod.GetSceneList(); if (sceneList.Count == 0|| sceneList.Count>5) { line = 5; } else { line = sceneList.Count; } LogicView.DateView view = new LogicView.DateView(); view.btnTitle.TextID = StringId.addSceneLogic; view.FLayoutView(fLayout, line); view.btnCancel.MouseUpEventHandler += (sender2, e2) => { fLayout.RemoveFromParent(); }; FrameLayout frameL = new FrameLayout { Y = Application.GetRealHeight(56), Height = Application.GetRealHeight(50 * line), }; VerticalRefreshLayout verticalRefresh = new VerticalRefreshLayout { Y = Application.GetRealHeight(56), Height = Application.GetRealHeight(50 * 5), }; verticalRefresh.BeginHeaderRefreshingAction += () => { //关闭刷新View; verticalRefresh.EndHeaderRefreshing(); }; if (sceneList.Count == 0) { Button btnTipNot = new Button { X=Application.GetRealWidth(93), Y = Application.GetRealHeight(80), Width = Application.GetRealWidth(158), Height = Application.GetRealWidth(158), UnSelectedImagePath = "TipNot.png", }; view.frameLayout.AddChidren(btnTipNot); Button btnTipNotText = new Button() { Y = btnTipNot.Bottom+ Application.GetRealHeight(16), Height = Application.GetRealHeight(20), TextID = StringId.secnenull, TextColor = CSS.CSS_Color.textColor, TextSize =LogicView.TextSize.text14, TextAlignment = TextAlignment.Center, }; view.frameLayout.AddChidren(btnTipNotText); } else if (sceneList.Count <=5 ) { view.frameLayout.AddChidren(frameL); } else if(sceneList.Count>5) { view.frameLayout.AddChidren(verticalRefresh); } //定义一个局部变量记录选中状态 Button buttonClick = new Button(); HDL_ON.Entity.Scene sceneSelecetd = null; verticalRefresh.BeginHeaderRefreshingAction += () => { //关闭刷新View; verticalRefresh.EndHeaderRefreshing(); }; for (int i = 0; i < sceneList.Count; i++) { var scene = sceneList[i]; LogicView.CheckView sceneView = new LogicView.CheckView(); sceneView.btnText.Text = scene.name; sceneView.btnText.TextSize = LogicView.TextSize.text14; if (sceneList.Count <= 5) { sceneView.frameLayout.Y = Application.GetRealWidth(i*50); frameL.AddChidren(sceneView.FLayoutView()); if (sceneList.Count-1==i) { sceneView.btnLine.BackgroundColor = CSS.CSS_Color.view; } } else { verticalRefresh.AddChidren(sceneView.FLayoutView()); } sceneView.btnClick.Tag = scene;//标记索引 //场景的点击事件 sceneView.btnClick.MouseUpEventHandler += (sender, e) => { buttonClick.IsSelected = false; sceneView.btnCheckIcon.IsSelected = true; buttonClick = sceneView.btnCheckIcon; sceneSelecetd = sceneView.btnClick.Tag as HDL_ON.Entity.Scene; }; } //确认点击事件 view.btnConfirm.MouseUpEventHandler += (sender1, e1) => { if (sceneSelecetd == null) { //提示:还没选中执行周期 return; } Output outputDevice = new Output(); outputDevice.target_type = "2"; outputDevice.sid = sceneSelecetd.sid; //没啥作用,为了发送数据格式统一; outputDevice.status = new List> { new Dictionary { { "key", "scene"},{ "value", "0" } } }; AddOutput(outputDevice); fLayout.RemoveFromParent(); LogicMethod.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 == "3") { 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.NewSid(); outputTime.target_type = "3"; Dictionary dic = new Dictionary(); LogicMethod.dictionary(dic, "key", "delay"); LogicMethod.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.RemoveAllView(); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } /// /// 添加目标 /// /// private void AddOutput(Output target) { int indexValue = -1; for (int i = 0; i < Logic.currlogic.output.Count; i++) { 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); } } } }