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