From d5b9ff8bf8cc36f5b13c46b66682f5988d3a6f36 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 15 五月 2020 11:36:11 +0800 Subject: [PATCH] 2020-05-15-1 --- ZigbeeApp/Shared/Phone/Device/Logic/Method.cs | 188 ++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 153 insertions(+), 35 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs index 16cbc62..e4fff88 100644 --- a/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs +++ b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs @@ -83,6 +83,16 @@ { //杩囨护鎺変笉鏀寔鐨勮澶� continue; + } + if (device.Type == DeviceType.DoorLock) + { + var myInfo = LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device }); + if (myInfo.ConcreteType == DeviceConcreteType.IntelligentLocks_Sone) + { + //鏆傛椂涓嶆敮鎸丼-one闂ㄩ攣; + //杩囨护鎺変笉鏀寔S-one闂ㄩ攣璁惧; + continue; + } } deviceUIlist.Add(device); } @@ -97,40 +107,47 @@ { List<string> devicetypelist = new List<string>(); devicetypelist.Clear(); + var lightjosn = devicelist.Find((device) => device.Type == DeviceType.DimmableLight || device.Type == DeviceType.OnOffOutput); if (lightjosn != null) { devicetypelist.Add(Language.StringByID(MyInternationalizationString.Lights)); } - var iASZonejosn = devicelist.Find((device) => device.Type == DeviceType.IASZone || device.Type == DeviceType.TemperatureSensor); - if (iASZonejosn != null) - { - devicetypelist.Add(Language.StringByID(MyInternationalizationString.sensor)); - } - var onOffSwitchjson = devicelist.Find((device) => device.Type == DeviceType.OnOffSwitch); - if (onOffSwitchjson != null) - { - devicetypelist.Add(Language.StringByID(MyInternationalizationString.OnOffSwitch)); - } - var doorLock = devicelist.Find((device) => device.Type == DeviceType.DoorLock); - if (doorLock != null) - { - devicetypelist.Add(Language.StringByID(MyInternationalizationString.doorLock)); - } + var curtainjosn = devicelist.Find((device) => device.Type == DeviceType.WindowCoveringDevice); if (curtainjosn != null) { devicetypelist.Add(Language.StringByID(MyInternationalizationString.Curtains)); } + var ac = devicelist.Find((device) => device.Type == DeviceType.Thermostat); if (ac != null) { devicetypelist.Add(Language.StringByID(MyInternationalizationString.AC)); } + + var onOffSwitchjson = devicelist.Find((device) => device.Type == DeviceType.OnOffSwitch); + if (onOffSwitchjson != null) + { + devicetypelist.Add(Language.StringByID(MyInternationalizationString.OnOffSwitch)); + } + + var doorLock = devicelist.Find((device) => device.Type == DeviceType.DoorLock); + if (doorLock != null) + { + devicetypelist.Add(Language.StringByID(MyInternationalizationString.doorLock)); + } + var airSwitch = devicelist.Find((device) => device.Type == DeviceType.AirSwitch); if (airSwitch != null) { devicetypelist.Add(Language.StringByID(MyInternationalizationString.Airswitch)); + } + + var iASZonejosn = devicelist.Find((device) => device.Type == DeviceType.IASZone || device.Type == DeviceType.TemperatureSensor); + if (iASZonejosn != null) + { + devicetypelist.Add(Language.StringByID(MyInternationalizationString.sensor)); } return devicetypelist; @@ -334,7 +351,7 @@ deviceTypeList.Add(DeviceType.Thermostat); deviceTypeList.Add(DeviceType.AirSwitch); ///闂ㄩ攣鐗规畩 - deviceTypeList.Add(DeviceType.DoorLock); + // deviceTypeList.Add(DeviceType.DoorLock); } break; case "condition_mould": @@ -356,7 +373,7 @@ deviceTypeList.Add(DeviceType.Thermostat); deviceTypeList.Add(DeviceType.AirSwitch); ///闂ㄩ攣鐗规畩 - deviceTypeList.Add(DeviceType.DoorLock); + // deviceTypeList.Add(DeviceType.DoorLock); } break; @@ -685,7 +702,11 @@ Common.Logic.CurrentLogic.LogicIsCustomPushText = 0; pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; } - Send.Zj(LogicView.IfString.Tag, Common.Logic.CurrentLogic); + if (!Config.Instance.Home.IsVirtually) + { + Send.Zj(LogicView.IfString.Tag, Common.Logic.CurrentLogic); + + } }; if (Common.Logic.CurrentLogic.LogicIsCustomPushText == 0) @@ -712,6 +733,16 @@ /// <param name="CurrentLogic">褰撳墠閫昏緫</param> public async static void SaveLogic(string if_logic, string name, bool tag, Common.Logic CurrentLogic) { + + if (CurrentLogic.Conditions.Count == 0 || CurrentLogic.Actions.Count == 0) + { + var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, + Language.StringByID(MyInternationalizationString.addnull), + Language.StringByID(MyInternationalizationString.confrim)); + alert.Show(); + return; + } + if (string.IsNullOrEmpty(name)) { var alert = new UserCenter.ShowMsgControl(UserCenter.ShowMsgType.Normal, @@ -732,28 +763,94 @@ bool succeed = false; //鍒ゆ柇鏄柊娣诲姞閫昏緫(榛樿0)杩樻槸淇敼閫昏緫 CommonPage.Loading.Start(); - if (CurrentLogic.LogicId == 0) + + if (Config.Instance.Home.IsVirtually) { - //鍙戦�佹坊鍔犻�昏緫鍛戒护 - var logicifon = await Send.AddModifyLogic(CurrentLogic); - if (logicifon != null && logicifon.LogicId != 0) + if (Common.Logic.LogicList.Count == 0) { - succeed = true; - CurrentLogic.LogicId = logicifon.LogicId; + CurrentLogic.LogicId = 1; Common.Logic.LogicList.Add(CurrentLogic); - if (tag) - { - Send.Zj(tag, CurrentLogic); - } } + + if (CurrentLogic.LogicId == 0) + { + bool d = false; + for (int i = 1; i < 50; i++) + { + + for (int j = 0; j < Common.Logic.LogicList.Count; j++) + { + if (i != Common.Logic.LogicList[j].LogicId) + { + CurrentLogic.LogicId = i; + Common.Logic.LogicList.Add(CurrentLogic); + d = true; + break; + } + } + if (d) + { + break; + } + } + + } + else + { + for (int j = 0; j < Common.Logic.LogicList.Count; j++) + { + if (CurrentLogic.LogicId == Common.Logic.LogicList[j].LogicId) + { + Common.Logic.LogicList.RemoveAt(j); + Common.Logic.LogicList.Insert(j,CurrentLogic); + break; + } + } + + } + + //鑷姩鍖栭�昏緫鍒楄〃 } else { - //鍙戦�佷慨鏀归�昏緫鍛戒护锛� - //淇敼鍛戒护涓嶉渶瑕佺瓑寰呭洖澶嶏紱 - Send.AddModifyLogic(CurrentLogic); - //缂栬緫榛樿鎴愬姛锛堜笉鑰冭檻缃戠粶鎯呭喌锛夛紱 - succeed = true; + if (CurrentLogic.LogicId == 0) + { + //鍙戦�佹坊鍔犻�昏緫鍛戒护 + var logicifon = await Send.AddModifyLogic(CurrentLogic); + if (logicifon != null && logicifon.LogicId != 0) + { + succeed = true; + CurrentLogic.LogicId = logicifon.LogicId; + if (LogicView.IfString._Logic == if_logic || LogicView.IfString._SoneLogic == if_logic) + { + //鑷姩鍖栭�昏緫鍒楄〃 + Common.Logic.LogicList.Add(CurrentLogic); + } + if (LogicView.IfString._LockLogic == if_logic) + { + //闂ㄩ攣鑱斿姩浜嬩欢閫昏緫鍒楄〃 + Common.Logic.LockLogicList.Add(CurrentLogic); + } + if (LogicView.IfString._SoneLogic == if_logic) + { + //Sone闂ㄩ攣鑱斿姩浜嬩欢閫昏緫鍒楄〃 + Common.Logic.SoneLogicList.Add(CurrentLogic); + + } + if (tag) + { + Send.Zj(tag, CurrentLogic); + } + } + } + else + { + //鍙戦�佷慨鏀归�昏緫鍛戒护锛� + //淇敼鍛戒护涓嶉渶瑕佺瓑寰呭洖澶嶏紱 + Send.AddModifyLogic(CurrentLogic); + //缂栬緫榛樿鎴愬姛锛堜笉鑰冭檻缃戠粶鎯呭喌锛夛紱 + succeed = true; + } } CommonPage.Loading.Hide(); @@ -765,17 +862,33 @@ //TipView("娣诲姞鑷姩鍖栧け璐�"); //return; } - UserView.HomePage.Instance.RemoveViewByTag("Logic"); + + UserView.HomePage.Instance.RemoveViewByTag("Logic");//绉婚櫎鎵�鏈夋爣璁癓ogic鐣岄潰 if (LogicView.IfString._Logic == if_logic) { - Category.Category.instance?.RefreshBodyView(); + //鍙埛鏂板垎绫�-鑷姩鍖栦笂涓嬫粦鍔╲iew锛� + Phone.Category.CategoryMainForm.instance?.RefreshBodyView(); + // Category.Category.instance?.RefreshBodyView(); } else if (LogicView.IfString._LockLogic == if_logic) { + //璺冲埌闂ㄩ攣鑱斿姩浜嬩欢鍒楄〃鐣岄潰 + UserView.HomePage.Instance.RemoveViewByTag("LockListView");//绉婚櫎鎵�鏈夋爣璁癓ockListView鐣岄潰 var doorLockLogicList = new DoorLockLogic.LockLogicList(); UserView.HomePage.Instance.AddChidren(doorLockLogicList); UserView.HomePage.Instance.PageIndex += 1; doorLockLogicList.Show(); + } + else if (LogicView.IfString._SoneLogic == if_logic) + { + //璺冲埌Sone闂ㄩ攣鑱斿姩浜嬩欢鍒楄〃鐣岄潰 + //UserView.HomePage.Instance.RemoveViewByTag("SoneLogic");//绉婚櫎鎵�鏈夋爣璁癓ockListView鐣岄潰 + //var soneLogicList = new SoneLogicList(); + //UserView.HomePage.Instance.AddChidren(soneLogicList); + //UserView.HomePage.Instance.PageIndex += 1; + //soneLogicList.Show(); + + SoneLogicList.soneLogicList?.RefreshView(); } } @@ -791,5 +904,10 @@ UserView.HomePage.Instance.PageIndex += 1; deviceTarget.Show(str1, str2); } + + /// <summary> + /// 鐣岄潰楂樺害 + /// </summary> + public static int H = 1922; } } -- Gitblit v1.8.0