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.Logic.DoorLockLogic { public class LockLogicCommunalPage : FrameLayout { public LockLogicCommunalPage() { UserView.HomePage.Instance.RemoveViewByTag("Logic"); Tag = "Logic"; } EditText logicTextBox; public void Show(Action action) { #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(400), 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) => { action(); RemoveFromParent(); }; #endregion var middle = new VerticalScrolViewLayout { Y = topRowLayout.Bottom, Height = Application.GetRealHeight(1920 - 184 - 180), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); #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(1080 - 58 - 300), 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 { var addCondition = new AddCondition(); UserView.HomePage.Instance.AddChidren(addCondition); UserView.HomePage.Instance.PageIndex += 1; addCondition.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 addCondition = new AddCondition(); UserView.HomePage.Instance.AddChidren(addCondition); UserView.HomePage.Instance.PageIndex += 1; addCondition.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/time.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) { 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); ///通过设备找到区域(房间)名称 Device.Logic.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) => { if (deviceinof.Type != DeviceType.DoorLock) { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); // DeviceStateCondition.CurrentDeviceView(flMain, deviceinof, true); } else { //var memberList = new MemberList(); //UserView.HomePage.Instance.AddChidren(memberList); //UserView.HomePage.Instance.PageIndex += 1; //MemberList.edit = true; //memberList.Show(deviceinof); } }; ///显示设备条件状态控件 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.DoorLock: { for (int a = 0; a < Common.Logic.CurrentLogic.Accounts.Count; a++) { if (Common.Logic.CurrentLogic.Accounts[a]["Type"] == "1") { if (Common.Logic.CurrentLogic.Accounts[a]["UserId"] == conditions["AttriButeData2"]) { devicestatus.Text = conditions["Account"]; 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) { var lockLogicCommunalPage = new LockLogicCommunalPage(); UserView.HomePage.Instance.AddChidren(lockLogicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; lockLogicCommunalPage.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 addAction = new Device.Logic.DoorLockLogic.AddAction(); UserView.HomePage.Instance.AddChidren(addAction); UserView.HomePage.Instance.PageIndex += 1; addAction.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 addAction = new Device.Logic.DoorLockLogic.AddAction(); UserView.HomePage.Instance.AddChidren(addAction); UserView.HomePage.Instance.PageIndex += 1; addAction.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); ///通过设备找到区域(房间)名称 Device.Logic.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 deviceStatePage = new DeviceStatePage(); //UserView.HomePage.Instance.AddChidren(deviceStatePage); //UserView.HomePage.Instance.PageIndex += 1; //deviceStatePage.IsDeviceEditor = true; //deviceStatePage.Show(deviceinof); //ActionModifyDeviceStateView(deviceinof); var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); //LogicDevicePage.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; case 2: { var sceneinof = Common.Room.AllRoomSceneUIList.Find((obj) => { return obj.Id.ToString() == actions["DeviceAddr"].ToString(); }); if (sceneinof == null) { continue; } actionsIcon.UnSelectedImagePath = "ZigeeLogic/scene.png"; ///设备名称Button var btndevicename = new Button { Y = Application.GetRealHeight(20), Height = Application.GetRealHeight(50), Width = Application.GetRealWidth(500), TextAlignment = TextAlignment.CenterLeft, Text = sceneinof.Name, TextColor = ZigbeeColor.Current.LogicTextBlackColor, }; actionsrowLayout.AddChidren(btndevicename); ///区域(房间)名称Button var btnregionname = new Button { Y = btndevicename.Bottom + Application.GetRealHeight(10), Width = Application.GetRealWidth(500), TextAlignment = TextAlignment.CenterLeft, Height = Application.GetRealHeight(50), Text = "",//Language.StringByID(MyInternationalizationString.customroom), TextColor = ZigbeeColor.Current.LogicBtnCancelColor, }; actionsrowLayout.AddChidren(btnregionname); /////通过设备找到区域(房间)名称 Common.Room room = new Common.Room(); btnregionname.Text = room.GetRoomNameBySceneId(sceneinof.Id); //Send.RoomNmae(btnregionname, deviceinof); } 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 logicCommunalPage = new LogicCommunalPage(); //UserView.HomePage.Instance.AddChidren(logicCommunalPage); //UserView.HomePage.Instance.PageIndex += 1; //logicCommunalPage.Show(() => { }); } }; alert.Show(); }; } } #endregion #region ----推送设置---- var fraline1 = new FrameLayout { Height = Application.GetRealHeight(30), }; middle.AddChidren(fraline1); 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 Device.Logic.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 Device.Logic.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 { //发送修改逻辑命令 Device.Logic.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); }; } 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 Device.Logic.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 Device.Logic.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; } if (edit) { if (Common.Logic.CurrentLogic.LogicId != 0) { Device.Logic.Send.LogicControlSwitch(Common.Logic.CurrentLogic); } var addCondition = new AddCondition(); UserView.HomePage.Instance.AddChidren(addCondition); UserView.HomePage.Instance.PageIndex += 1; addCondition.Show(); } else { var addCondition = new AddCondition(); UserView.HomePage.Instance.AddChidren(addCondition); UserView.HomePage.Instance.PageIndex += 1; addCondition.Show(); } }; } } }