using System; using System.Collections.Generic; using Newtonsoft.Json.Linq; using Shared; using Shared.Common; using Shared.Phone; using Shared.Phone.Device.Logic.LogicView; using Shared.R; using ZigBee.Device; namespace Shared.Phone.Device.Logic { public class LogicCommunalPage : FrameLayout { public LogicCommunalPage() { UserView.HomePage.Instance.RemoveViewByTag("Logic"); Tag = "Logic"; } EditText logicTextBox; public async void Show(Action action) { #region View布局代码 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;//恢复左滑 action(); RemoveFromParent(); }; var middle = new VerticalScrolViewLayout { Y = view.topRowLayout.Bottom, Height = Application.GetRealHeight(Method.H - 184-180), BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor, }; this.AddChidren(middle); var saveBtn = new SaveView(); saveBtn.frameLayout.Y = middle.Bottom; saveBtn.frameLayout.Height = Application.GetRealHeight(180); this.AddChidren(saveBtn.Show()); #endregion #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 -----显示逻辑条件----- Addview addconditionview = new 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 addLogicPage = new AddLogicPage(); UserView.HomePage.Instance.AddChidren(addLogicPage); UserView.HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } }; 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.addconditions; middle.AddChidren(addflview.AddFl()); addflview.clickBtn.MouseUpEventHandler += (sender, e) => { if (Common.Logic.CurrentLogic.Conditions.Count == 1) { ConditionView(false); } else { var addLogicPage = new AddLogicPage(); UserView.HomePage.Instance.AddChidren(addLogicPage); UserView.HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } }; } 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]; string name = ""; string icon = ""; string state = ""; switch (Type) { /// (0:时间点条件;1:设备状态变化条件;2:其他逻辑条件;3:计数器条件;4:倒计时;5:时间段条件;6:安防条件;7:地理位置) case 0: { //"0正常时间点","1日出时间","2日落时间","3正午时间" switch (int.Parse(conditions["DateType"])) { case 0: { name = Language.StringByID(MyInternationalizationString.immediateexecution); icon = "ZigeeLogic/timepoint.png"; string s = ""; s = conditions["StartMin"].Length < 2 ? "0" + conditions["StartMin"] : conditions["StartMin"]; state = conditions["StartHour"] + ":" + s; } break; case 1: { name = Language.StringByID(MyInternationalizationString.sunrise); icon = "ZigeeLogic/sunrise.png"; if (int.Parse(conditions["AdjustTime"]) > 0) { state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute); } else if (int.Parse(conditions["AdjustTime"]) < 0) { state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute); } else { //timeTxet.Text = Language.StringByID(MyInternationalizationString.sunrise); } } break; case 2: { name = Language.StringByID(MyInternationalizationString.sunset); icon = "ZigeeLogic/sunset.png"; if (int.Parse(conditions["AdjustTime"]) > 0) { state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute); } else if (int.Parse(conditions["AdjustTime"]) < 0) { state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute); } else { // timevalue.Text = Language.StringByID(MyInternationalizationString.sunset); } } break; case 3: { name = Language.StringByID(MyInternationalizationString.noon); icon = "ZigeeLogic/noon.png"; if (int.Parse(conditions["AdjustTime"]) > 0) { state = Language.StringByID(MyInternationalizationString.delayed) + conditions["AdjustTime"] + Language.StringByID(MyInternationalizationString.logicminute); } else if (int.Parse(conditions["AdjustTime"]) < 0) { state = Language.StringByID(MyInternationalizationString.advance) + Math.Abs(int.Parse(conditions["AdjustTime"])).ToString() + Language.StringByID(MyInternationalizationString.logicminute); } else { // timeTxet.Text = Language.StringByID(MyInternationalizationString.noon); } } break; } } break; case 5: { icon = "ZigeeLogic/timeparagraph.png"; string s1 = "", s2 = ""; s1 = conditions["StartMin"].Length < 2 ? "0" + conditions["StartMin"] : conditions["StartMin"]; s2 = conditions["StopMin"].Length < 2 ? "0" + conditions["StopMin"] : conditions["StopMin"]; ///显示时间 name = conditions["StartHour"] + ":" + s1 + "-" + conditions["StopHour"] + ":" + s2; state =Language.StringByID(MyInternationalizationString.timeframe); } break; case 1: { var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]); name = LocalDevice.Current.GetDeviceEpointName(deviceinof); selecteddevice.regionNameBtn.Visible = true; Method.RoomNmae(selecteddevice.regionNameBtn, deviceinof); switch (deviceinof.Type) { case DeviceType.OnOffOutput: { icon = "ZigeeLogic/light.png"; if (conditions["AttriButeId"] == "0") { if (conditions["AttriButeData1"] == "1") { state = Language.StringByID(MyInternationalizationString.open); } else { state = Language.StringByID(MyInternationalizationString.close); } } } break; case DeviceType.IASZone: { var iASZonedevice = deviceinof as IASZone; var intvalue = conditions["AttriButeData1"]; icon = $"ZigeeLogic/sensor{iASZonedevice.IasDeviceType}.png"; 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) { state = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1); } else { if (minute == 0 && second != 0) { state = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.unattendedtime1); } if (minute != 0 && second == 0) { state = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.unattendedtime1); } } } else { state = Language.StringByID(MyInternationalizationString.someone); } } break; case 21: case 22: { if (conditions.ContainsKey("IgnoreTime")) { int minute = int.Parse(conditions["IgnoreTime"]) / 60; int second = int.Parse(conditions["IgnoreTime"]) % 60; if (minute != 0 && second != 0) { state = minute.ToString() + Language.StringByID(MyInternationalizationString.minute) + second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime); } else { if (minute == 0 && second != 0) { state = second.ToString() + Language.StringByID(MyInternationalizationString.second) + Language.StringByID(MyInternationalizationString.closetime); } if (minute != 0 && second == 0) { state = minute.ToString() + Language.StringByID(MyInternationalizationString.Minute) + Language.StringByID(MyInternationalizationString.closetime); } } } else { if (intvalue == "1") { state = Language.StringByID(MyInternationalizationString.logicopen); } else { state = Language.StringByID(MyInternationalizationString.logicclose); } } } break; case 40: { if (intvalue == "1") { state =Language.StringByID(MyInternationalizationString.smokescreen); } } break; case 42: { if (intvalue == "1") { state =Language.StringByID( MyInternationalizationString.waterleakage); } else { state =Language.StringByID( MyInternationalizationString.noleakage); } } break; case 43: { if (intvalue == "1") { state =Language.StringByID( MyInternationalizationString.gas); } } break; case 277: { if (intvalue == "1") { state =Language.StringByID( MyInternationalizationString.callthepolice); } } break; default: { if (intvalue == "1") { state =Language.StringByID(MyInternationalizationString.callthepolice); } } break; } } break; case DeviceType.OnOffSwitch: { icon = "ZigeeLogic/panel.png"; state = Language.StringByID(MyInternationalizationString.OnOffSwitch) + conditions["Epoint"]; } break; case DeviceType.DoorLock: { icon = "ZigeeLogic/doorlock.png"; 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"]) { state = Common.Logic.CurrentLogic.Accounts[a]["AccountName"]; break; } } } } break; case DeviceType.TemperatureSensor: { // conditionIcon.UnSelectedImagePath = "ZigeeLogic/temperature.png"; var dev = deviceinof as TemperatureSensor; if (conditions["Cluster_ID"] == "1026") { dev.SensorDiv = 1; } else { dev.SensorDiv = 2; } string s = ""; switch (conditions["Range"]) { case "0": { s = ">"; } break; case "1": { s = "="; } break; case "2": { s = "<"; } break; case "6": { s = "≥"; } break; case "7": { s = "≤"; } break; } ///转换温度值/100 string srtValue = (int.Parse(conditions["AttriButeData1"]) / 100).ToString(); if (conditions["Cluster_ID"] == "1026") { icon = "ZigeeLogic/temperature.png"; state = s + srtValue + "℃"; } else { icon = "ZigeeLogic/humidity.png"; state = s + srtValue + "%"; } break; } } } break; case 6: { switch (conditions["EnOrWithdrawMode"]) { case "0": { if (conditions["ModeId"] == "1") { icon = "ZigeeLogic/athome.png"; name = Language.StringByID(MyInternationalizationString.logicathomegarrison); } else { icon = "ZigeeLogic/leavehome.png"; name = Language.StringByID(MyInternationalizationString.logicremovehomegarrison); } } break; case "1": { icon = "ZigeeLogic/withdrawal.png"; name = Language.StringByID(MyInternationalizationString.withdrawal); } break; case "2": { icon = "ZigeeLogic/withdrawal.png"; name = Language.StringByID(MyInternationalizationString.urgentwithdrawal); } break; } } break; case 7: { icon = "ZigeeLogic/position.png"; name = Language.StringByID(MyInternationalizationString.geographicalposition); foreach (var radius in Common.Logic.CurrentLogic.Accounts) { if (radius["Type"] == "7") { if (conditions["AtHome"] == "1") { state = Language.StringByID(MyInternationalizationString.athome) + radius["Radius"] + Language.StringByID(MyInternationalizationString.mi); } else { state = Language.StringByID(MyInternationalizationString.leavehome) + radius["Radius"] + Language.StringByID(MyInternationalizationString.mi); } } } } break; } if (Type != 1) { selecteddevice.ordinaryBtn.Visible = true; selecteddevice.iconBtn.UnSelectedImagePath = icon; selecteddevice.ordinaryBtn.Text = name; selecteddevice.selecetddevicestateBtn.Text = state; } else { //设备状态 selecteddevice.deviceNameBtn.Visible = true; selecteddevice.iconBtn.UnSelectedImagePath = icon; selecteddevice.deviceNameBtn.Text = name; selecteddevice.selecetddevicestateBtn.Text = state; } ///编辑 selecteddevice.edit.MouseUpEventHandler += (sender, e) => { switch (Type) { /// (0:时间点条件;1:设备状态变化条件;2:其他逻辑条件;3:计数器条件;4:倒计时;5:时间段条件;6:安防条件;7:地理位置) case 0: { var timePoint = new TimePoint(); UserView.HomePage.Instance.AddChidren(timePoint); UserView.HomePage.Instance.PageIndex += 1; timePoint.IsEditor = true; timePoint.Show(conditions); } break; case 5: { var timePage = new TimePage(); UserView.HomePage.Instance.AddChidren(timePage); UserView.HomePage.Instance.PageIndex += 1; timePage.str1 = conditions["StartHour"] + ":" + conditions["StartMin"] + "-" + conditions["StopHour"] + ":" + conditions["StopMin"]; timePage.IsEditor = true; timePage.Show(); } break; case 1: { var deviceinof = Method.GetCommonDevice(conditions["MacAddr"], conditions["Epoint"]); if (deviceinof.Type != DeviceType.DoorLock) { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "condition_logic"); } else { var memberList = new MemberList(); UserView.HomePage.Instance.AddChidren(memberList); UserView.HomePage.Instance.PageIndex += 1; MemberList.edit = true; memberList.Show(deviceinof, conditions); } } break; case 6: { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); AddLogicPage.SecurityView(flMain, true); } break; case 7: { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); AddLogicPage.LocationView(flMain, true); } break; } }; ///删除控件 selecteddevice.del.MouseUpEventHandler += (sender, e) => { var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm, Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); alert.ConfirmClickEvent += () => { Common.Logic.CurrentLogic.Conditions.Remove(conditions); selecteddevice.selecetdFrameLayout.RemoveFromParent(); //var logicCommunalPage = new LogicCommunalPage(); //UserView.HomePage.Instance.AddChidren(logicCommunalPage); //UserView.HomePage.Instance.PageIndex += 1; //logicCommunalPage.Show(() => { }); }; }; } } #endregion #region ----显示执行目标---- Addview addactionview = new 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(); Method.View(IfString.Action_Logic,IfString.Action_LogicScene); }; 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.addfunction; middle.AddChidren(addflview.AddFl()); addflview.clickBtn.MouseUpEventHandler += (sender, e) => { Common.Logic.CurrentLogic.LogicName = logicTextBox.Text.Trim(); Method.View(IfString.Action_Logic, IfString.Action_LogicScene); }; } else { SelectedDeviceView actiondevice = new SelectedDeviceView(); actiondevice.Show(middle); var linkType = int.Parse(ListActions[i]["LinkType"].ToString()); var actions = ListActions[i]; string name = ""; string icon = ""; string state = ""; switch (linkType) { case 0: case 8: { var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString()); name = LocalDevice.Current.GetDeviceEpointName(deviceinof); actiondevice.regionNameBtn.Visible = true; Method.RoomNmae(actiondevice.regionNameBtn, deviceinof); switch (deviceinof.Type) { case DeviceType.OnOffOutput: { icon = "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") { state = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"].ToString() == "1") { state = Language.StringByID(MyInternationalizationString.open); } else if (status["Data1"].ToString() == "2") { state = Language.StringByID(MyInternationalizationString.onoff); } } } } break; case DeviceType.DimmableLight: { icon = "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; state = lightbrightnessvalue.ToString() + "%"; } else if (status["TaskType"].ToString() == "1") { if (status["Data1"].ToString() == "0") { state = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"].ToString() == "2") { state = Language.StringByID(MyInternationalizationString.onoff); } } } } break; case DeviceType.WindowCoveringDevice: { icon = "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") { state = Language.StringByID(MyInternationalizationString.open); } else if (status["Data1"] == "1") { state = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"] == "5") { state = status["Data2"] + "%"; } } } } break; case DeviceType.AirSwitch: { icon = "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") { state = Language.StringByID(MyInternationalizationString.close); } else if (status["Data1"].ToString() == "1") { state = Language.StringByID(MyInternationalizationString.open); } else if (status["Data1"].ToString() == "2") { state = Language.StringByID(MyInternationalizationString.onoff); } } } } break; case DeviceType.Thermostat: { icon = "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 (TaskList.Count == 1) { //数组只有一个元素说明当前空调状态为关; ifclose = false; //如果空调状态是关;直接跳出for循坏; break; } else { ifclose = true; } 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) { state = modetext + ";" + temperaturetext + "℃;" + speedtext; } else { state = Language.StringByID(MyInternationalizationString.close); } } break; case DeviceType.DoorLock: { //门锁特殊 icon = "ZigeeLogic/doorlock.png"; if (actions["PassData"].ToString() == "055704010112") { state = Language.StringByID(MyInternationalizationString.logicopen); } else { state = Language.StringByID(MyInternationalizationString.logicclose); } } break; case DeviceType.ColorTemperatureLight: { icon = "ZigeeLogic/nightLight.png"; var taskList = actions["TaskList"] as List>; if (taskList == null) { continue; } foreach (var tasks in taskList) { switch (tasks["TaskType"]) { case "1": { if (tasks["Data1"] == "0") { state += Language.StringByID(MyInternationalizationString.close) + ";"; } else { state += Language.StringByID(MyInternationalizationString.open) + ";"; } } break; } } foreach (var tasks in taskList) { switch (tasks["TaskType"]) { case "3": { var intvalue = int.Parse(tasks["Data1"]); var lightbrightnessvalue = (intvalue * 100) / 254; state += Language.StringByID(MyInternationalizationString.brightness) + lightbrightnessvalue.ToString() + "%;"; } break; } } foreach (var tasks in taskList) { switch (tasks["TaskType"]) { case "7": { if (tasks["Data1"] == "0") { state += Language.StringByID(MyInternationalizationString.buzzer) + Language.StringByID(MyInternationalizationString.close) + ";"; } else { state += Language.StringByID(MyInternationalizationString.buzzer) + Language.StringByID(MyInternationalizationString.open) + ";"; } } break; } } foreach (var tasks in taskList) { switch (tasks["TaskType"]) { case "8": { var intvalue = int.Parse(tasks["Data1"]); var colorTemperatureValue = 1000000/(intvalue *100); state += Language.StringByID(MyInternationalizationString.colorTemperature) + colorTemperatureValue.ToString() + "K"; } break; } } state=state.TrimEnd(';');//去掉最后那个";" } break; } } break; case 2: { //在本地查找该场景; var sceneinof = UserCenter.HdlSceneLogic.Current.GetSceneUIBySceneId(Convert.ToInt32(actions["DeviceAddr"].ToString())); //本地没有存在; if (sceneinof == null) { //实现目的:显示出来让可以自己是否删除 sceneinof = new SceneUI(); #region -------- ////在网关查找该场景; ////标记问题:网络请求,存在视图加载快慢的问题; //sceneinof = await Send.GetScene(int.Parse(actions["DeviceAddr"].ToString())); ////网关没有存在; //if (sceneinof == null) //{ // //注解:本地和网关都不存在该场景,界面将不会显示该场景; // //sceneinof = new SceneUI(); // //移除该场景数据; // Common.Logic.CurrentLogic.Actions.Remove(actions); // //移除该场景视图; // devicesFrameLayout.RemoveFromParent(); // continue; //} #endregion } icon = "ZigeeLogic/scene.png"; name = sceneinof.Name; actiondevice.regionNameBtn.Visible = true; /////通过设备找到区域(房间)名称 Common.Room room = new Common.Room(); actiondevice.regionNameBtn.Text = UserCenter.HdlRoomLogic.Current.GetRoomNameBySceneId(sceneinof.Id); } break; case 6: { if (actions["SecuritySetting"].ToString() == "0") { if (actions["Password"].ToString() == "888888") { icon = "ZigeeLogic/withdrawal.png"; state = Language.StringByID(MyInternationalizationString.urgentwithdrawal); } else { icon = "ZigeeLogic/withdrawal.png"; state = Language.StringByID(MyInternationalizationString.withdrawal); } } else if (actions["SecuritySetting"].ToString() == "1") { if (actions["SecurityModeId"].ToString() == "1") { icon = "ZigeeLogic/athome.png"; state = Language.StringByID(MyInternationalizationString.logicathomegarrison); } else if (actions["SecurityModeId"].ToString() == "2") { icon = "ZigeeLogic/leavehome.png"; state = Language.StringByID(MyInternationalizationString.logicremovehomegarrison); } } } break; case 7: { var delaytimevalue = int.Parse(actions["DelayTime"].ToString()); var Minutes = delaytimevalue / 60; var seconds = delaytimevalue % 60; icon = "ZigeeLogic/delay.png"; if (Minutes != 0) { if (seconds == 0) { state = Minutes.ToString() + Language.StringByID(MyInternationalizationString.minute); } else { state = Minutes.ToString() + Language.StringByID(MyInternationalizationString.minute) + seconds.ToString() + Language.StringByID(MyInternationalizationString.second); } } else { state = seconds.ToString() + Language.StringByID(MyInternationalizationString.second); } //记录延时; actiondevice.edit.Tag = i; }; break; } if (linkType != 2) { actiondevice.stateRow.AddRightView(actiondevice.edit); } actiondevice.stateRow.AddRightView(actiondevice.del); if (linkType == 6 || linkType == 7) { actiondevice.ordinaryBtn.Visible = true; actiondevice.iconBtn.UnSelectedImagePath = icon; actiondevice.ordinaryBtn.Text = name; actiondevice.selecetddevicestateBtn.Text = state; } else { //设备状态 actiondevice.deviceNameBtn.Visible = true; actiondevice.iconBtn.UnSelectedImagePath = icon; actiondevice.deviceNameBtn.Text = name; actiondevice.selecetddevicestateBtn.Text = state; } ///编辑 actiondevice.edit.MouseUpEventHandler += (sender, e) => { switch (linkType) { case 8: case 0: { var deviceinof = Method.GetCommonDevice(actions["DeviceAddr"].ToString(), actions["Epoint"].ToString()); if (deviceinof.Type != DeviceType.ColorTemperatureLight) { var flMain = new FrameLayout { BackgroundColor = ZigbeeColor.Current.LogicViewBackgroundColor }; this.AddChidren(flMain); CurrentDeviceState.CurrentDeviceView(flMain, deviceinof, true, "action_logic"); } else { var nightlight = new Nightlight(); UserView.HomePage.Instance.AddChidren(nightlight); UserView.HomePage.Instance.PageIndex += 1; nightlight.Show(deviceinof, true, "logic", actions); } } break; case 6: { var securityMode = new SecurityMode(); UserView.HomePage.Instance.AddChidren(securityMode); UserView.HomePage.Instance.PageIndex += 1; securityMode.IsDeviceEditor = true; securityMode.Show(); } break; case 7: { var delayTime = new DelayTime(); UserView.HomePage.Instance.AddChidren(delayTime); UserView.HomePage.Instance.PageIndex += 1; delayTime.Show(int.Parse(actiondevice.edit.Tag.ToString()), true); } break; } }; ///删除控件 actiondevice.del.MouseUpEventHandler += (sender, e) => { var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Confirm, Language.StringByID(MyInternationalizationString.doyouwanttodelete), Language.StringByID(MyInternationalizationString.confrim)); alert.Show(); alert.ConfirmClickEvent += () => { Common.Logic.CurrentLogic.Actions.Remove(actions); actiondevice.selecetdFrameLayout.RemoveFromParent(); // devicesFrameLayout.RemoveFromParent(); //var logicCommunalPage = new LogicCommunalPage(); //UserView.HomePage.Instance.AddChidren(logicCommunalPage); //UserView.HomePage.Instance.PageIndex += 1; //logicCommunalPage.Show(() => { }); }; }; } } #endregion #region -----每天 设置周期----- var fraline1 = new FrameLayout { Height = Application.GetRealHeight(30), }; middle.AddChidren(fraline1); Addview weekview = new 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 saveBtn.clickviewBtn.MouseUpEventHandler +=(sender, e) => { var name = logicTextBox.Text.Trim(); Method.SaveLogic(IfString._Logic,name, 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 logicCommunalPage = new LogicCommunalPage(); UserView.HomePage.Instance.AddChidren(logicCommunalPage); UserView.HomePage.Instance.PageIndex += 1; logicCommunalPage.Show(() => { }); } else { var addLogicPage = new AddLogicPage(); UserView.HomePage.Instance.AddChidren(addLogicPage); UserView.HomePage.Instance.PageIndex += 1; addLogicPage.Show(); } }; } } }