using System; using Shared; using System.Collections.Generic; namespace HDL_ON.UI.UI2.Intelligence.Automation { public class OnePortAutomation : FrameLayout { public OnePortAutomation() { Tag = "Logic"; } public void Show() { #region 界面布局 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.userLogicId)) { 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; } 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()); if (Logic.currlogic.relation == "and") { titleCondition.btnText.Text = Language.StringByID(StringId.andCondition); } else { titleCondition.btnText.Text = Language.StringByID(StringId.orCondition); } // 条件处理方法 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()); #endregion #region 目标 ///就执行View LogicView.AddOutputInputTextView addOutpuTextView = new LogicView.AddOutputInputTextView(); addOutpuTextView.btnIf.TextID = StringId.isExecuted; viewLayout.AddChidren(addOutpuTextView.FLayoutView(54, 20)); #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.GetRealWidth(36); push.btnNextIcon.Height = Application.GetRealWidth(36); push.btnNextIcon.X = Application.GetRealWidth(305); push.btnNextIcon.UnSelectedImagePath = "LogicIcon/off.png"; push.btnNextIcon.SelectedImagePath = "LogicIcon/on.png"; push.btnClick.Width = Application.GetRealWidth(305); 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; notification.btnLine.BackgroundColor = CSS.CSS_Color.textWhiteColor; viewLayout.AddChidren(notification.FLayoutView()); //显示之前推送开关状态 if (Logic.currlogic.noticeConfig.enable) { push.btnNextIcon.IsSelected = true; } else { push.btnNextIcon.IsSelected = false; } ///上下间隔62像素 viewLayout.AddChidren(new FrameLayout { Height = Application.GetRealHeight(40) }); #endregion #region 保存 ///保存View LogicView.SaveView saveView = new LogicView.SaveView(); saveView.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); this.AddChidren(saveView.FLayoutView()); #endregion #endregion #endregion #region 界面各种点击事件 ///设置图标点击事件 topView.clickSetBtn.MouseUpEventHandler += (sender, e) => { Set set = new Set(); MainPage.BasePageView.AddChidren(set); set.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; ///或和与点击事件 titleCondition.btnClick.MouseUpEventHandler += (sender, e) => { AndOrMethod(titleCondition.btnText); }; ///条件添加点击事件 addInputIcon.btnClick.MouseUpEventHandler += (sen, e) => { var addInputType = new AddInputType(); MainPage.BasePageView.AddChidren(addInputType); addInputType.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; ///是否要推送点击事件 push.btnNextIcon.MouseUpEventHandler += (sender, e) => { //账号列表为空默认推送当前账号 if (Logic.currlogic.pushConfigs.Count == 0) { //初始化对象 PushConfigs pushConfigs = new PushConfigs(); //默认添加推送当前账号 pushConfigs.pushTarget.Add(UserInfo.Current.ID); Logic.currlogic.pushConfigs.Add(pushConfigs); } push.btnNextIcon.IsSelected = !push.btnNextIcon.IsSelected; if (push.btnNextIcon.IsSelected) { Logic.currlogic.noticeConfig.enable = true; } else { Logic.currlogic.noticeConfig.enable = false; } }; ///输入推送文本 notification.btnClick.MouseUpEventHandler += (sender, e) => { InputPushText inputPushText = new InputPushText(); MainPage.BasePageView.AddChidren(inputPushText); inputPushText.Show(); MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1; }; ///保存点击事件 saveView.btnClick.MouseUpEventHandler += (sender, e) => { if (Logic.currlogic.input.Count == 0) { new LogicView.TipPopView().TipBox(StringId.tip, StringId.conditioncNull); return; } Loading loading = new Loading(); this.AddChidren(loading); HDL_ON.DAL.Server.ResponsePackNew responsePackNew = null; if (string.IsNullOrEmpty(Logic.currlogic.userLogicId)) { List list = new List(); foreach (var logic in Logic.LogicList) { list.Add(logic.name); } new LogicView.TipPopView().InputBox(StringId.editName, InpOrOutLogicMethod.GetLogicName(Logic.currlogic), StringId.nameNull, StringId.NameAlreadyExists, list, (logicName, view ) => { Logic.currlogic.name = logicName; Logic.currlogic.sid = LogicMethod.NewSid(); loading.Start(); new System.Threading.Thread(() => { try { //发送新加逻辑命令; responsePackNew = Send.AddLogic(Logic.currlogic); } catch { } finally { Application.RunOnMainThread(() => { loading.Hide(); if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "") { //获取逻辑详细返回是一个数组(object类型转换为数组); var jArray = Newtonsoft.Json.Linq.JArray.Parse(responsePackNew.Data.ToString()); for (int a = 0; a < jArray.Count; a++) { var jay = jArray[a]; //数据返序列化为Logic对象 var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay); var logic = Newtonsoft.Json.JsonConvert.DeserializeObject(str); if (logic.userLogicId != "") { //更新云端唯一自动化id; Logic.currlogic.userLogicId = logic.userLogicId; } else { //自己看的所以不需要支持中英文 new LogicView.TipPopView().FlashingBox("没有返回云端唯一自动化id"); } } Logic.LogicList.Add(Logic.currlogic); LogicMethod.RemoveAllView(); MainView.MainShow(); } else if (responsePackNew != null && responsePackNew.Code == "14005") { new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline)); } else { new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail)); } }); } }) { IsBackground = true }.Start(); }, () => { }); } else { loading.Start(); new System.Threading.Thread(() => { try { //发送修改逻辑命令; responsePackNew = Send.UpdateLogic(Logic.currlogic); } catch { } finally { Application.RunOnMainThread(() => { loading.Hide(); if (responsePackNew != null && responsePackNew.Code == "0") { LogicMethod.RemoveAllView(); MainView.MainShow(); } else if (responsePackNew != null && responsePackNew.Code == "14005") { new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline)); } else { new LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail)); } }); } }) { IsBackground = true }.Start(); } }; #endregion } /// /// 满足条件 /// /// 显示文本 public void AndOrMethod(Button button) { ///之前的状态文本 string currCondition = button.Text; PublicInterface conditionView = new PublicInterface(); var strList = conditionView.GetViewList("andor"); conditionView.SingleSelectionShow(this, strList, Language.StringByID(StringId.meetTheCondition), currCondition , (stateValue) => { //界面显示选中值 button.Text = stateValue; //封装数据 if (stateValue == Language.StringByID(StringId.orCondition)) { Logic.currlogic.relation = "or"; } else { Logic.currlogic.relation = "and"; } }); } } }