using System; using System.Collections.Generic; using Newtonsoft.Json.Linq; using Shared; using Shared.Common; using Shared.Phone; using Shared.R; using ZigBee.Device; namespace Shared.Phone.Device.Logic { public class TemplatePage : FrameLayout { public TemplatePage() { UserView.HomePage.Instance.RemoveViewByTag("Logic"); Tag = "Logic"; } EditText logicTextBox; /// /// 图标的索引 /// public static string s; public void Show() { #region 最上面的布局代码 UserView.HomePage.Instance.ScrollEnabled = false;//锁住左滑 TopView view = new TopView(); this.AddChidren(view.TopRowView()); if (Common.Logic.CurrentLogic.LogicId != 0) { view.toptitleNameBtn.Text = Language.StringByID(MyInternationalizationString.editautomation); } else { view.toptitleNameBtn.Text = Language.StringByID(MyInternationalizationString.newautomation); } view.clickBtn.MouseDownEventHandler += (sender, e) => { //UserView.HomePage.Instance.ScrollEnabled = true;//恢复左滑 RemoveFromParent(); }; #endregion var middle = new VerticalScrolViewLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184 - 180), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); var logiciconfl = new FrameLayout { Height = Application.GetRealHeight(436 + 30), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; middle.AddChidren(logiciconfl); var iconBtn = new Button { Width = Application.GetRealWidth(936), Height = Application.GetRealHeight(436), X = Application.GetRealWidth(72), Y = Application.GetRealHeight(30), UnSelectedImagePath = $"ZigeeLogic/logicbj{s}.png", }; logiciconfl.AddChidren(iconBtn); #region -----自动化名称 设置名称----- var logicnamefl = new FrameLayout { Height = Application.GetRealHeight(130), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; middle.AddChidren(logicnamefl); var text = new Button { Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(60), X = Application.GetRealWidth(58), TextAlignment = TextAlignment.CenterLeft, //Text = "自动化名称", TextID = MyInternationalizationString.automationname, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Y = Application.GetRealHeight(35), TextSize = 15, }; logicnamefl.AddChidren(text); logicTextBox = new EditText { Y = Application.GetRealHeight(35), Width = Application.GetRealWidth(1080 - 58 - 300), Height = Application.GetRealHeight(60), X = text.Right, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnCancelColor, TextSize = 14, Text = Common.Logic.CurrentLogic.LogicName, //TextID=MyInternationalizationString.automation1, }; logicnamefl.AddChidren(logicTextBox); var fraline = new FrameLayout { Height = Application.GetRealHeight(30), }; middle.AddChidren(fraline); #endregion #region -----显示逻辑条件----- LogicView.Addview addconditionview = new LogicView.Addview(); addconditionview.iconBtn.Visible = true; addconditionview.titleBtn.TextID = MyInternationalizationString.ifcondition; middle.AddChidren(addconditionview.AddDeviceView()); ///添加条件的点击事件 addconditionview.clickBtn.MouseUpEventHandler += (sender, e) => { if (Common.Logic.CurrentLogic.Conditions.Count == 1) { ConditionView(false); } else { var roomAndDeviceView = new RoomAndDeviceView(); UserView.HomePage.Instance.AddChidren(roomAndDeviceView); UserView.HomePage.Instance.PageIndex += 1; roomAndDeviceView.IfType = "condition_mould"; roomAndDeviceView.Show(Language.StringByID(MyInternationalizationString.addsensor)); } }; List> ListConditions = new List>(); ListConditions.Clear(); ListConditions.AddRange(Common.Logic.CurrentLogic.Conditions); ListConditions.Add(new Dictionary()); if (Common.Logic.CurrentLogic.Conditions.Count > 1) { var row = new FrameLayout { Height = Application.GetRealHeight(60), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(row); var relationship = new Button { Width = Application.GetRealWidth(600), Height = Application.GetRealHeight(60), TextAlignment = TextAlignment.CenterLeft, X = Application.GetRealWidth(58), TextColor = ZigbeeColor.Current.LogicBtnCompleteColor, }; row.AddChidren(relationship); if (Common.Logic.CurrentLogic.Relationship == 0) { relationship.Text = Language.StringByID(MyInternationalizationString.followingconditions) + Language.StringByID(MyInternationalizationString.Allconditions); } else { relationship.Text = Language.StringByID(MyInternationalizationString.followingconditions) + Language.StringByID(MyInternationalizationString.anycondition); } EventHandler editclick = (sender, e) => { ConditionView(true); }; row.MouseUpEventHandler += editclick; relationship.MouseUpEventHandler += editclick; } for (int i = 0; i < ListConditions.Count; i++) { if (i == (ListConditions.Count - 1)) { LogicView.AddDeviceView addflview = new LogicView.AddDeviceView(); addflview.titleBtn.TextID = MyInternationalizationString.addsensor; middle.AddChidren(addflview.AddFl()); addflview.clickBtn.MouseUpEventHandler += (sender, e) => { if (Common.Logic.CurrentLogic.Conditions.Count == 1) { ConditionView(false); } else { var roomAndDeviceView = new RoomAndDeviceView(); UserView.HomePage.Instance.AddChidren(roomAndDeviceView); UserView.HomePage.Instance.PageIndex += 1; roomAndDeviceView.IfType = "condition_mould"; roomAndDeviceView.Show(Language.StringByID(MyInternationalizationString.addsensor)); } }; } else { SelectedDeviceView selecteddevice = new SelectedDeviceView(); selecteddevice.Show(middle); selecteddevice.stateRow.AddRightView(selecteddevice.edit); selecteddevice.stateRow.AddRightView(selecteddevice.del); var Type = int.Parse(ListConditions[i]["Type"]); var conditions = ListConditions[i]; switch (Type) { /// 1:设备状态变化条件; case 1: { var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]); selecteddevice.deviceNameBtn.Visible = true; selecteddevice.deviceNameBtn.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(deviceinof); selecteddevice.regionNameBtn.Visible = true; Method.RoomNmae(selecteddevice.regionNameBtn, deviceinof); selecteddevice.iconBtn.UnSelectedImagePath ="ZigeeLogic/sensor13.png"; switch (deviceinof.Type) { case DeviceType.IASZone: { var iASZonedevice = deviceinof as IASZone; var intvalue = conditions["AttriButeData1"]; switch (iASZonedevice.IasDeviceType) { case 13: { if (conditions.ContainsKey("IgnoreTime")) { int minute = int.Parse(conditions["IgnoreTime"]) / 60; int second = int.Parse(conditions["IgnoreTime"]) % 60; if (minute != 0 && second != 0) { selecteddevice.selecetddevicestateBtn.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1); } else { if (minute == 0 && second != 0) { selecteddevice.selecetddevicestateBtn.Text = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1); } if (minute != 0 && second == 0) { selecteddevice.selecetddevicestateBtn.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1); } } } else { selecteddevice.selecetddevicestateBtn.TextID = MyInternationalizationString.someone; } } break; } } break; } } break; } ///编辑 selecteddevice.edit.Tag = i.ToString(); selecteddevice.edit.MouseUpEventHandler += (sender, e) => { var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]); var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "condition_mould", int.Parse(selecteddevice.edit.Tag.ToString())); }; ///删除控件 selecteddevice.del.MouseUpEventHandler += (sender, e) => { var alert = new ShowMsgControl(ShowMsgType.Confirm, Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); alert.ConfirmClickEvent += () => { Common.Logic.CurrentLogic.Conditions.Remove(conditions); selecteddevice.selecetdFrameLayout.RemoveFromParent(); //var templatePage = new TemplatePage(); //UserView.HomePage.Instance.AddChidren(templatePage); //UserView.HomePage.Instance.PageIndex += 1; //templatePage.Show(); }; }; } } #endregion #region ----显示执行目标---- LogicView.Addview addactionview = new LogicView.Addview(); addactionview.iconBtn.Visible = true; addactionview.titleBtn.TextID = MyInternationalizationString.execute; middle.AddChidren(addactionview.AddDeviceView()); addactionview.clickBtn.MouseUpEventHandler = (sender, e) => { Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim(); var roomAndDeviceView = new RoomAndDeviceView(); UserView.HomePage.Instance.AddChidren(roomAndDeviceView); UserView.HomePage.Instance.PageIndex += 1; roomAndDeviceView.IfType = "action_mould"; roomAndDeviceView.Show(Language.StringByID(MyInternationalizationString.addlighting)); }; List> ListActions = new List>(); ListActions.Clear(); ListActions.AddRange(Common.Logic.CurrentLogic.Actions); ListActions.Add(new Dictionary()); for (int i = 0; i < ListActions.Count; i++) { if (i == (ListActions.Count - 1)) { LogicView.AddDeviceView addflview = new LogicView.AddDeviceView(); addflview.titleBtn.TextID = MyInternationalizationString.addlighting; middle.AddChidren(addflview.AddFl()); addflview.clickBtn.MouseUpEventHandler += (sender, e) => { var roomAndDeviceView = new RoomAndDeviceView(); UserView.HomePage.Instance.AddChidren(roomAndDeviceView); UserView.HomePage.Instance.PageIndex += 1; roomAndDeviceView.IfType = "action_mould"; roomAndDeviceView.Show(Language.StringByID(MyInternationalizationString.addlighting)); }; } else { SelectedDeviceView actiondevice = new SelectedDeviceView(); actiondevice.Show(middle); actiondevice.stateRow.AddRightView(actiondevice.edit); actiondevice.stateRow.AddRightView(actiondevice.del); var linkType = int.Parse(ListActions[i]["LinkType"].ToString()); var actions = ListActions[i]; switch (linkType) { case 0: { var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString()); actiondevice.deviceNameBtn.Visible = true; actiondevice.deviceNameBtn.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(deviceinof); actiondevice.regionNameBtn.Visible = true; Method.RoomNmae(actiondevice.regionNameBtn, deviceinof); switch (deviceinof.Type) { case DeviceType.OnOffOutput: { actiondevice.iconBtn.UnSelectedImagePath = "ZigeeLogic/light.png"; var TaskList = actions["TaskList"] as List>; if (TaskList == null) { continue; } foreach (var status in TaskList) { if (status["TaskType"].ToString() == "1") { if (status["Data1"].ToString() == "0") { actiondevice.selecetddevicestateBtn.Text = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"].ToString() == "1") { actiondevice.selecetddevicestateBtn.Text = Language.StringByID(MyInternationalizationString.open); } else if (status["Data1"].ToString() == "2") { actiondevice.selecetddevicestateBtn.Text = Language.StringByID(MyInternationalizationString.onoff); } } } } break; } } break; } ///编辑 actiondevice.edit.Tag = i; actiondevice.edit.MouseUpEventHandler += (sender, e) => { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString()); CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "action_mould",int.Parse(actiondevice.edit.Tag.ToString())); }; ///删除控件 actiondevice.del.MouseUpEventHandler += (sender, e) => { var alert = new ShowMsgControl(ShowMsgType.Confirm, Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); alert.ConfirmClickEvent += () => { Common.Logic.CurrentLogic.Actions.Remove(actions); actiondevice.selecetdFrameLayout.RemoveFromParent(); //var templatePage = new TemplatePage(); //UserView.HomePage.Instance.AddChidren(templatePage); //UserView.HomePage.Instance.PageIndex += 1; //templatePage.Show(); }; }; } } #endregion #region -----每天 设置周期----- var fraHeight = new FrameLayout { Height = Application.GetRealHeight(30), }; middle.AddChidren(fraHeight); LogicView.Addview weekview = new LogicView.Addview(); weekview.iconBtn.Visible = true; weekview.iconBtn.UnSelectedImagePath = "ZigeeLogic/next.png"; weekview.titleBtn.TextID = MyInternationalizationString.setupcycle; middle.AddChidren(weekview.AddDeviceView()); var weekBtn = new Button { Width = Application.GetRealWidth(595), Height = Application.GetRealHeight(60), TextAlignment = TextAlignment.CenterRight, //Text = "每天", TextColor = ZigbeeColor.Current.LogicBtnCancelColor, TextID = MyInternationalizationString.everyday, Y = Application.GetRealHeight(35 + 30), X = weekview.titleBtn.Right, TextSize = 14, }; weekview.frameLayout.AddChidren(weekBtn); Method.UpdateWeek(weekBtn, Common.Logic.CurrentLogic); EventHandler cycleclick = (sender, e) => { /*------保留每月,每年类型*/ var cycle = new Cycle(() => { Method.UpdateWeek(weekBtn, Common.Logic.CurrentLogic); }); UserView.HomePage.Instance.AddChidren(cycle); UserView.HomePage.Instance.PageIndex += 1; cycle.Show(); //var cyclicCycle = new CyclicCycle(() => { UpdateWeek(btnweektext); }); //UserView.HomePage.Instance.AddChidren(cyclicCycle); //UserView.HomePage.Instance.PageIndex += 1; //cyclicCycle.Show(); }; weekBtn.MouseUpEventHandler += cycleclick; weekview.clickBtn.MouseUpEventHandler += cycleclick; #endregion #region ----推送设置---- Method.Push(middle); #endregion var saveBtn = new LogicView.SaveView(); saveBtn.frameLayout.Y = middle.Bottom; saveBtn.frameLayout.Height = Application.GetRealHeight(180); this.AddChidren(saveBtn.Show()); saveBtn.clickviewBtn.MouseUpEventHandler +=(sender, e) => { var name = logicTextBox.Text.Trim(); Method.SaveLogic(LogicView.IfString._Logic, name, LogicView.IfString.Tag, Common.Logic.CurrentLogic); }; } void ConditionView(bool edit) { Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim(); #region ------组合条件界面布局部分 var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicTranslucentColor }; this.AddChidren(flMain); CompleteView completeView = new CompleteView(); flMain.AddChidren(completeView.Show(2)); completeView.Btntitle.TextID = MyInternationalizationString.condition; EventHandler clickcancel = (sender, e) => { UserView.HomePage.Instance.ScrollEnabled = true; flMain.RemoveFromParent(); }; flMain.MouseUpEventHandler += clickcancel; completeView.Btncancel.MouseUpEventHandler += clickcancel; //满足所有条件 mFunView allFunView = new mFunView(); allFunView.frameLayout.Y = Application.GetRealHeight(140 + 20); completeView.Show(2).AddChidren(allFunView.Show()); allFunView.titleBtn.TextID = MyInternationalizationString.Allconditions; //满足其中一个条件 mFunView ormFunview = new mFunView(); ormFunview.frameLayout.Y = allFunView.frameLayout.Bottom; completeView.Show(2).AddChidren(ormFunview.Show()); ormFunview.titleBtn.TextID = MyInternationalizationString.anycondition; ormFunview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor; #endregion ///满足所有条件点击事件 allFunView.clickviewBtn.MouseUpEventHandler += (sedner, e) => { allFunView.selectedIconBtn.Visible = true; ormFunview.selectedIconBtn.Visible = false; allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; }; ///满足其中一个条件点击事件 ormFunview.clickviewBtn.MouseUpEventHandler += (sedner, e) => { allFunView.selectedIconBtn.Visible = false; ormFunview.selectedIconBtn.Visible = true; allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; }; if (edit) { if (Common.Logic.CurrentLogic.Relationship == 0) { allFunView.selectedIconBtn.Visible = true; ormFunview.selectedIconBtn.Visible = false; allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; } else { allFunView.selectedIconBtn.Visible = false; ormFunview.selectedIconBtn.Visible = true; allFunView.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; ormFunview.titleBtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; } } completeView.Btncomplete.MouseUpEventHandler += (sender, e) => { if (!allFunView.selectedIconBtn.Visible && !ormFunview.selectedIconBtn.Visible) { ///可以提示未选中状态; return; } flMain.RemoveFromParent(); if (allFunView.selectedIconBtn.Visible) { Common.Logic.CurrentLogic.Relationship = 0; } if (ormFunview.selectedIconBtn.Visible) { Common.Logic.CurrentLogic.Relationship = 1; } if (edit) { if (Common.Logic.CurrentLogic.LogicId != 0) { Send.LogicControlSwitch(Common.Logic.CurrentLogic); } var templatePage = new TemplatePage(); UserView.HomePage.Instance.AddChidren(templatePage); UserView.HomePage.Instance.PageIndex += 1; templatePage.Show(); } else { var roomAndDeviceView = new RoomAndDeviceView(); UserView.HomePage.Instance.AddChidren(roomAndDeviceView); UserView.HomePage.Instance.PageIndex += 1; roomAndDeviceView.IfType = "condition_mould"; roomAndDeviceView.Show(Language.StringByID(MyInternationalizationString.addsensor)); } }; } } }