using System; using Shared; using System.Collections.Generic; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class AddLogic : FrameLayout { public AddLogic() { Tag = "Logic"; } public void Show() { this.BackgroundColor = CSS.CSS_Color.viewMiddle; LogicView.TopView topView = new LogicView.TopView(); this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (e, sen) => { RemoveFromParent(); }; topView.topNameBtn.TextID = StringId.newAutomation; VerticalScrolViewLayout viewLayout = new VerticalScrolViewLayout { Y = Application.GetRealHeight(64), Width = Application.GetRealWidth(LogicView.TextSize.view375), Height = Application.GetRealHeight(LogicView.TextSize.view667 - 64-76), BackgroundColor = CSS.CSS_Color.viewMiddle, }; this.AddChidren(viewLayout); #region 条件 ///如果的View LogicView.AddOutputInputTextView addInputTextView = new LogicView.AddOutputInputTextView(); addInputTextView.btnIf.TextID = StringId.ifCondition; viewLayout.AddChidren(addInputTextView.FLayoutView(46, 12)); ///满足以下条件的View LogicView.LogicTypeTitleView titleCondition = new LogicView.LogicTypeTitleView(); titleCondition.frameLayout.SetCornerWithSameRadius(12,HDLUtils.RectCornerTopLeft| HDLUtils.RectCornerTopRight); titleCondition.btnText.TextID = StringId.whenTheFollowingConditionsAreMet; viewLayout.AddChidren(titleCondition.FLayoutView()); for (int i = 0; i < Logic.currlogic.input.Count; i++) { Input inputCondition = Logic.currlogic.input[i]; ///输入各种条件的View LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView(); viewLayout.AddChidren(inputView.FLayoutView()); ///记录条件类型 inputView.btnClick.Name = inputCondition.condition_type; ///记录选中条件 inputView.btnClick.Tag = i; ///输入条件状态数组 List> dicList = inputCondition.condition as List>; //显示条件各种状态 switch (inputCondition.condition_type) { case "1": { inputView.btnIcon.UnSelectedImagePath = "LogicIcon/timecondition.png"; foreach (var dic in dicList) { string value = dic["value"]; inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value; inputView.btnClick.AddTag("timepoint", value); } } break; case "2": { inputView.btnIcon.UnSelectedImagePath = "LogicIcon/timecondition.png"; foreach (var dic in dicList) { string value = dic["value"]; inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value; inputView.btnClick.AddTag("timeHorizon", value); } } break; } //再次编辑条件状态点击事件 inputView.btnClick.MouseUpEventHandler += (sen, e) => { Button button = (Button)sen; switch (button.Name) { case "1": { //主界面控件 FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; //添加主界面 this.AddChidren(fLayout); LogicView.TimeView timePointView = new LogicView.TimeView(); timePointView.FLayoutView(fLayout); EventHandler RemovefLayout = (sender, e1) => { //移除fLayout界面 fLayout.RemoveFromParent(); }; //界面点击事件 fLayout.MouseUpEventHandler += RemovefLayout; //取消点击事件 timePointView.btnCancel.MouseUpEventHandler += RemovefLayout; //加载数据界面的设置方法(列表互不联动) timePointView.mUIPickerView.setNPicker(timePointView.GethStringList(), timePointView.GetmStringList(), null); string startingVulae = button.GetTagByKey("timepoint").ToString(); //默认初始选中状态 timePointView.mUIPickerView.setCurrentItems(1, 30, 0); //定义一个局部变量记录选中时间 string timepoint = "01:05"; if (!string.IsNullOrEmpty(startingVulae)) { int hIndex = timePointView.GetValueIndex(startingVulae, 0, 1, timePointView.GethIntList()); int mIndex = timePointView.GetValueIndex(startingVulae, 1, 0, timePointView.GetmIntList()); //更新初始状态 timePointView.mUIPickerView.setCurrentItems(hIndex - 1, mIndex, 0); timepoint = startingVulae; } //选中时间回调方法,时间变化一次回调一次 timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) => { string hour = timePointView.GethStringList()[index1].Split(' ')[0]; string minuet = timePointView.GetmStringList()[index2].Split(' ')[0]; timepoint = hour + ":" + minuet; }; //确定点击事件 timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) => { if (startingVulae == timepoint) { ///编辑新时间和之前时间一样,直接关闭界面返回; fLayout.RemoveFromParent(); return; } Input inputTime = new Input(); inputTime.sid = LogicMethod.NewSid(); inputTime.condition_type = "1"; Dictionary dic = new Dictionary(); LogicMethod.dictionary(dic, "key", "timepoint"); LogicMethod.dictionary(dic, "comparator", "="); LogicMethod.dictionary(dic, "data_type", "string"); LogicMethod.dictionary(dic, "value", timepoint); inputTime.condition.Add(dic); //旧数据索引 int indexValue = int.Parse(inputView.btnClick.Tag.ToString()); //移除旧数据 Logic.currlogic.input.RemoveAt(indexValue); //新数据插入旧数据的位置; Logic.currlogic.input.Insert(indexValue, inputTime); //添加一个新的时间点条件 RemoveViewByTag("Logic"); AddLogic addLogic = new AddLogic(); MainPage.BasePageView.AddChidren(addLogic); addLogic.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; } break; case "2": { FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(fLayout); TimeTpye timeTpye = new TimeTpye(); timeTpye.TimeHorizon(fLayout,true,int.Parse(inputView.btnClick.Tag.ToString())); } break; } }; } ///添加图标的View LogicView.LogicAddView addInputIcon = new LogicView.LogicAddView(); addInputIcon.frameLayout.SetCornerWithSameRadius(12, HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); viewLayout.AddChidren(addInputIcon.FLayoutView()); addInputIcon.btnClick.MouseUpEventHandler += (sen, e) => { var addInputType = new AddInputType(); MainPage.BasePageView.AddChidren(addInputType); addInputType.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; #endregion #region 目标 ///就执行View LogicView.AddOutputInputTextView addOutpuTextView = new LogicView.AddOutputInputTextView(); addOutpuTextView.btnIf.TextID = StringId.isExecuted; viewLayout.AddChidren(addOutpuTextView.FLayoutView(54, 20)); ///以下动作View LogicView.LogicTypeTitleView titleOutpu = new LogicView.LogicTypeTitleView(); titleOutpu.frameLayout.SetCornerWithSameRadius(12, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); titleOutpu.btnText.TextID = StringId.theFollowingActions; viewLayout.AddChidren(titleOutpu.FLayoutView()); ///输出各种动作的View LogicView.AddOutputInputView outputView = new LogicView.AddOutputInputView(); viewLayout.AddChidren(outputView.FLayoutView()); ///添加图标的View LogicView.LogicAddView addOutputIcon = new LogicView.LogicAddView(); addOutputIcon.frameLayout.SetCornerWithSameRadius(12, HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); viewLayout.AddChidren(addOutputIcon.FLayoutView()); #endregion #region 循环方式 ///循环方式iew LogicView.AddOutputInputTextView cyclicTextView = new LogicView.AddOutputInputTextView(); cyclicTextView.btnIf.TextID = StringId.cyclic; viewLayout.AddChidren(cyclicTextView.FLayoutView(54, 20)); ///选择周期类型View LogicView.LogicTypeTitleView cyclicTitle= new LogicView.LogicTypeTitleView(); cyclicTextView.frameLayout.Height = Application.GetRealHeight(50); cyclicTitle.frameLayout.SetCornerWithSameRadius(12, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight|HDLUtils.RectCornerBottomLeft|HDLUtils.RectCornerBottomRight); //cyclicTitle.frameLayout.Radius = (uint)Application.GetRealHeight(12); cyclicTitle.btnText.TextID = StringId.days; viewLayout.AddChidren(cyclicTitle.FLayoutView()); #endregion #region 执行推送 发送通知 ///上下间隔12像素 viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(12)}); ///执行推送iew LogicView.LogicTypeTitleView push = new LogicView.LogicTypeTitleView(); push.frameLayout.Height = Application.GetRealHeight(50); push.frameLayout.SetCornerWithSameRadius(12, HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); push.btnText.TextID = StringId.push; viewLayout.AddChidren(push.FLayoutView()); ///发送通知View LogicView.LogicTypeTitleView notification = new LogicView.LogicTypeTitleView(); notification.frameLayout.SetCornerWithSameRadius(12, HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); notification.btnText.TextID = StringId.notification; viewLayout.AddChidren(notification.FLayoutView()); ///上下间隔62像素 viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(62)}); #endregion #region 保存 ///保存View LogicView.SaveView saveView = new LogicView.SaveView(); saveView.frameLayout.SetCornerWithSameRadius(24,HDLUtils.RectCornerTopLeft|HDLUtils.RectCornerTopRight); this.AddChidren(saveView.FLayoutView()); //saveView.frameLayout.Y = this.Height - saveView.frameLayout.Height; #endregion } } }