From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001 From: xm <1271024303@qq.com> Date: 星期二, 21 七月 2020 09:46:53 +0800 Subject: [PATCH] 请合并最新多功能面板代码 --- ZigbeeApp/Shared/Phone/Device/Logic/Method.cs | 922 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 922 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs new file mode 100755 index 0000000..6fba6f9 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/Device/Logic/Method.cs @@ -0,0 +1,922 @@ +锘縰sing System; +using System.Collections.Generic; +using Newtonsoft.Json.Linq; +using ZigBee.Device; +using ZigBee.Common; +using Shared.Common; +using System.Collections.Specialized; +using System.Net; +using System.IO; +using Shared.R; + +namespace Shared.Phone.Device.Logic +{ + public class Method + { + + // <summary> + /// 閫氳繃璁惧鎵惧埌鍖哄煙(鎴块棿)鍚嶇О + /// </summary> + /// <param name="button">Btnregionname.</param> + /// <param name="device">Device.</param> + public static void RoomNmae(Button button, CommonDevice device) + { + button.Text = UserCenter.HdlRoomLogic.Current.GetRoomNameByDevice(device); + } + /// <summary> + /// 杩斿洖妤煎眰鎵�鏈夌殑鎴块棿鐨勫垪琛� + /// </summary> + /// <param name="type">鍒ゆ柇瀛楃涓�</param> + /// <param name="floorId">妤煎眰ID</param> + /// <returns></returns> + public static List<Common.Room> GetRoomList(string type, string floorId = null) + { + var list = new List<Common.Room>(); + var listAllRoom = UserCenter.HdlRoomLogic.Current.GetAllListRooms(); + for (int i = 0; i < listAllRoom.Count; i++) + { + if (type == "action_logicscene" || type == "action_lockscene") + { + if (listAllRoom[i].ListSceneId.Count == 0) + { ///杩囨护鎺夋病鏈夊満鏅殑鎴块棿 + continue; + } + } + else + { + ///鍖哄垎鍑鸿緭鍏ユ潯浠跺拰杈撳嚭鐩爣璁惧 + var listdevicetype = GetDevice(type); + var listdevice = GetDeviceUIList(listAllRoom[i], listdevicetype); + if (listdevice.Count == 0) + { + ///杩囨护鎺夋病鏈夎澶囩殑鎴块棿 + continue; + } + } + list.Add(listAllRoom[i]); + } + if (string.IsNullOrEmpty(floorId)) + { + //娌℃湁妤煎眰鐩存帴杩斿洖鎵�鏈夌殑鎴块棿; + return list; + } + //鏌愭ゼ灞傛墍鏈夌殑鎴块棿; + return list.FindAll((obj) => obj.FloorId == floorId); + } + /// <summary> + /// 鑾峰彇鎴块棿鐨勮澶囧垪琛� + /// </summary> + /// <param name="room">褰撳墠鎴块棿</param> + /// <param name="deviceTypelist">璁惧绫诲瀷</param> + /// <returns></returns> + public static List<CommonDevice> GetDeviceUIList(Common.Room room, List<DeviceType> deviceTypelist) + { + var deviceUIlist = new List<CommonDevice>(); + foreach (var deviceKey in room.ListDevice) + { + var device = LocalDevice.Current.GetDevice(deviceKey); + if (device == null) + { + continue; + } + if (!deviceTypelist.Contains(device.Type)) + { + //杩囨护鎺変笉鏀寔鐨勮澶� + 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); + } + return deviceUIlist; + } + /// <summary> + /// 鎺掑垪鎵�鏈夎澶囩被鍨嬬殑鍒楄〃 + /// </summary> + /// <param name="devicelist">璁惧鍒楄〃</param> + /// <returns></returns> + public static List<string> GetDeviceTypeList(List<CommonDevice> devicelist) + { + List<string> devicetypelist = new List<string>(); + devicetypelist.Clear(); + + var lightjosn = devicelist.Find((device) => device.Type == DeviceType.DimmableLight || device.Type == DeviceType.OnOffOutput || device.Type == DeviceType.ColorTemperatureLight); + if (lightjosn != null) + { + devicetypelist.Add(Language.StringByID(MyInternationalizationString.Lights)); + } + + 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; + + } + /// <summary> + /// 鏌愪釜璁惧绫诲瀷鐨勫垪琛� + /// </summary> + /// <param name="devicetype">鍒ゆ柇瀛楃涓�</param> + /// <returns></returns> + public static List<DeviceType> GetDeviceType(string devicetype) + { + List<DeviceType> DeviceTypeList = new List<DeviceType>(); + DeviceTypeList.Clear(); + if (devicetype == Language.StringByID(MyInternationalizationString.Lights)) + { + DeviceTypeList.Add(DeviceType.OnOffOutput);//0x0101鍗佽繘鍒�257 + DeviceTypeList.Add(DeviceType.DimmableLight); + DeviceTypeList.Add(DeviceType.ColorTemperatureLight); + } + else if (devicetype == Language.StringByID(MyInternationalizationString.Curtains)) + { + DeviceTypeList.Add(DeviceType.WindowCoveringDevice); + } + else if (devicetype == Language.StringByID(MyInternationalizationString.OnOffSwitch)) + { + DeviceTypeList.Add(DeviceType.OnOffSwitch); + } + else if (devicetype == Language.StringByID(MyInternationalizationString.sensor)) + { + DeviceTypeList.Add(DeviceType.IASZone); + DeviceTypeList.Add(DeviceType.TemperatureSensor); + } + else if (devicetype == Language.StringByID(MyInternationalizationString.doorLock)) + { + DeviceTypeList.Add(DeviceType.DoorLock); + } + else if (devicetype == Language.StringByID(MyInternationalizationString.Curtains)) + { + DeviceTypeList.Add(DeviceType.WindowCoveringDevice); + } + else if (devicetype == Language.StringByID(MyInternationalizationString.AC)) + { + DeviceTypeList.Add(DeviceType.Thermostat); + } + else if (devicetype == Language.StringByID(MyInternationalizationString.Airswitch)) + { + DeviceTypeList.Add(DeviceType.AirSwitch); + } + return DeviceTypeList; + } + /// <summary> + /// 鏄剧ず鏌愪釜绫诲瀷璁惧鐨勫浘鏍� + /// </summary> + /// <param name="devicetype">鍒ゆ柇瀛楃涓�</param> + /// <returns></returns> + public static string GetDeviceTypeIcon(string devicetype) + { + string patm = ""; + if (devicetype == Language.StringByID(MyInternationalizationString.OnOffSwitch)) + { + patm = "ZigeeLogic/selectedpanel.png"; + } + else if (devicetype == Language.StringByID(MyInternationalizationString.sensor)) + { + patm = "ZigeeLogic/selectedsenor.png"; + } + else if (devicetype == Language.StringByID(MyInternationalizationString.doorLock)) + { + patm = "ZigeeLogic/selecteddoorlock.png"; + } + else if (devicetype == Language.StringByID(MyInternationalizationString.Lights)) + { + patm = "ZigeeLogic/selectedlight.png"; + } + else if (devicetype == Language.StringByID(MyInternationalizationString.Curtains)) + { + patm = "ZigeeLogic/selectedcurtain.png"; + } + else if (devicetype == Language.StringByID(MyInternationalizationString.AC)) + { + patm = "ZigeeLogic/selectedac.png"; + } + else if (devicetype == Language.StringByID(MyInternationalizationString.Airswitch)) + { + patm = "ZigeeLogic/selectedairswitch.png"; + } + return patm; + } + /// <summary> + /// 鏄剧ず璁惧鐨勫浘鏍� + /// </summary> + /// <param name="device">璁惧瀵硅薄</param> + /// <param name="button">鏄剧ず鍥炬爣鐨勬帶浠�</param> + public static void GetDeviceIcon(CommonDevice device, Button button) + { + string patm = ""; + string selectedpatm = ""; + switch (device.Type) + { + case DeviceType.OnOffOutput: + { + patm = "ZigeeLogic/light.png"; + selectedpatm = "ZigeeLogic/selectedlight.png"; + } + break; + case DeviceType.IASZone: + { + var iASZonedevice = device as IASZone; + if (iASZonedevice.DeviceID != 1026) + { + break; + } + patm = $"ZigeeLogic/sensor{iASZonedevice.IasDeviceType}.png"; + selectedpatm = $"ZigeeLogic/selectedsensor{iASZonedevice.IasDeviceType}.png"; + } + break; + case DeviceType.TemperatureSensor: + { + var temperatureSensor = device as TemperatureSensor; + if (temperatureSensor.SensorDiv == 1) + { + patm = $"ZigeeLogic/temperature.png"; + selectedpatm = $"ZigeeLogic/selectedtemperature.png"; + } + else + { + patm = "ZigeeLogic/humidity.png"; + selectedpatm = "ZigeeLogic/selectedhumidity.png"; + } + } + break; + case DeviceType.OnOffSwitch: + { + patm = "ZigeeLogic/panel.png"; + selectedpatm = "ZigeeLogic/selectedpanel.png"; + } + break; + case DeviceType.DoorLock: + { + patm = "ZigeeLogic/doorlock.png"; + selectedpatm = "ZigeeLogic/selecteddoorlock.png"; + } + break; + case DeviceType.DimmableLight: + { + + patm = "ZigeeLogic/dimmableLight.png"; + selectedpatm = "ZigeeLogic/selecteddimmableLight.png"; + } + break; + case DeviceType.WindowCoveringDevice: + { + patm = "ZigeeLogic/curtain.png"; + selectedpatm = "ZigeeLogic/selectedcurtain.png"; + } + break; + case DeviceType.Thermostat: + { + patm = "ZigeeLogic/ac.png"; + selectedpatm = "ZigeeLogic/selectedac.png"; + } + break; + case DeviceType.AirSwitch: + { + patm = "ZigeeLogic/airswitch.png"; + selectedpatm = "ZigeeLogic/selectedairswitch.png"; + } + break; + case DeviceType.ColorTemperatureLight: + { + patm = "ZigeeLogic/nightLight.png"; + selectedpatm = "ZigeeLogic/nightLightSelected.png"; + } + break; + } + button.UnSelectedImagePath = patm; + button.SelectedImagePath = selectedpatm; + } + /// <summary> + /// 鏀寔鐨勮澶� + /// </summary> + /// <param name="type">鍒ゆ柇瀛楃涓�</param> + /// <returns></returns> + public static List<DeviceType> GetDevice(string type) + { + /// 璁惧绫诲瀷鍒楄〃 + List<DeviceType> deviceTypeList = new List<DeviceType>(); + deviceTypeList.Clear(); + switch (type) + { + case "condition_logic": + {//鑷姩鍖栨敮鎸佺殑鏉′欢璁惧 + deviceTypeList.Add(DeviceType.IASZone); + deviceTypeList.Add(DeviceType.OnOffSwitch); + deviceTypeList.Add(DeviceType.OnOffOutput); + deviceTypeList.Add(DeviceType.DoorLock); + deviceTypeList.Add(DeviceType.TemperatureSensor); + } + break; + case "action_logic": + { + + //鑷姩鍖栨敮鎸佺殑鐩爣璁惧 + deviceTypeList.Add(DeviceType.OnOffOutput); + deviceTypeList.Add(DeviceType.DimmableLight); + deviceTypeList.Add(DeviceType.WindowCoveringDevice); + deviceTypeList.Add(DeviceType.Thermostat); + deviceTypeList.Add(DeviceType.AirSwitch); + deviceTypeList.Add(DeviceType.ColorTemperatureLight); + ///闂ㄩ攣鐗规畩 + // deviceTypeList.Add(DeviceType.DoorLock); + } + break; + case "condition_mould": + { + //鑷姩鍖栨ā鏉挎敮鎸佺殑鏉′欢璁惧 + deviceTypeList.Add(DeviceType.IASZone); + } + break; + case "action_mould": + { //鑷姩鍖栨ā鏉挎敮鎸佺殑鐩爣璁惧 + deviceTypeList.Add(DeviceType.OnOffOutput); + } + break; + case "action_lockaction": + {//闂ㄩ攣鑱斿姩浜嬩欢鏀寔鐨勭洰鏍囪澶� + deviceTypeList.Add(DeviceType.OnOffOutput); + deviceTypeList.Add(DeviceType.DimmableLight); + deviceTypeList.Add(DeviceType.WindowCoveringDevice); + deviceTypeList.Add(DeviceType.Thermostat); + deviceTypeList.Add(DeviceType.AirSwitch); + deviceTypeList.Add(DeviceType.ColorTemperatureLight); + ///闂ㄩ攣鐗规畩 + // deviceTypeList.Add(DeviceType.DoorLock); + } + break; + + } + return deviceTypeList; + } + + /// <summary> + /// 鏇存柊鎵ц鍛ㄦ湡鐨勬柟娉� + /// </summary> + /// <param name="button">鏄剧ず鍛ㄦ湡鏂囨湰</param> + /// <param name="currentLogic">褰撳墠閫昏緫瀵硅薄</param> + public static void UpdateWeek(Button button, Common.Logic currentLogic) + { + + switch (currentLogic.TimeAttribute.Repeat) + { + ///0:鍙墽琛屼竴娆★紝鎵ц鍚嶪sEnable鍊肩疆;1,浠婂勾鍐呮墽琛�;2锛氭瘡澶╂墽琛�;3锛氭瘡鏈堟墽琛�;4锛氭瘡骞存墽琛�;5锛氬懆閲嶅銆� + case 0: + { + button.Text = Language.StringByID(MyInternationalizationString.executeonce); + }; break; + case 1: { }; break; + case 2: + { + button.Text = Language.StringByID(MyInternationalizationString.everyday); + }; break; + case 3: + { + + string len = "", value = ""; + var stringvalue = Convert.ToString(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() + ","; + } + } + button.Text = Language.StringByID(MyInternationalizationString.monthly) + value.TrimEnd(',') + Language.StringByID(MyInternationalizationString.day); + + }; break; + case 4: + { + + Dictionary<int, int> dictionary = new Dictionary<int, int>(); + ///鎵惧嚭鎵ц鐨勬湀浠藉拰澶╂暟 + if (currentLogic.TimeAttribute.SelectMonDate.Count != 0) + { + for (int i = 0; i < currentLogic.TimeAttribute.SelectMonDate.Count; i++) + { + var dayvalue = 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) + { + button.Text = Language.StringByID(MyInternationalizationString.everyyear) + leng + "/" + (minvalue.ToString().Length < 2 ? "0" + minvalue.ToString() : minvalue.ToString()); + } + else + { + button.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++; + } + button.Text = Language.StringByID(MyInternationalizationString.everyyear) + stringtext; + } + + }; break; + case 5: + { + string len = "", text = ""; + List<int> listvalueInt = new List<int>(); + listvalueInt.Clear(); + var maxvalue = Convert.ToString(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(','); + //} + button.Text = Language.StringByID(MyInternationalizationString.week1) + text.Replace(Language.StringByID(MyInternationalizationString.week1), "").TrimEnd(','); + //btndisplaycycle.Text = text.TrimEnd(','); + }; break; + } + + + } + /// <summary> + ///杩斿洖璁惧鐨勬柟娉� + /// </summary> + /// <param name="DeviceAddr">璁惧Mac</param> + /// <param name="Epoint">璁惧绔彛</param> + /// <returns></returns> + public static ZigBee.Device.CommonDevice GetCommonDevice(string DeviceAddr, string Epoint) + { + + var device = Common.Logic.LogicDviceList.Find((obj) => { return ((obj.DeviceAddr == DeviceAddr) && (obj.DeviceEpoint.ToString() == Epoint)); }); + if (device == null) + { + device = new ZigBee.Device.CommonDevice(); + } + return device; + } + /// <summary> + /// 鎺ㄩ�佽缃殑鏂规硶 + /// </summary> + /// <param name="middle"></param> + public static void Push(VerticalScrolViewLayout middle) + { + LogicView.Addview pushview = new LogicView.Addview(); + pushview.switchBtn.Visible = true; + pushview.titleBtn.TextID = MyInternationalizationString.pushswitch; + middle.AddChidren(pushview.AddDeviceView()); + + LogicView.Addview custompushview = new LogicView.Addview(); + custompushview.iconBtn.Visible = true; + custompushview.iconBtn.UnSelectedImagePath = "ZigeeLogic/next.png"; + custompushview.titleBtn.TextID = MyInternationalizationString.custompush; + custompushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; + middle.AddChidren(custompushview.AddDeviceView()); + + EventHandler<MouseEventArgs> customclick = (sender, e) => + { + var CustomText = new CustomText(); + UserView.HomePage.Instance.AddChidren(CustomText); + UserView.HomePage.Instance.PageIndex += 1; + CustomText.Show(); + }; + custompushview.frameLayout.MouseUpEventHandler += customclick; + custompushview.clickBtn.MouseUpEventHandler += customclick; + // bool tag = false;//鏍囪寮�鍏崇姸鎬�; + pushview.clickBtn.MouseUpEventHandler += (sender1, e1) => + { + pushview.switchBtn.IsSelected = !pushview.switchBtn.IsSelected; + if (pushview.switchBtn.IsSelected) + { + LogicView.IfString.Tag = true; + custompushview.frameLayout.Height = Application.GetRealHeight(160); + Common.Logic.CurrentLogic.LogicIsCustomPushText = 1; + pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor; + + } + else + { + LogicView.IfString.Tag = false; + custompushview.frameLayout.Height = Application.GetRealHeight(0); + Common.Logic.CurrentLogic.LogicIsCustomPushText = 0; + pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; + } + if (!Config.Instance.Home.IsVirtually) + { + Send.Zj(LogicView.IfString.Tag, Common.Logic.CurrentLogic); + + } + }; + + if (Common.Logic.CurrentLogic.LogicIsCustomPushText == 0) + { + LogicView.IfString.Tag = false; + pushview.switchBtn.IsSelected = false; + custompushview.frameLayout.Height = Application.GetRealHeight(0); + pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicBlankBackgroundColor; + } + else + { + LogicView.IfString.Tag = true; + pushview.switchBtn.IsSelected = true; + custompushview.frameLayout.Height = Application.GetRealHeight(160); + pushview.lineBtn.BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor; + } + } + /// <summary> + /// 淇濆瓨鑷姩鍖栫殑鏂规硶 + /// </summary> + /// <param name="if_logic">鍒ゆ柇璺宠浆鐣岄潰鐨勫瓧绗︿覆</param> + /// <param name="name">閫昏緫鍚嶇О</param> + /// <param name="tag"></param> + /// <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, + Language.StringByID(MyInternationalizationString.PleaseEnterLogicName), + Language.StringByID(MyInternationalizationString.confrim)); + alert.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; + //} + + CurrentLogic.LogicName = name; + bool succeed = false; + //鍒ゆ柇鏄柊娣诲姞閫昏緫(榛樿0)杩樻槸淇敼閫昏緫 + CommonPage.Loading.Start(); + + if (Config.Instance.Home.IsVirtually) + { + if (Common.Logic.LogicList.Count == 0) + { + CurrentLogic.LogicId = 1; + Common.Logic.LogicList.Add(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 + { + 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(); + + if (!succeed)//succeed鏍囪鏄坊鍔犳垚鍔熻繕鏄け璐� + { + //缃戝叧鍥炲澶辫触锛屼笉鍏抽棴鐣岄潰锛岃瀹冨仠鐣欏綋鍓嶇晫闈紱 + //锛堝師鍥狅細鑰冭檻鍒板け璐ラ噸鏂扮紪杈戝師鏉ユ暟鎹粰鐢ㄦ埛甯︽潵浜嗛夯鐑︼級 + ///鎻愮ず锛氭坊鍔犺嚜鍔ㄥ寲澶辫触锛� + //TipView("娣诲姞鑷姩鍖栧け璐�"); + //return; + } + + UserView.HomePage.Instance.RemoveViewByTag("Logic");//绉婚櫎鎵�鏈夋爣璁癓ogic鐣岄潰 + if (LogicView.IfString._Logic == if_logic) + { + //鍙埛鏂板垎绫�-鑷姩鍖栦笂涓嬫粦鍔╲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(); + } + + } + /// <summary> + /// 璺冲叆杈撳嚭鐩爣鍔熻兘鐣岄潰鐨勬柟娉� + /// </summary> + /// <param name="str1">璁惧鐣岄潰璇嗗埆瀛楃涓�</param> + /// <param name="str2">鍦烘櫙鐣岄潰璇嗗埆瀛楃涓�</param> + public static void View(string str1, string str2) + { + var deviceTarget = new DeviceTarget(); + UserView.HomePage.Instance.AddChidren(deviceTarget); + UserView.HomePage.Instance.PageIndex += 1; + deviceTarget.Show(str1, str2); + } + + /// <summary> + /// 鐣岄潰楂樺害 + /// </summary> + public static int H = 1922; + } +} -- Gitblit v1.8.0