From c7698e163e43cea9e7f8ee45f8e3f91c9265cca4 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期一, 04 十一月 2019 19:11:41 +0800
Subject: [PATCH] 合并了全部的代码

---
 ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs |  198 +++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 189 insertions(+), 9 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs b/ZigbeeApp/Shared/Phone/Device/Room/EditRoom.cs
index e28ed1a..4ff8617 100755
--- 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
@@ -42,6 +43,14 @@
 
             AddBodyView();
 
+        }
+
+        public override void RemoveFromParent()
+        {
+            HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
+            HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
+
+            base.RemoveFromParent();
         }
 
         #region Add____________________________________
@@ -119,7 +128,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 +136,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 +156,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 +275,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 +377,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