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) { LogicView.DateView dateView = new LogicView.DateView(); dateView.btnTitle.TextID = StringId.addSceneLogic; dateView.FLayoutView(fLayout, 5); dateView.btnCancel.MouseUpEventHandler += (sender2, e2) => { fLayout.RemoveFromParent(); }; VerticalRefreshLayout verticalRefresh = new VerticalRefreshLayout { Y = Application.GetRealHeight(56), Height = Application.GetRealHeight(50 * 5), }; dateView.frameLayout.AddChidren(verticalRefresh); //定义一个局部变量记录选中状态 Button buttonClick = new Button(); HDL_ON.Entity.Scene sceneSelecetd = null; var sceneList = LogicMethod.GetSceneList(); verticalRefresh.BeginHeaderRefreshingAction += () => { //关闭刷新View; verticalRefresh.EndHeaderRefreshing(); }; for (int i = 0; i < sceneList.Count; i++) { var scene = sceneList[i]; LogicView.SelectTypeView sceneView = new LogicView.SelectTypeView(); sceneView.frameLayout.BackgroundColor = CSS.CSS_Color.viewTranslucence; sceneView.btnIcon.Visible = false; sceneView.btnText.X = Application.GetRealWidth(20); sceneView.btnText.Text = scene.name; sceneView.btnLine.X = Application.GetRealWidth(20); sceneView.btnLine.Width = Application.GetRealWidth(303); sceneView.btnNextIcon.X = Application.GetRealWidth(303); sceneView.btnNextIcon.Width = Application.GetMinRealAverage(28); sceneView.btnNextIcon.Height = Application.GetMinRealAverage(28); sceneView.btnNextIcon.UnSelectedImagePath = "LogicIcon/weekoff.png"; sceneView.btnNextIcon.SelectedImagePath = "LogicIcon/weekon.png"; verticalRefresh.AddChidren(sceneView.FLayoutView()); sceneView.btnClick.Tag = scene;//标记索引 //场景的点击事件 sceneView.btnClick.MouseUpEventHandler += (sender, e) => { buttonClick.IsSelected = false; sceneView.btnNextIcon.IsSelected = true; buttonClick = sceneView.btnNextIcon; sceneSelecetd =sceneView.btnClick.Tag as HDL_ON.Entity.Scene; }; } //确认点击事件 dateView.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.GethIntList0()); 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); } } } }