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(); topView.setBtn.Visible = true; this.AddChidren(topView.FLayoutView()); topView.clickBackBtn.MouseUpEventHandler += (e, sen) => { RemoveFromParent(); }; if (string.IsNullOrEmpty(Logic.currlogic.sid)) { topView.topNameBtn.TextID = StringId.newAutomation; topView.setBtn.Visible = false; topView.clickSetBtn.Visible = false; } else { topView.topNameBtn.TextID = StringId.editAutomation; topView.setBtn.Visible = true; topView.clickSetBtn.Visible = true; } topView.clickSetBtn.MouseUpEventHandler += (sender, e) => { Set set = new Set(); MainPage.BasePageView.AddChidren(set); set.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; 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(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); titleCondition.btnText.TextID = StringId.andCondition; viewLayout.AddChidren(titleCondition.FLayoutView()); titleCondition.btnClick.MouseUpEventHandler += (sender, e) => { FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(fLayout); AndOrMethod(fLayout, titleCondition.btnText); }; // 条件处理方法 InpOrOutLogicMethod.InputCondition(this, viewLayout); ///添加图标的View LogicView.LogicAddView addInputIcon = new LogicView.LogicAddView(); addInputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(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(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); titleOutpu.btnText.TextID = StringId.theFollowingActions; titleOutpu.btnNextIcon.Visible = false; viewLayout.AddChidren(titleOutpu.FLayoutView()); //目标处理方法 InpOrOutLogicMethod.OutputTarget(this, viewLayout); ///添加图标的View LogicView.LogicAddView addOutputIcon = new LogicView.LogicAddView(); addOutputIcon.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(12), HDLUtils.RectCornerBottomLeft | HDLUtils.RectCornerBottomRight); viewLayout.AddChidren(addOutputIcon.FLayoutView()); addOutputIcon.btnClick.MouseUpEventHandler += (sen, e) => { var addTarget = new AddTarget(); MainPage.BasePageView.AddChidren(addTarget); addTarget.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; #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(); cyclicTitle.frameLayout.Height = Application.GetRealHeight(50); cyclicTitle.frameLayout.Radius = (uint)Application.GetRealHeight(12); cyclicTitle.btnText.TextID = StringId.days; viewLayout.AddChidren(cyclicTitle.FLayoutView()); cyclicTitle.btnClick.MouseUpEventHandler += (sender, e) => { FrameLayout fLayout = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence, }; this.AddChidren(fLayout); DateMethod(fLayout, cyclicTitle.btnText); }; #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(Application.GetRealHeight(12), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); //push.btnText.TextID = StringId.push; //push.btnNextIcon.Width = Application.GetMinRealAverage(36); //push.btnNextIcon.Height = Application.GetMinRealAverage(36); //push.btnNextIcon.X = Application.GetRealWidth(305); //push.btnNextIcon.UnSelectedImagePath = "LogicIcon/off.png"; //push.btnNextIcon.SelectedImagePath = "LogicIcon/on.png"; //viewLayout.AddChidren(push.FLayoutView()); /////发送通知View //LogicView.LogicTypeTitleView notification = new LogicView.LogicTypeTitleView(); //notification.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(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(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); this.AddChidren(saveView.FLayoutView()); saveView.btnClick.MouseUpEventHandler += (sender, e) => { if (string.IsNullOrEmpty(Logic.currlogic.sid)) { List list = new List(); foreach (var logic in Logic.LogicList) { list.Add(logic.name); } new LogicView.TipPopView().InputBox(StringId.editName, Logic.currlogic.name, StringId.nameNull, StringId.NameAlreadyExists, list, (logicName) => { Logic.currlogic.name = logicName; Logic.currlogic.sid = LogicMethod.NewSid(); //发送新加修改逻辑命令; var responsePackNew = Send.AddLogic(Logic.currlogic); if (responsePackNew.Code == "0") { Logic.LogicList.Add(Logic.currlogic); LogicMethod.RemoveAllView(); MainView.MainShow(); } else { new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail)); } }); } else { //发送新加修改逻辑命令; var responsePackNew = Send.updateLogic(Logic.currlogic); if (responsePackNew.Code == "0") { LogicMethod.RemoveAllView(); MainView.MainShow(); } else { new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail)); } } }; #endregion } /// /// 循环方式(每天,每月。。) /// /// 弹框主控件 /// 显示文本 public void DateMethod(FrameLayout fLayout, Button button) { LogicView.DateView dateView = new LogicView.DateView(); dateView.btnTitle.TextID = StringId.cyclic; dateView.FLayoutView(fLayout, 4); dateView.btnCancel.MouseUpEventHandler += (sender2, e2) => { //移除fLayout界面 fLayout.RemoveFromParent(); }; //定义一个局部变量记录选中文本状态 string weekName = ""; //定义一个局部Btn用来记录选中Btn; var selecetdBtn = new Button(); for (int i = 0; i < 4; i++) { LogicView.SelectTypeView dateTypeView = new LogicView.SelectTypeView(); dateTypeView.frameLayout.BackgroundColor = CSS.CSS_Color.viewTranslucence; dateTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i); dateTypeView.btnIcon.Visible = false; dateTypeView.btnText.X = Application.GetRealWidth(20); dateTypeView.btnNextIcon.X = Application.GetRealWidth(307); dateTypeView.btnLine.X = Application.GetRealWidth(20); dateTypeView.btnLine.Width = Application.GetRealWidth(303); dateView.frameLayout.AddChidren(dateTypeView.FLayoutView()); dateTypeView.btnClick.Tag = i;//标记类型 switch (i) { case 0: { weekName = Language.StringByID(StringId.performA); dateTypeView.btnNextIcon.Visible = false; } break; case 1: { weekName = Language.StringByID(StringId.days); dateTypeView.btnNextIcon.Visible = false; } break; case 2: { weekName = Language.StringByID(StringId.weekly); } break; case 3: { weekName = Language.StringByID(StringId.monthly); } break; } dateTypeView.btnText.Text = weekName; //循环类型(例如:每月,每天)点击事件 dateTypeView.btnClick.MouseUpEventHandler += (sender, e) => { int clickIndex = int.Parse(dateTypeView.btnClick.Tag.ToString()); switch (clickIndex) { case 0: { weekName = Language.StringByID(StringId.performA); selecetdBtn.TextColor = CSS.CSS_Color.textColor; dateTypeView.btnText.TextColor = CSS.CSS_Color.textConfirmColor; selecetdBtn = dateTypeView.btnText; } break; case 1: { weekName = Language.StringByID(StringId.days); selecetdBtn.TextColor = CSS.CSS_Color.textColor; dateTypeView.btnText.TextColor = CSS.CSS_Color.textConfirmColor; selecetdBtn = dateTypeView.btnText; } break; case 2: { // weekName = Language.StringByID(StringId.weekly); WeekMethod(fLayout, button); } break; case 3: { //weekName = Language.StringByID(StringId.monthly); MonMethod(fLayout, button); } break; } }; //显示之前的状态 if (button.Text == weekName) { dateTypeView.btnText.TextColor = CSS.CSS_Color.textConfirmColor; selecetdBtn = dateTypeView.btnText; } else if (button.Text == weekName) { dateTypeView.btnText.TextColor = CSS.CSS_Color.textConfirmColor; selecetdBtn = dateTypeView.btnText; } } //确定保存 dateView.btnConfirm.MouseUpEventHandler += (sender3, e3) => { if (weekName == Language.StringByID(StringId.monthly)|| weekName== Language.StringByID(StringId.weekly)) { //提示:还未选 return; } if (weekName == Language.StringByID(StringId.performA)) { //执行一次 Logic.currlogic.cycle.type = "once"; } else if (weekName == Language.StringByID(StringId.days)) { //每天 Logic.currlogic.cycle.type = "day"; } //选中保存之后显示文本 button.Text = weekName; //移除fLayout界面 fLayout.RemoveFromParent(); }; } /// /// 选中星期几(周一,周二 。。。) /// /// 弹框主控件 /// 显示文本 public void WeekMethod(FrameLayout fLayout, Button button) { LogicView.DateView weekView = new LogicView.DateView(); weekView.btnTitle.TextID = StringId.cyclic; weekView.FLayoutView(fLayout, 7); weekView.btnCancel.MouseUpEventHandler += (sender2, e2) => { weekView.frameLayout.RemoveFromParent(); }; //定义一个局部weekList列表用来记录选中数据; List weekList = new List(); if (Logic.currlogic.cycle.type == "week") { //加载之前保存的数据 weekList.AddRange(Logic.currlogic.cycle.value); } //定义一个局部变量记录选中文本状态 string weekName = ""; for (int i = 0; i < 7; i++) { LogicView.SelectTypeView weekTypeView = new LogicView.SelectTypeView(); weekTypeView.frameLayout.BackgroundColor = CSS.CSS_Color.viewTranslucence; weekTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i); weekTypeView.btnIcon.Visible = false; weekTypeView.btnText.X = Application.GetRealWidth(20); weekTypeView.btnLine.X = Application.GetRealWidth(20); weekTypeView.btnLine.Width = Application.GetRealWidth(303); weekTypeView.btnNextIcon.X = Application.GetRealWidth(303); weekTypeView.btnNextIcon.Width = Application.GetMinRealAverage(28); weekTypeView.btnNextIcon.Height = Application.GetMinRealAverage(28); weekTypeView.btnNextIcon.UnSelectedImagePath = "LogicIcon/weekoff.png"; weekTypeView.btnNextIcon.SelectedImagePath = "LogicIcon/weekon.png"; weekView.frameLayout.AddChidren(weekTypeView.FLayoutView()); weekTypeView.btnClick.Tag = i;//标记索引 switch (i) { case 0: { weekName = Language.StringByID(StringId.monday); } break; case 1: { weekName = Language.StringByID(StringId.tuesday); } break; case 2: { weekName = Language.StringByID(StringId.wednesday); } break; case 3: { weekName = Language.StringByID(StringId.thursday); } break; case 4: { weekName = Language.StringByID(StringId.friday); } break; case 5: { weekName = Language.StringByID(StringId.saturday); } break; case 6: { weekName = Language.StringByID(StringId.sunday); } break; } weekTypeView.btnText.Text = weekName; if (weekList.Contains(i.ToString())) { //显示之前的选中状态 weekTypeView.btnNextIcon.IsSelected = true; } //星期的点击事件 weekTypeView.btnClick.MouseUpEventHandler += (sender, e) => { string clickIndex = weekTypeView.btnClick.Tag.ToString(); weekTypeView.btnClick.IsSelected = !weekTypeView.btnClick.IsSelected; if (weekTypeView.btnClick.IsSelected) { weekTypeView.btnNextIcon.IsSelected = true; if (!weekList.Contains(clickIndex)) { //添加选中数据 weekList.Add(clickIndex); } } else { weekTypeView.btnNextIcon.IsSelected = false; if (weekList.Contains(clickIndex)) { //移除选中数据 weekList.Remove(clickIndex); } } }; } //确定点击事件 weekView.btnConfirm.MouseUpEventHandler += (sender1, e1) => { if (weekList.Count == 0) { //提示:还没选中执行周期 return; } Logic.currlogic.cycle.type = "week"; Logic.currlogic.cycle.value = weekList; button.Text = MainView.GetWeekString(weekList); fLayout.RemoveFromParent(); }; } /// /// 每月 /// /// 弹框主控件 /// 显示文本 public void MonMethod(FrameLayout fLayout, Button button) { LogicView.MonView monView = new LogicView.MonView(); monView.btnTitle.TextID = StringId.monthly; monView.FLayoutView(fLayout); monView.btnCancel.MouseUpEventHandler += (sender2, e2) => { monView.frameLayout.RemoveFromParent(); }; //定义一个局部monList列表用来记录选中数据; List monList = new List(); if (Logic.currlogic.cycle.type == "mon") { //加载之前保存的数据 monList.AddRange(Logic.currlogic.cycle.value); } //定义一个变量记录行数 int lineSun = 0; for (int i = 1; i < 32; i++) { Button monTextBtn = new Button { Width = Application.GetRealWidth(30), Height = Application.GetRealWidth(30), Radius = (uint)Application.GetRealWidth(15), Text = i.ToString(), TextSize = LogicView.TextSize.text14, TextColor = CSS.CSS_Color.textColor, SelectedTextColor = CSS.CSS_Color.view, SelectedBackgroundColor = CSS.CSS_Color.textConfirmColor, BackgroundColor = CSS.CSS_Color.viewTranslucence, Tag = i, }; monView.frameLayout.AddChidren(monTextBtn); if (lineSun > 0) { monTextBtn.X = Application.GetRealWidth(16 + ((i - 1) - lineSun * 7) * 46); } else { monTextBtn.X = Application.GetRealWidth(16 + (i - 1) * 46); } monTextBtn.Y = Application.GetRealWidth(58 + 10 + lineSun * (30 + 10)); if (i % 7 == 0) { //一定执行完再判断是否要换行. lineSun = lineSun + 1; } monTextBtn.MouseUpEventHandler += (sender, e) => { string clickIndex = monTextBtn.Tag.ToString(); monTextBtn.IsSelected = !monTextBtn.IsSelected; if (monTextBtn.IsSelected) { monTextBtn.IsSelected = true; if (!monList.Contains(clickIndex)) { //添加选中数据 monList.Add(clickIndex); } } else { monTextBtn.IsSelected = false; if (monList.Contains(clickIndex)) { //移除选中数据 monList.Remove(clickIndex); } } }; if (monList.Contains(i.ToString())) { monTextBtn.IsSelected = true; } } //确定点击事件 monView.btnConfirm.MouseUpEventHandler += (sender1, e1) => { if (monList.Count == 0) { //提示:还没选中执行周期 return; } Logic.currlogic.cycle.type = "mon"; Logic.currlogic.cycle.value = monList; button.Text = MainView.GetMonString(monList); fLayout.RemoveFromParent(); }; } /// /// 满足条件 /// /// 弹框主控件 /// 显示文本 public void AndOrMethod(FrameLayout fLayout, Button button) { LogicView.DateView meetTheConditionView = new LogicView.DateView(); meetTheConditionView.btnTitle.TextID = StringId.meetTheCondition; meetTheConditionView.FLayoutView(fLayout, 2); meetTheConditionView.btnCancel.MouseUpEventHandler += (sender2, e2) => { fLayout.RemoveFromParent(); }; //定义一个局部变量记录选中文本状态 string condition = ""; LogicView.SelectTypeView andConditionViews = new LogicView.SelectTypeView(); andConditionViews.frameLayout.BackgroundColor = CSS.CSS_Color.viewTranslucence; andConditionViews.frameLayout.Y = Application.GetRealHeight(56); andConditionViews.btnIcon.Visible = false; andConditionViews.btnText.X = Application.GetRealWidth(20); andConditionViews.btnText.TextID = StringId.andCondition; andConditionViews.btnLine.X = Application.GetRealWidth(20); andConditionViews.btnLine.Width = Application.GetRealWidth(303); andConditionViews.btnNextIcon.X = Application.GetRealWidth(303); andConditionViews.btnNextIcon.Width = Application.GetMinRealAverage(28); andConditionViews.btnNextIcon.Height = Application.GetMinRealAverage(28); andConditionViews.btnNextIcon.UnSelectedImagePath = "LogicIcon/weekoff.png"; andConditionViews.btnNextIcon.SelectedImagePath = "LogicIcon/weekon.png"; meetTheConditionView.frameLayout.AddChidren(andConditionViews.FLayoutView()); LogicView.SelectTypeView orConditionView = new LogicView.SelectTypeView(); orConditionView.frameLayout.BackgroundColor = CSS.CSS_Color.viewTranslucence; orConditionView.frameLayout.Y = Application.GetRealHeight(56 + 50); orConditionView.btnIcon.Visible = false; orConditionView.btnText.X = Application.GetRealWidth(20); orConditionView.btnText.TextID = StringId.orCondition; orConditionView.btnLine.X = Application.GetRealWidth(20); orConditionView.btnLine.Width = Application.GetRealWidth(303); orConditionView.btnNextIcon.X = Application.GetRealWidth(303); orConditionView.btnNextIcon.Width = Application.GetMinRealAverage(28); orConditionView.btnNextIcon.Height = Application.GetMinRealAverage(28); orConditionView.btnNextIcon.UnSelectedImagePath = "LogicIcon/weekoff.png"; orConditionView.btnNextIcon.SelectedImagePath = "LogicIcon/weekon.png"; meetTheConditionView.frameLayout.AddChidren(orConditionView.FLayoutView()); if (Logic.currlogic.relation == "and") { andConditionViews.btnNextIcon.IsSelected = true; condition = "and"; } else { orConditionView.btnNextIcon.IsSelected = true; condition = "or"; } andConditionViews.btnClick.MouseUpEventHandler += (sen1, e) => { condition = "and"; andConditionViews.btnNextIcon.IsSelected = true; orConditionView.btnNextIcon.IsSelected = false; }; orConditionView.btnClick.MouseUpEventHandler += (sen1, e) => { condition = "or"; andConditionViews.btnNextIcon.IsSelected = false; orConditionView.btnNextIcon.IsSelected = true; }; //确定点击事件 meetTheConditionView.btnConfirm.MouseUpEventHandler += (sender1, e1) => { if (string.IsNullOrEmpty(condition)) { //提示:还没选中执行周期 return; } Logic.currlogic.relation = condition; if (condition == "or") { button.Text = Language.StringByID(StringId.orCondition); } else { button.Text = Language.StringByID(StringId.andCondition); } fLayout.RemoveFromParent(); }; } } }