From b7b3e92bed9c4553e30e2901a1877f088a5f8823 Mon Sep 17 00:00:00 2001 From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local> Date: 星期一, 04 十一月 2019 17:20:52 +0800 Subject: [PATCH] 2019.11.4 --- ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs | 190 +++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 181 insertions(+), 9 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs index e28ed1a..1d924ec 100644 --- a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs +++ b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using Shared.Common; using Shared.Phone.Device.CommonForm; +using Shared.Phone.UserCenter; using Shared.Phone.UserView; namespace Shared.Phone.Device.Room @@ -119,7 +120,7 @@ var nameRow = new DeviceInfoEditRow(170); nameRow.Init(); nameRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.RoomName)} :"); - nameRow.SetPlaceHoldText(room.Name); + nameRow.SetTitle(room.Name); infoFL.AddChidren(nameRow); var floorRow = new DeviceInfoRow(308); @@ -127,7 +128,7 @@ floorRow.SetTipTitle($"{Language.StringByID(R.MyInternationalizationString.BelongFloor)} :"); floorRow.SetTitle(room.FloorName); infoFL.AddChidren(floorRow); - floorRow.NextBtn.MouseUpEventHandler += (sender, e) => + floorRow.ClickBtn.MouseUpEventHandler += (sender, e) => { if (Config.Instance.Home.FloorDics != null) { @@ -147,25 +148,118 @@ } }; + var temperatureRow = new DeviceInfoRow(446); temperatureRow.Init(); temperatureRow.SetTipTitle(R.MyInternationalizationString.Temperature); temperatureRow.SetTitle("26.8鈩�"); temperatureRow.NameText.TextAlignment = TextAlignment.CenterRight; infoFL.AddChidren(temperatureRow); - temperatureRow.NextBtn.MouseUpEventHandler += (sender, e) => + temperatureRow.ClickBtn.MouseUpEventHandler += (sender, e) => { var tem = new RoomTemperatureSetting { }; HomePage.Instance.AddChidren(tem); HomePage.Instance.PageIndex += 1; + tem.tempDevice = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice); tem.Show(room); - tem.action = (selectTemp) => + tem.selectDeviceAction = (selectTemp) => { + if(selectTemp==null) + { + return; + } + room.TemperatrueDevice =$"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}"; + + HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlDeviceAttributeLogic.Current.AddAttributeEvent("TemperatrueDevice", "DeviceStatusReport", (Action<ZigBee.Device.CommonDevice>)((report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (room.TemperatrueDevice != mainKeys) + { + return; + } + //绉婚櫎鎺変簨浠� + HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice"); + foreach (var data in report.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + //0鈩� + temperatureRow.NameText.Text = "0.0鈩�"; + } + else if (data.AttriButeData > 32767) + { + //璐熸暟(鐗规畩澶勭悊) + string strValue = (data.AttriButeData - 65536).ToString(); + //灏忔暟鐐归渶瑕佷竴浣� + strValue = strValue.Substring(0, strValue.Length - 1); + temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣� + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; + } + } + } + })); + //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护 + (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); }; - }; + if (string.IsNullOrEmpty(room.TemperatrueDevice) == false) + { + HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlDeviceAttributeLogic.Current.AddAttributeEvent("TemperatrueDevice", "DeviceStatusReport", (Action<ZigBee.Device.CommonDevice>)((report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (room.TemperatrueDevice != mainKeys) + { + return; + } + //绉婚櫎鎺変簨浠� + HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice"); + + foreach (var data in report.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + //0鈩� + temperatureRow.NameText.Text = "0.0鈩�"; + } + else if (data.AttriButeData > 32767) + { + //璐熸暟(鐗规畩澶勭悊) + string strValue = (data.AttriButeData - 65536).ToString(); + //灏忔暟鐐归渶瑕佷竴浣� + strValue = strValue.Substring(0, strValue.Length - 1); + temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣� + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + temperatureRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; + } + } + } + })); + //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护 + var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice); + if (dev != null) + { + (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); + } + } var humidityRow = new DeviceInfoRow(585); humidityRow.Init(); @@ -173,17 +267,91 @@ humidityRow.SetTitle("66.5%"); humidityRow.NameText.TextAlignment = TextAlignment.CenterRight; infoFL.AddChidren(humidityRow); - humidityRow.NextBtn.MouseUpEventHandler += (sender, e) => + humidityRow.ClickBtn.MouseUpEventHandler += (sender, e) => { var tem = new RoomHumiditySetting { }; HomePage.Instance.AddChidren(tem); HomePage.Instance.PageIndex += 1; tem.Show(room); - tem.action = (selectTemp) => + tem.selectDeviceAction = (selectTemp) => { + if (selectTemp == null) + { + return; + } + room.HumidityDevice = $"{selectTemp.DeviceAddr}{selectTemp.DeviceEpoint}"; + HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice"); + HdlDeviceAttributeLogic.Current.AddAttributeEvent("HumidityDevice", "DeviceStatusReport", (report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (room.HumidityDevice != mainKeys) + { + return; + } + //绉婚櫎鎺変簨浠� + HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice"); + foreach (var data in report.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + //0 + humidityRow.NameText.Text = "0.0%"; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; + } + } + } + }); + //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护 + (selectTemp as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); }; }; + if (string.IsNullOrEmpty(room.HumidityDevice) == false) + { + HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice"); + HdlDeviceAttributeLogic.Current.AddAttributeEvent("HumidityDevice", "DeviceStatusReport", (report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (room.HumidityDevice != mainKeys) + { + return; + } + //绉婚櫎鎺変簨浠� + HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice"); + foreach (var data in report.DeviceStatusReport.AttriBute) + { + if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + if (data.AttriButeData == 0) + { + //0 + humidityRow.NameText.Text = "0.0%"; + } + else + { + //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) + string strValue = data.AttriButeData.ToString(); + strValue = strValue.Substring(0, strValue.Length - 1); + humidityRow.NameText.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; + } + } + } + }); + //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护 + var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice); + if (dev != null) + { + (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); + } + } var shareRow = new DeviceInfoRow(723); shareRow.Init(); @@ -201,14 +369,18 @@ { }; - }; var confirm = new Device.CommonForm.CompleteButton(1700, 700, 127); confirm.SetTitle(R.MyInternationalizationString.Confrim); AddChidren(confirm); - + confirm.MouseUpEventHandler += (sender, e) => + { + room.Name = nameRow.NameText.Text.Trim(); + room.Save(); + RemoveFromParent(); + }; } #endregion -- Gitblit v1.8.0