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 最上面的布局代码 var topRowLayout = new RowLayout { BackgroundColor = ZigbeeColor.Current.LogicTopBackgroundColor, Height = Application.GetRealHeight(184), LineColor = ZigbeeColor.Current.LogicRowLayoutTopLineColor, }; this.AddChidren(topRowLayout); var titleName = new Button { TextSize = 16, TextColor = ZigbeeColor.Current.LogicTextBlackColor, TextAlignment = TextAlignment.CenterLeft, X = Application.GetRealWidth(176), Width = Application.GetRealWidth(600), Height = Application.GetRealHeight(69), Y = Application.GetRealHeight(92), TextID = MyInternationalizationString.selection, }; topRowLayout.AddChidren(titleName); if (Common.Logic.CurrentLogic.LogicId != 0) { titleName.Text = Language.StringByID(MyInternationalizationString.editautomation); } else { titleName.Text = Language.StringByID(MyInternationalizationString.newautomation); } var clickBtn = new Button { Width = Application.GetRealWidth(81 + 51), Height = Application.GetRealHeight(58 + 40), Y = Application.GetRealHeight(98 - 40), }; topRowLayout.AddChidren(clickBtn); clickBtn.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; var back = new Button { Width = Application.GetRealWidth(30), Height = Application.GetRealHeight(51), X = Application.GetRealWidth(81), Y = Application.GetRealHeight(98), //Gravity = Gravity.CenterVertical; UnSelectedImagePath = "ZigeeLogic/back.png", }; topRowLayout.AddChidren(back); back.MouseDownEventHandler += (sender, e) => { RemoveFromParent(); }; #endregion var middle = new VerticalScrolViewLayout { Y = topRowLayout.Bottom, Height = Application.GetRealHeight(1920 - 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), }; logicnamefl.AddChidren(text); logicTextBox = new EditText { Y = Application.GetRealHeight(35), Width = Application.GetRealWidth(900), Height = Application.GetRealHeight(60), X = text.Right, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnCancelColor, TextSize = 13, Text = Common.Logic.CurrentLogic.LogicName, //TextID=MyInternationalizationString.automation1, }; logicnamefl.AddChidren(logicTextBox); var fraline = new FrameLayout { Height = Application.GetRealHeight(30), }; middle.AddChidren(fraline); #endregion #region -----显示逻辑条件----- var conditionFrameLayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(conditionFrameLayout); var conditionRowLayout = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(58), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; conditionFrameLayout.AddChidren(conditionRowLayout); conditionRowLayout.AddChidren(new Button { Text = Language.StringByID(MyInternationalizationString.ifcondition), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(60), TextSize = 16, Gravity = Gravity.CenterVertical, }); var conditionadd1 = new Button { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(57), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(965 + 58), }; conditionFrameLayout.AddChidren(conditionadd1); var conditionadd = new Button { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), UnSelectedImagePath = "ZigeeLogic/add.png", X = Application.GetRealWidth(965 - 58), Gravity = Gravity.CenterVertical, }; conditionRowLayout.AddChidren(conditionadd); ///添加条件的点击事件 EventHandler conditionaddclick = (sender, e) => { if (Common.Logic.CurrentLogic.Conditions.Count == 1) { ConditionView(false); } else { Common.Logic.LogicDviceList.Clear(); if (Common.Logic.LogicDviceList.Count == 0) { Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray()); } var templateDeviceCondition = new TemplateDeviceCondition(); UserView.HomePage.Instance.AddChidren(templateDeviceCondition); UserView.HomePage.Instance.PageIndex += 1; templateDeviceCondition.Show(); } }; conditionadd.MouseUpEventHandler += conditionaddclick; conditionadd1.MouseUpEventHandler += conditionaddclick; 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)) { var addfl = new FrameLayout { Height = Application.GetRealHeight(160 + 30 + 50), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(addfl); var addbtn = new Button { Height = Application.GetRealHeight(130 + 50), Width = Application.GetRealWidth(908), Y = Application.GetRealHeight(30), X = Application.GetRealWidth(86), UnSelectedImagePath = "ZigeeLogic/logicaddcolor.png", }; addfl.AddChidren(addbtn); var addtextbtn = new Button { Height = Application.GetRealHeight(58), Width = Application.GetRealWidth(300), Y = Application.GetRealHeight(45 + 30), TextColor = ZigbeeColor.Current.LogicBlankBackgroundColor, TextID = MyInternationalizationString.addconditions, X = Application.GetRealWidth(390), }; addfl.AddChidren(addtextbtn); EventHandler addconditionsclick = (sender, e) => { if (Common.Logic.CurrentLogic.Conditions.Count == 1) { ConditionView(false); } else { var templateDeviceCondition = new TemplateDeviceCondition(); UserView.HomePage.Instance.AddChidren(templateDeviceCondition); UserView.HomePage.Instance.PageIndex += 1; templateDeviceCondition.Show(); } }; addbtn.MouseUpEventHandler += addconditionsclick; addtextbtn.MouseUpEventHandler += addconditionsclick; } else { var devicesFrameLayout = new FrameLayout { Height = Application.GetRealHeight(130), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(devicesFrameLayout); ///显示图标 var conditionIcon = new Button { Width = Application.GetRealWidth(81), Height = Application.GetRealHeight(81), X = Application.GetRealWidth(104), Y = Application.GetRealHeight(25), UnSelectedImagePath = "ZigeeLogic/sensor13.png", }; devicesFrameLayout.AddChidren(conditionIcon); var conditionsRowLayout = new RowLayout { Width = Application.GetRealWidth(800), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(222), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; devicesFrameLayout.AddChidren(conditionsRowLayout); var Type = int.Parse(ListConditions[i]["Type"]); var conditions = ListConditions[i]; switch (Type) { /// (0:时间点条件;1:设备状态变化条件;2:其他逻辑条件;3:计数器条件;4:倒计时;5:时间段条件;6:安防条件;7:地理位置) case 1: { var deviceinof = Common.Logic.LogicDviceList.Find((obj) => { return obj.DeviceAddr == conditions["MacAddr"] && obj.DeviceEpoint.ToString() == conditions["Epoint"]; }); if (deviceinof == null) { continue; } ///显示设备名称 var btndevice = new Button { Y = Application.GetRealHeight(20), Height = Application.GetRealHeight(50), Width = Application.GetRealWidth(400), TextAlignment = TextAlignment.CenterLeft, Text = deviceinof.DeviceEpointName, TextColor = ZigbeeColor.Current.LogicTextBlackColor, }; conditionsRowLayout.AddChidren(btndevice); ///区域(房间)名称Button var btnregionname = new Button { Y = btndevice.Bottom + Application.GetRealHeight(10), Width = Application.GetRealWidth(400), TextAlignment = TextAlignment.CenterLeft, Height = Application.GetRealHeight(50), Text = "",//Language.StringByID(MyInternationalizationString.customroom), TextColor = ZigbeeColor.Current.LogicBtnCancelColor, }; conditionsRowLayout.AddChidren(btnregionname); ///通过设备找到区域(房间)名称 Send.RoomNmae(btnregionname, deviceinof); var deviceedit = new Button { BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1, Text = Language.StringByID(MyInternationalizationString.edit), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; conditionsRowLayout.AddRightView(deviceedit); deviceedit.MouseUpEventHandler += (sender, e) => { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); TemplateDeviceCondition.CurrentDeviceView(flMain, deviceinof, true); }; ///显示设备条件状态控件 var devicestatus = new Button { Width = Application.GetRealWidth(400), Height = Application.GetRealHeight(130), Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterRight, X = Application.GetRealWidth(400), TextColor = ZigbeeColor.Current.LogicBtnCancelColor, }; conditionsRowLayout.AddChidren(devicestatus); switch (deviceinof.Type) { case DeviceType.IASZone: { var iASZonedevice = deviceinof as IASZone; var intvalue = conditions["AttriButeData1"]; switch (iASZonedevice.IasDeviceType) { case 13: { if (intvalue == "1") { devicestatus.TextID = MyInternationalizationString.someone; } else { int minute = int.Parse(conditions["IgnoreTime"]) / 60; int second = int.Parse(conditions["IgnoreTime"]) % 60; if (second != 0) { devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1); } else { devicestatus.Text = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1); } } } break; default: { conditionIcon.UnSelectedImagePath = "ZigeeLogic/infraredsensor.png"; if (intvalue == "1") { devicestatus.TextID = MyInternationalizationString.callthepolice; } } break; } } break; } } break; } ///删除控件 var del = new Button { BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1, Text = Language.StringByID(MyInternationalizationString.del), }; conditionsRowLayout.AddRightView(del); del.MouseUpEventHandler += (sender, e) => { var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim)); alert.ResultEventHandler += (sender1, e1) => { if (e1) { Common.Logic.CurrentLogic.Conditions.Remove(conditions); var templatePage = new TemplatePage(); UserView.HomePage.Instance.AddChidren(templatePage); UserView.HomePage.Instance.PageIndex += 1; templatePage.Show(); } }; alert.Show(); }; } } #endregion #region ----显示执行目标---- var targetFrameLayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(targetFrameLayout); var targetRowLayout = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(58), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; targetFrameLayout.AddChidren(targetRowLayout); var btntargettitle = new Button { Text = Language.StringByID(MyInternationalizationString.execute), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(60), TextSize = 16, Gravity = Gravity.CenterVertical, }; targetRowLayout.AddChidren(btntargettitle); var btntargetadd1 = new Button { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(57), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(965 + 58), }; targetFrameLayout.AddChidren(btntargetadd1); var btntargetadd = new Button { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), UnSelectedImagePath = "ZigeeLogic/add.png", X = Application.GetRealWidth(965 - 58), Gravity = Gravity.CenterVertical, }; targetRowLayout.AddChidren(btntargetadd); EventHandler btntargetaddclick = (sender, e) => { Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim(); var templateDeviceAction = new TemplateDeviceAction(); UserView.HomePage.Instance.AddChidren(templateDeviceAction); UserView.HomePage.Instance.PageIndex += 1; templateDeviceAction.Show(); }; btntargetadd1.MouseUpEventHandler += btntargetaddclick; btntargetadd.MouseUpEventHandler += btntargetaddclick; 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)) { var addfl = new FrameLayout { Height = Application.GetRealHeight(160 + 30 + 50), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(addfl); var addbtn = new Button { Height = Application.GetRealHeight(130 + 50), Width = Application.GetRealWidth(908), Y = Application.GetRealHeight(30), X = Application.GetRealWidth(86), UnSelectedImagePath = "ZigeeLogic/logicaddcolor.png", }; addfl.AddChidren(addbtn); var addtextbtn = new Button { Height = Application.GetRealHeight(58), Width = Application.GetRealWidth(300), Y = Application.GetRealHeight(45 + 30), TextColor = ZigbeeColor.Current.LogicBlankBackgroundColor, TextID = MyInternationalizationString.addfunction, X = Application.GetRealWidth(390), }; addfl.AddChidren(addtextbtn); EventHandler addfunctionclick = (sender, e) => { Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim(); var templateDeviceAction = new TemplateDeviceAction(); UserView.HomePage.Instance.AddChidren(templateDeviceAction); UserView.HomePage.Instance.PageIndex += 1; templateDeviceAction.Show(); }; addbtn.MouseUpEventHandler += addfunctionclick; addtextbtn.MouseUpEventHandler += addfunctionclick; } else { var devicesFrameLayout = new FrameLayout { Height = Application.GetRealHeight(130), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(devicesFrameLayout); ///显示图标 var actionsIcon = new Button { Width = Application.GetRealWidth(81), Height = Application.GetRealHeight(81), X = Application.GetRealWidth(104), Y = Application.GetRealHeight(25), // UnSelectedImagePath = "ZigeeLogic/time.png", }; devicesFrameLayout.AddChidren(actionsIcon); var actionsrowLayout = new RowLayout { Width = Application.GetRealWidth(800), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(222), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; devicesFrameLayout.AddChidren(actionsrowLayout); var linkType = int.Parse(ListActions[i]["LinkType"].ToString()); var actions = ListActions[i]; switch (linkType) { case 0: { var obj1 = actions["DeviceAddr"].ToString(); var obj2 = actions["Epoint"].ToString(); var deviceinof = Common.Logic.LogicDviceList.Find((obj) => { return ((obj.DeviceAddr == obj1) && (obj.DeviceEpoint.ToString() == obj2)); }); if (deviceinof == null) { continue; } ///设备名称Button var btndevicename = new Button { Y = Application.GetRealHeight(20), Height = Application.GetRealHeight(50), Width = Application.GetRealWidth(450), TextAlignment = TextAlignment.CenterLeft, Text = deviceinof.DeviceEpointName, TextColor = ZigbeeColor.Current.LogicTextBlackColor, }; actionsrowLayout.AddChidren(btndevicename); ///区域(房间)名称Button var btnregionname = new Button { Y = btndevicename.Bottom + Application.GetRealHeight(10), Width = Application.GetRealWidth(450), TextAlignment = TextAlignment.CenterLeft, Height = Application.GetRealHeight(50), Text = "",//Language.StringByID(MyInternationalizationString.customroom), TextColor = ZigbeeColor.Current.LogicBtnCancelColor, }; actionsrowLayout.AddChidren(btnregionname); ///通过设备找到区域(房间)名称 Send.RoomNmae(btnregionname, deviceinof); ///显示设备条件状态控件 var devicestatus = new Button { Width = Application.GetRealWidth(350), Height = Application.GetRealHeight(130), Gravity = Gravity.CenterVertical, TextAlignment = TextAlignment.CenterRight, X = Application.GetRealWidth(450), TextColor = ZigbeeColor.Current.LogicBtnCancelColor, }; actionsrowLayout.AddChidren(devicestatus); ///编辑设备状态Button var deviceedit = new Button { BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1, Text = Language.StringByID(MyInternationalizationString.edit), TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; actionsrowLayout.AddRightView(deviceedit); ///编辑点击事件 deviceedit.MouseUpEventHandler += (sender, e) => { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); TemplateDeviceAction.CurrentDeviceStateView(flMain, deviceinof, true); }; switch (deviceinof.Type) { case DeviceType.OnOffOutput: { actionsIcon.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") { devicestatus.Text = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"].ToString() == "1") { devicestatus.Text = Language.StringByID(MyInternationalizationString.open); } else if (status["Data1"].ToString() == "2") { devicestatus.Text = Language.StringByID(MyInternationalizationString.onoff); } } } } break; case DeviceType.DimmableLight: { actionsIcon.UnSelectedImagePath = "ZigeeLogic/dimmableLight.png"; var TaskList = actions["TaskList"] as List>; if (TaskList == null) { continue; } foreach (var status in TaskList) { if (status["TaskType"].ToString() == "3") { var intvalue = int.Parse(status["Data1"]); var lightbrightnessvalue = (intvalue * 100) / 254; devicestatus.Text = lightbrightnessvalue.ToString() + "%"; } else if (status["TaskType"].ToString() == "1") { if (status["Data1"].ToString() == "0") { devicestatus.Text = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"].ToString() == "2") { devicestatus.Text = Language.StringByID(MyInternationalizationString.onoff); } } } } break; case DeviceType.WindowCoveringDevice: { actionsIcon.UnSelectedImagePath = "ZigeeLogic/curtain.png"; var TaskList = actions["TaskList"] as List>; if (TaskList == null) { continue; } foreach (var status in TaskList) { if (status["TaskType"] == "6") { if (status["Data1"] == "0") { devicestatus.Text = Language.StringByID(MyInternationalizationString.open); } else if (status["Data1"] == "1") { devicestatus.Text = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"] == "5") { devicestatus.Text = status["Data2"] + "%"; } } } } break; case DeviceType.AirSwitch: { actionsIcon.UnSelectedImagePath = "ZigeeLogic/airswitch.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") { devicestatus.Text = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"].ToString() == "1") { devicestatus.Text = Language.StringByID(MyInternationalizationString.open); } else if (status["Data1"].ToString() == "2") { devicestatus.Text = Language.StringByID(MyInternationalizationString.onoff); } } } } break; case DeviceType.Thermostat: { actionsIcon.UnSelectedImagePath = "ZigeeLogic/ac.png"; var TaskList = actions["TaskList"] as List>; if (TaskList == null) { continue; } string modetext = "", temperaturetext = "", speedtext = ""; bool ifclose = false; foreach (var status in TaskList) { if (status["TaskType"].ToString() == "1") { if (status["Data1"].ToString() == "0") { // devicestatus.Text = Language.StringByID(MyInternationalizationString.close); ifclose = false; } else if (status["Data1"].ToString() == "1") { //devicestatus.Text = Language.StringByID(MyInternationalizationString.open); ifclose = true; } } else if (status["TaskType"].ToString() == "5") { if (status["Data1"] == "3") {//3---设置工作模式(1:自动;3:制冷;4:制热;7:送风;8:除湿) switch (status["Data2"]) { case "3": { modetext = Language.StringByID(MyInternationalizationString.logiccool); } break; case "4": { modetext = Language.StringByID(MyInternationalizationString.logicheat); } break; case "1": { modetext = Language.StringByID(MyInternationalizationString.logicauto); } break; case "8": { modetext = Language.StringByID(MyInternationalizationString.logicdry); } break; case "7": { modetext = Language.StringByID(MyInternationalizationString.logicfanonly); } break; } } else if (status["Data1"] == "6") {//6---设置风扇模式(1:低风;2:中风;3:高风;) switch (status["Data2"]) { case "1": { speedtext = Language.StringByID(MyInternationalizationString.logiclow); } break; case "2": { speedtext = Language.StringByID(MyInternationalizationString.logicmedium); } break; case "3": { speedtext = Language.StringByID(MyInternationalizationString.logichigh); } break; } } //4---设置加热度数;5---设置制冷、除湿度数;7---设置自动度数 else if (status["Data1"] == "4" || status["Data1"] == "5" || status["Data1"] == "7") { var s = int.Parse(status["Data2"]) / 100; temperaturetext = s.ToString(); } else if (status["Data1"] == "20") { temperaturetext = "无"; } } } if (ifclose) { devicestatus.Text = modetext + ";" + temperaturetext + "℃;" + speedtext; } else { devicestatus.Text = Language.StringByID(MyInternationalizationString.close); } } break; } } break; } ///删除控件 var del = new Button { BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1, Text = Language.StringByID(MyInternationalizationString.del), }; actionsrowLayout.AddRightView(del); del.MouseUpEventHandler += (sender, e) => { var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim)); alert.ResultEventHandler += (sender1, e1) => { if (e1) { Common.Logic.CurrentLogic.Actions.Remove(actions); var templatePage = new TemplatePage(); UserView.HomePage.Instance.AddChidren(templatePage); UserView.HomePage.Instance.PageIndex += 1; templatePage.Show(); } }; alert.Show(); }; } } #endregion #region -----每天 设置周期----- var fraline1 = new FrameLayout { Height = Application.GetRealHeight(30), }; middle.AddChidren(fraline1); var weekFrameLayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(weekFrameLayout); var weekRowLayout = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(58), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; weekFrameLayout.AddChidren(weekRowLayout); var settxet = new Button { Text = Language.StringByID(MyInternationalizationString.setupcycle), TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(60), Gravity = Gravity.CenterVertical, }; weekRowLayout.AddChidren(settxet); var btnweektext = 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), X = settxet.Right, }; weekRowLayout.AddChidren(btnweektext); var nextBtn = new Button { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), UnSelectedImagePath = "ZigeeLogic/next.png", X = Application.GetRealWidth(965 - 58), Gravity = Gravity.CenterVertical, }; weekRowLayout.AddChidren(nextBtn); UpdateWeek(btnweektext); EventHandler cycleclick = (sender, e) => { /*------保留每月,每年类型*/ var cycle = new Cycle(() => { UpdateWeek(btnweektext); }); 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(); }; btnweektext.MouseUpEventHandler += cycleclick; nextBtn.MouseUpEventHandler += cycleclick; #endregion #region ----推送设置---- var pushFrameLayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(pushFrameLayout); var pushswitchRowlayout = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(58), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; pushFrameLayout.AddChidren(pushswitchRowlayout); var btnswitchtxet = new Button { TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(60), Gravity = Gravity.CenterVertical, TextID = MyInternationalizationString.pushswitch, }; pushswitchRowlayout.AddChidren(btnswitchtxet); var btnswitch = new Button { Width = Application.GetMinRealAverage(104), Height = Application.GetMinRealAverage(63), UnSelectedImagePath = "ZigeeLogic/logicclose.png", SelectedImagePath = "ZigeeLogic/logicopen.png", X = Application.GetRealWidth(965 - 104), Gravity = Gravity.CenterVertical, }; pushswitchRowlayout.AddChidren(btnswitch); btnswitch.MouseUpEventHandler += (sender1, e1) => { btnswitch.IsSelected = !btnswitch.IsSelected; if (btnswitch.IsSelected) { } else { } }; var custompushFrameLayout = new FrameLayout { Height = Application.GetRealHeight(160), BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; middle.AddChidren(custompushFrameLayout); var custompushRowLayout = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(965), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(58), LineColor = ZigbeeColor.Current.LogicBlankBackgroundColor, }; custompushFrameLayout.AddChidren(custompushRowLayout); var btncustompush = new Button { TextID = MyInternationalizationString.custompush, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicTextBlackColor, Width = Application.GetRealWidth(300), Height = Application.GetRealHeight(60), Gravity = Gravity.CenterVertical, }; custompushRowLayout.AddChidren(btncustompush); var custompushback = new Button { Width = Application.GetRealWidth(58), Height = Application.GetRealHeight(58), UnSelectedImagePath = "ZigeeLogic/next.png", X = Application.GetRealWidth(965 - 58), Gravity = Gravity.CenterVertical, }; custompushRowLayout.AddChidren(custompushback); EventHandler customclick = (sender, e) => { var CustomText = new CustomText(); UserView.HomePage.Instance.AddChidren(CustomText); UserView.HomePage.Instance.PageIndex += 1; CustomText.Show(); }; btncustompush.MouseUpEventHandler += customclick; custompushback.MouseUpEventHandler += customclick; custompushRowLayout.MouseUpEventHandler += customclick; #endregion var saveFrameLayout = new FrameLayout { Y = middle.Bottom, Height = Application.GetRealHeight(180), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(saveFrameLayout); var btnsave = new Button { X = Application.GetRealWidth(85), Height = Application.GetRealHeight(130),//194 Width = Application.GetRealWidth(910), Radius = (uint)Application.GetRealHeight(60), BackgroundColor = ZigbeeColor.Current.LogicBtnSaveBackgroundColor, TextID = MyInternationalizationString.Save, TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor, }; saveFrameLayout.AddChidren(btnsave); btnsave.MouseUpEventHandler += async (sender, e) => { var name = logicTextBox.Text.Trim(); //if (Common.Logic.CurrentLogic.Conditions.Count != 0 && Common.Logic.CurrentLogic.Actions.Count != 0) //{ // AddChidren(btnsave); //} if (string.IsNullOrEmpty(logicTextBox.Text.Trim())) { new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.PleaseEnterLogicName), Language.StringByID(MyInternationalizationString.Close)).Show(); return; } var logicname = Common.Logic.LogicList.Find((logic) => Common.Logic.CurrentLogic.LogicId != logic.LogicId && logic.LogicName == name); if (logicname != null) { new Alert(Language.StringByID(MyInternationalizationString.Tip), Language.StringByID(MyInternationalizationString.Rename), Language.StringByID(MyInternationalizationString.Close)).Show(); return; } Common.Logic.CurrentLogic.LogicName = name; //判断是新添加逻辑(默认0)还是修改逻辑 CommonPage.Loading.Start(); if (Common.Logic.CurrentLogic.LogicId == 0) { //发送添加逻辑命令 var logicifon = await Send.AddModifyLogic(Common.Logic.CurrentLogic); if (logicifon != null && logicifon.LogicId != 0) { Common.Logic.CurrentLogic.LogicId = logicifon.LogicId; Common.Logic.LogicList.Add(Common.Logic.CurrentLogic); } } else { //发送修改逻辑命令 Send.AddModifyLogic(Common.Logic.CurrentLogic); } CommonPage.Loading.Hide(); UserView.HomePage.Instance.RemoveViewByTag("Logic"); Category.Category.instance?.RefreshBodyView(); //UserView.HomePage.Instance.RemoveAt("Logic1"); //Category.Category category = new Category.Category(); //UserView.HomePage.Instance.AddChidren(category); //UserView.HomePage.Instance.PageIndex += 1; //category.Show(2); }; } /// /// 更新执行周期的方法 /// /// Btndisplaycycle. void UpdateWeek(Button btndisplaycycle) { switch (Common.Logic.CurrentLogic.TimeAttribute.Repeat) { ///0:只执行一次,执行后IsEnable值置;1,今年内执行;2:每天执行;3:每月执行;4:每年执行;5:周重复。 case 0: { btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.executeonce); }; break; case 1: { }; break; case 2: { btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyday); }; break; case 3: { string len = "", value = ""; var stringvalue = Convert.ToString(Common.Logic.CurrentLogic.TimeAttribute.MonthDate, 2); var str = stringvalue.Insert(0, new string('0', 32 - stringvalue.Length)); for (int j = 31; j >= 0; j--) { len += str.Substring(j, 1); } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { value += (j + 1).ToString() + ","; } } btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.monthly) + value.TrimEnd(',') + Language.StringByID(MyInternationalizationString.day); }; break; case 4: { Dictionary dictionary = new Dictionary(); ///找出执行的月份和天数 if (Common.Logic.CurrentLogic.TimeAttribute.SelectMonDate.Count != 0) { for (int i = 0; i < Common.Logic.CurrentLogic.TimeAttribute.SelectMonDate.Count; i++) { var dayvalue = Common.Logic.CurrentLogic.TimeAttribute.SelectMonDate[i]; if (dayvalue != 0) { dictionary.Add(i + 1, dayvalue); } } } if (dictionary.Count != 0 && dictionary.Count == 1) { string len = "", leng = ""; int minvalue = 0, Maximum = 0; foreach (var value in dictionary) { ///取出月份 var month = value.Key; ///取出日数 var day = value.Value; var maxvalue = Convert.ToString(day, 2); var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length)); for (int j = 31; j >= 0; j--) { len += str.Substring(j, 1); } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { minvalue = j + 1; break; } } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { Maximum = j + 1; } } if (month.ToString().Length < 2) { leng = "0" + month.ToString(); } else { leng = month.ToString(); } if (minvalue == Maximum) { btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()); } else { btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-" + leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString()); } } } else { int b = 0; string stringtext = ""; foreach (var value in dictionary) { string len = "", leng = ""; int minvalue = 0, Maximum = 0; ///取出月份 var month = value.Key; ///取出日数 var day = value.Value; var maxvalue = Convert.ToString(day, 2); var str = maxvalue.Insert(0, new string('0', 32 - maxvalue.Length)); for (int j = 31; j >= 0; j--) { len += str.Substring(j, 1); } if (month.ToString().Length < 2) { leng = "0" + month.ToString(); } else { leng = month.ToString(); } if (b == 0) { for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { minvalue = j + 1; break; } } stringtext += leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()) + "-"; } if (b == dictionary.Count - 1) { for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { Maximum = j + 1; } } stringtext += leng + "/" + (Maximum.ToString().Length < 2 ? "0" + Maximum.ToString() : Maximum.ToString()); } b++; } btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyyear) + stringtext; } }; break; case 5: { string len = "", text = ""; List listvalueInt = new List(); listvalueInt.Clear(); var maxvalue = Convert.ToString(Common.Logic.CurrentLogic.TimeAttribute.WeekDay, 2); var str = maxvalue.Insert(0, new string('0', 8 - maxvalue.Length)); for (int j = 7; j >= 0; j--) { len += str.Substring(j, 1); } for (int j = 0; j < len.Length; j++) { var strvalue = len.Substring(j, 1); if (strvalue == "1") { listvalueInt.Add(j + 1); if ((j + 1) == 1) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.mon1) + ","; //text += Language.StringByID(MyInternationalizationString.mon) + ","; } else if ((j + 1) == 2) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.tue1) + ","; //text += Language.StringByID(MyInternationalizationString.tue) + ","; } else if ((j + 1) == 3) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.wed1) + ","; //text += Language.StringByID(MyInternationalizationString.wed) + ","; } else if ((j + 1) == 4) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.thu1) + ","; //text += Language.StringByID(MyInternationalizationString.thu) + ","; } else if ((j + 1) == 5) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.frl1) + ","; //text += Language.StringByID(MyInternationalizationString.frl) + ","; } else if ((j + 1) == 6) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sat1) + ","; //text += Language.StringByID(MyInternationalizationString.sat) + ","; } else if ((j + 1) == 7) { text += Language.StringByID(MyInternationalizationString.week1) + Language.StringByID(MyInternationalizationString.sun1) + ","; //text += Language.StringByID(MyInternationalizationString.sun) + ","; } } } //暂时隐藏掉,需要显示周末和工作日再放开; //if (listvalueInt.Count == 5 && !listvalueInt.Contains(6) && !listvalueInt.Contains(7)) //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.workingday); //} //else if (listvalueInt.Count == 2 && listvalueInt.Contains(6) && listvalueInt.Contains(7)) //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.weekend); //} //else if (listvalueInt.Count == 7) //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.everyday); //} //else //{ // btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(','); //} btndisplaycycle.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(','); //btndisplaycycle.Text = text.TrimEnd(','); }; break; } } void ConditionView(bool edit) { Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim(); #region 组合条件View FrameLayout flMain = new FrameLayout { BackgroundColor = 0x50000000 }; this.AddChidren(flMain); flMain.MouseUpEventHandler += (sender2, e2) => { flMain.RemoveFromParent(); }; var timetypeframelayout1 = new FrameLayout { Width = Application.GetRealWidth(1080), Height = Application.GetRealHeight(100), Y = Application.GetRealHeight(1920 - 100), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, }; flMain.AddChidren(timetypeframelayout1); var framelayout = new FrameLayout { Width = Application.GetRealWidth(1080), Height = Application.GetRealHeight(530), Y = Application.GetRealHeight(1920 - 530), BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor, Radius = (uint)Application.GetRealHeight(60), }; flMain.AddChidren(framelayout); #region -------取消 完成 var timetype = new RowLayout { Height = Application.GetRealHeight(140), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; framelayout.AddChidren(timetype); var Btncancel = new Button { TextID = MyInternationalizationString.cancel, TextColor = ZigbeeColor.Current.LogicBtnCancelColor, Height = Application.GetRealHeight(140), Width = Application.GetRealWidth(200), X = Application.GetRealWidth(80), TextAlignment = TextAlignment.CenterLeft, }; timetype.AddChidren(Btncancel); Btncancel.MouseUpEventHandler += (sender16, e16) => { flMain.RemoveFromParent(); UserView.HomePage.Instance.ScrollEnabled = true; }; var Btntitle = new Button { TextID = MyInternationalizationString.condition, TextColor = ZigbeeColor.Current.LogicBtnTypeColor, Height = Application.GetRealHeight(140), Width = Application.GetRealWidth(320), TextAlignment = TextAlignment.Center, X = Btncancel.Right + Application.GetRealWidth(100), TextSize = 16, }; timetype.AddChidren(Btntitle); var Btncomplete = new Button { TextID = MyInternationalizationString.complete, TextColor = ZigbeeColor.Current.LogicBtnCompleteColor, Height = Application.GetRealHeight(140), Width = Application.GetRealWidth(200), TextAlignment = TextAlignment.CenterRight, X = Btntitle.Right + Application.GetRealWidth(100), }; timetype.AddChidren(Btncomplete); #endregion #region -------满足所有条件 满足其中一个条件 #region -------满足所有条件 var andFrameLayout = new FrameLayout { Height = Application.GetRealHeight(160), Y = timetype.Bottom + Application.GetRealHeight(20), }; framelayout.AddChidren(andFrameLayout); var androw = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(920), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(80), LineColor = ZigbeeColor.Current.LogicRowLayoutLineColor, }; andFrameLayout.AddChidren(androw); var andbtn = new Button { Width = Application.GetRealWidth(600), TextID = MyInternationalizationString.Allconditions, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor, }; androw.AddChidren(andbtn); var andSelected = new SelectedButton(); androw.AddChidren(andSelected); #endregion #region -------满足其中一个条件 var orFrameLayout = new FrameLayout { Height = Application.GetRealHeight(160), Y = andFrameLayout.Bottom, }; framelayout.AddChidren(orFrameLayout); var orrow = new RowLayout { Y = Application.GetRealHeight(30), Width = Application.GetRealWidth(920), Height = Application.GetRealHeight(130), X = Application.GetRealWidth(80), LineColor = ZigbeeColor.Current.LogicBackgroundColor, }; orFrameLayout.AddChidren(orrow); var orbtn = new Button { Width = Application.GetRealWidth(600), TextID = MyInternationalizationString.anycondition, TextAlignment = TextAlignment.CenterLeft, TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor, }; orrow.AddChidren(orbtn); var orSelected = new SelectedButton(); orrow.AddChidren(orSelected); #endregion ///满足所有条件点击事件 EventHandler andclick = (sedner14, e14) => { andSelected.Visible = true; orSelected.Visible = false; andbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; orbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; }; androw.MouseUpEventHandler += andclick; andbtn.MouseUpEventHandler += andclick; andSelected.MouseUpEventHandler += andclick; andFrameLayout.MouseUpEventHandler += andclick; ///满足其中一个条件点击事件 EventHandler orclick = (sedner15, e15) => { andSelected.Visible = false; orSelected.Visible = true; andbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; orbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; }; orrow.MouseUpEventHandler += orclick; orbtn.MouseUpEventHandler += orclick; orSelected.MouseUpEventHandler += orclick; orFrameLayout.MouseUpEventHandler += orclick; #endregion #endregion if (edit) { if (Common.Logic.CurrentLogic.Relationship == 0) { andSelected.Visible = true; orSelected.Visible = false; andbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; orbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; } else { andSelected.Visible = false; orSelected.Visible = true; andbtn.TextColor = ZigbeeColor.Current.LogicBtnNotSelectedColor; orbtn.TextColor = ZigbeeColor.Current.LogicBtnSelectedColor; } } Btncomplete.MouseUpEventHandler += (sender, e) => { if (!andSelected.Visible && !orSelected.Visible) { ///可以提示未选中状态; return; } flMain.RemoveFromParent(); if (andSelected.Visible) { Common.Logic.CurrentLogic.Relationship = 0; } if (orSelected.Visible) { Common.Logic.CurrentLogic.Relationship = 1; } var templateDeviceCondition = new TemplateDeviceCondition(); UserView.HomePage.Instance.AddChidren(templateDeviceCondition); UserView.HomePage.Instance.PageIndex += 1; templateDeviceCondition.Show(); }; } } }