From 21736b2944d5e88cd705a39ff87fd73d5a16e609 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期六, 09 五月 2020 11:06:35 +0800
Subject: [PATCH] 安川

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs |  292 ++++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 212 insertions(+), 80 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
index 427baf6..1d62a62 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
@@ -16,23 +16,25 @@
         /// 鏋勯�犲嚱鏁�
         /// </summary>
         /// <param name="device"></param>
-        /// <param name="deviceBindType">1:鏂伴;2:娓╁害浼犳劅鍣�;3:婀垮害浼犳劅鍣�</param>
-        public PanelFangyueFreshAirTargetsForm(CommonDevice device, int deviceBindType)
+        /// <param name="deviceBindType">1:鏂伴;2:娓╁害浼犳劅鍣�;3:婀垮害浼犳劅鍣�;4:PM2.5浼犳劅鍣�</param>
+        /// <param name="bindDev">缁戝畾鐩爣 </param>
+        public PanelFangyueFreshAirTargetsForm(CommonDevice device, CommonDevice bindDev, int deviceBindType)
         {
             this.curControlDev = device as FreshAir;
+            this.curBindDevice = bindDev;
             this.curDeviceBindType = deviceBindType;
         }
         #endregion
 
-        #region  鍙橀噺鐢虫槑
-        /// <summary>
-        /// 褰撳墠鎺у埗璁惧
-        /// </summary>
-        //CommonDevice currentControlDevice;
+        #region  鍙橀噺鐢虫槑 
         /// <summary>
         /// 褰撳墠鏂伴闈㈡澘銆愭帶鍒惰澶囥��
         /// </summary>
         FreshAir curControlDev;
+        /// <summary>
+        /// 褰撳墠琚粦璁惧
+        /// </summary>
+        CommonDevice curBindDevice;
         /// <summary>
         /// 鏄剧ず琚粦瀹氳澶囨垨鍦烘櫙鐨剉iew
         /// </summary>
@@ -318,6 +320,19 @@
                     curentOldRoom = btnRoom;
                     curentOldRoomFrameLayout = btnRoomFrameLayout;
                 }
+
+                //琚粦瀹氱殑鐩爣杩樻湭鍒嗛厤鍖哄煙锛岄粯璁ゆ槸绗竴涓�
+                if (string.IsNullOrEmpty(curControlDev.currentSelectRoomId))
+                {
+                    if (index == 0)
+                    {
+                        btnRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
+                        btnRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite;
+                        curentOldRoom = btnRoom;
+                        curentOldRoomFrameLayout = btnRoomFrameLayout;
+                    }
+                }
+
                 EventHandler<MouseEventArgs> eHandlerRoom = (sender, e) =>
                 {
                     if (!btnRoom.IsSelected)
@@ -450,6 +465,21 @@
                     line2.Visible = false;
                 }
 
+                switch (curDeviceBindType)
+                {
+                    case 1:
+                        devicePic.UnSelectedImagePath = "Device/FreshAirEpoint.png";
+                        break;
+                    case 2:
+                        devicePic.UnSelectedImagePath = "Device/SensorTemperature.png";
+                        break;
+                    case 3:
+                        devicePic.UnSelectedImagePath = "Device/SensorHumidity.png";
+                        break;
+                    case 4:
+                        devicePic.UnSelectedImagePath = "Device/FreshAirEpoint.png";
+                        break;
+                }
                 #endregion
 
                 string mianKey = device.DeviceAddr + device.DeviceEpoint;
@@ -608,7 +638,7 @@
                     btnFloorText.Text = dicFloorList[floorId];
 
                     //鑾峰彇妤煎眰涓埧闂村垪琛� 
-                    supportRoomList = GetFloorRoomList(curFloorId);
+                    supportRoomList = GetFloorRoomList();
                     if (!btnMethodText.IsSelected)
                     {
                         if (oldbutton != null)
@@ -665,11 +695,13 @@
                     {
                         CommonPage.Loading.Start("");
                     });
+                    //鑾峰彇琚粦鐩爣绛変俊鎭�
+                    BindDevInfo(curBindDevice);
 
                     //鑾峰彇妤煎眰
                     dicFloorList = HdlRoomLogic.Current.GetFloorSortList();
                     //鑾峰彇妤煎眰涓埧闂村垪琛�
-                    supportRoomList = GetFloorRoomList(curControlDev.currentSelectFloorId);
+                    supportRoomList = GetFloorRoomList();
 
                     //鑾峰彇鎵�鏈夋埧闂翠腑鍖归厤鐨勮兘缁戠殑鐩爣
                     currentPanelSupportBindDeviceList = GetAllRoomSupportDeviceList();
@@ -725,11 +757,24 @@
                                         case 2:
                                             if (device.Type == DeviceType.TemperatureSensor)
                                             {
-                                                targetList.Add(device);
-                                                oldTargetList.Add(device);
+                                                var bDev = device as TemperatureSensor;
+                                                if (bDev.SensorDiv == 1)
+                                                {
+                                                    targetList.Add(device);
+                                                    oldTargetList.Add(device);
+                                                }
                                             }
                                             break;
                                         case 3:
+                                            if (device.Type == DeviceType.TemperatureSensor)
+                                            {
+                                                var bDev = device as TemperatureSensor;
+                                                if (bDev.SensorDiv == 2)
+                                                {
+                                                    targetList.Add(device);
+                                                    oldTargetList.Add(device);
+                                                }
+                                            }
                                             if (device.Type == DeviceType.FreshAirHumiditySensor)
                                             {
                                                 targetList.Add(device);
@@ -759,6 +804,7 @@
                         if (targetList.Count == 0)
                         {
                             curControlDev.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId();
+                            curControlDev.currentSelectRoomId = null;
                             if (BindInfo.GetCurrentSelectFloorIdName() != null)
                             {
                                 Application.RunOnMainThread(() =>
@@ -966,31 +1012,32 @@
                         {
                             foreach (var bd in oldTargetList)
                             {
-                                var delDevice = new DelDeviceBindData();
-                                delDevice.DeviceAddr = curControlDev.DeviceAddr;
-                                delDevice.Epoint = curControlDev.DeviceEpoint;
-
-                                var removeDevice = new RemoveBindListObj();
-                                removeDevice.BindType = 0;
-                                switch (curDeviceBindType)
+                                var delDevice = DelBindDevice(bd);
+                                var delResult = new DelDeviceBindResponseAllData();
+                                delResult = await curControlDev.DelDeviceBindAsync(delDevice);
+                                if (delResult != null && delResult.removeBindResultResponseData != null)
                                 {
-                                    case 1:
-                                        removeDevice.BindCluster = 514;
-                                        break;
-                                    case 2:
-                                        removeDevice.BindCluster = 1026;
-                                        break;
-                                    case 3:
-                                        removeDevice.BindCluster = 1029;
-                                        break;
-                                    case 4:
-                                        //PM2.5
-                                        break;
+                                    if (delResult.removeBindResultResponseData.Result != 0)
+                                    {
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindFailed), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
+                                            btnFinifh.Enable = true;
+                                            btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                            CommonPage.Loading.Hide();
+                                        });
+                                        return;
+                                    }
                                 }
-                                removeDevice.BindMacAddr = bd.DeviceAddr;
-                                removeDevice.BindEpoint = bd.DeviceEpoint;
-                                delDevice.RemoveBindList.Add(removeDevice);
-
+                            }
+                        }
+                        else
+                        {
+                            //妫�娴嬪凡缁忕粦瀹氱殑鐩爣鏄惁涓嶅湪鏈湴鎴栬�呮病鏈夊垎閰嶅埌浠讳綍鎴块棿涓�
+                            //姝ゆ椂闇�瑕佸垹闄ゅ凡缁忚缁戝畾鍒扮洰鏍囷紝鎵嶈兘缁х画缁戝畾鏂扮洰鏍�
+                            if (curBindDevice != null)
+                            {
+                                var delDevice = DelBindDevice(curBindDevice);
                                 var delResult = new DelDeviceBindResponseAllData();
                                 delResult = await curControlDev.DelDeviceBindAsync(delDevice);
                                 if (delResult != null && delResult.removeBindResultResponseData != null)
@@ -1141,6 +1188,31 @@
         }
 
         /// <summary>
+        /// 褰撳墠琚粦瀹氳澶囨墍灞炴ゼ灞傚拰鎴块棿
+        /// </summary>
+        /// <param name="bindDev"></param>
+        void BindDevInfo(CommonDevice bindDev)
+        {
+            if (bindDev == null)
+            {
+                return;
+            }
+            //鑾峰彇鏈湴璁惧鍒楄〃 
+            var localDeviceList = Shared.Common.LocalDevice.Current.listAllDevice;
+            var tempDev = localDeviceList.Find(obj => obj.DeviceAddr == bindDev.DeviceAddr && obj.DeviceEpoint == bindDev.DeviceEpoint);
+            if (tempDev != null)
+            {
+                //鑾峰彇璁惧鎵�灞炴埧闂�
+                var tempDevRoom = HdlRoomLogic.Current.GetRoomByDevice(tempDev);
+                if (tempDevRoom != null)
+                {
+                    curControlDev.currentSelectRoomId = tempDevRoom.Id;
+                    curControlDev.currentSelectFloorId = tempDevRoom.FloorId;
+                }
+            }
+        }
+
+        /// <summary>
         /// 妫�娴嬬洰鏍囨槸鍚﹁缁戝畾杩�
         /// </summary>
         /// <returns></returns>
@@ -1161,6 +1233,39 @@
                 }
             }
             return exist;
+        }
+
+        /// <summary>
+        /// 妫�娴嬪凡缁忕粦瀹氱殑鐩爣鏄惁涓嶅湪鏈湴鎴栬�呮病鏈夊垎閰嶅埌浠讳綍鎴块棿涓�
+        /// </summary>
+        /// <returns></returns>
+        private DelDeviceBindData DelBindDevice(CommonDevice bd)
+        {
+            var delDevice = new DelDeviceBindData();
+            delDevice.DeviceAddr = curControlDev.DeviceAddr;
+            delDevice.Epoint = curControlDev.DeviceEpoint;
+
+            var removeDevice = new RemoveBindListObj();
+            removeDevice.BindType = 0;
+            switch (curDeviceBindType)
+            {
+                case 1:
+                    removeDevice.BindCluster = 514;
+                    break;
+                case 2:
+                    removeDevice.BindCluster = 1026;
+                    break;
+                case 3:
+                    removeDevice.BindCluster = 1029;
+                    break;
+                case 4:
+                    //PM2.5
+                    break;
+            }
+            removeDevice.BindMacAddr = bd.DeviceAddr;
+            removeDevice.BindEpoint = bd.DeviceEpoint;
+            delDevice.RemoveBindList.Add(removeDevice);
+            return delDevice;
         }
 
         /// <summary>
@@ -1211,19 +1316,10 @@
                             }
                             break;
                         case 2:
-                            foreach (var de in room.ListDevice)
-                            {
-                                var device = LocalDevice.Current.GetDevice(de);
-                                if (device != null)
-                                {
-                                    if (device.Type == DeviceType.TemperatureSensor)
-                                    {
-                                        roomIncludeMatchDevice.Add(device);
-                                    }
-                                }
-                            }
+                            roomIncludeMatchDevice = GetMatchTemperatureSensorDevice(room);
                             break;
                         case 3:
+                            roomIncludeMatchDevice = GetMatchHumiditySensorDevice(room);
                             foreach (var de in room.ListDevice)
                             {
                                 var device = LocalDevice.Current.GetDevice(de);
@@ -1244,30 +1340,80 @@
                     {
                         continue;
                     }
-                }
 
-                if (!string.IsNullOrEmpty(room.FloorId))
-                {
-                    //鏈夋ゼ灞�
-                    if (room.FloorId == curControlDev.currentSelectFloorId)
+                    if (!string.IsNullOrEmpty(room.FloorId))
                     {
+                        //鏈夋ゼ灞�
+                        if (room.FloorId == curControlDev.currentSelectFloorId)
+                        {
+                            roomTempList.Add(room);
+                        }
+                    }
+                    else
+                    {
+                        //娌℃湁妤煎眰
                         roomTempList.Add(room);
                     }
-                }
-                else
-                {
-                    //娌℃湁妤煎眰
-                    roomTempList.Add(room);
                 }
             }
             return roomTempList;
         }
 
         /// <summary>
+        /// 鍖归厤娓╁害浼犳劅鍣�
+        /// </summary>
+        /// <param name="room"></param>
+        List<CommonDevice> GetMatchTemperatureSensorDevice(Room room)
+        {
+            List<CommonDevice> roomIncludeMatchTempDevice = new List<CommonDevice>();
+            foreach (var de in room.ListDevice)
+            {
+                var device = LocalDevice.Current.GetDevice(de);
+                if (device != null)
+                {
+                    if (device.Type == DeviceType.TemperatureSensor)
+                    {
+                        var dev = device as TemperatureSensor;
+                        if (dev.SensorDiv == 1)
+                        {
+                            roomIncludeMatchTempDevice.Add(device);
+                        }
+                    }
+                }
+            }
+            return roomIncludeMatchTempDevice;
+        }
+
+        /// <summary>
+        /// 鍖归厤婀垮害浼犳劅鍣�
+        /// </summary>
+        /// <param name="room"></param>
+        List<CommonDevice> GetMatchHumiditySensorDevice(Room room)
+        {
+            List<CommonDevice> roomIncludeMatchHumpDevice = new List<CommonDevice>();
+            foreach (var de in room.ListDevice)
+            {
+                var device = LocalDevice.Current.GetDevice(de);
+                if (device != null)
+                {
+                    if (device.Type == DeviceType.TemperatureSensor)
+                    {
+                        var dev = device as TemperatureSensor;
+                        if (dev.SensorDiv == 2)
+                        {
+                            roomIncludeMatchHumpDevice.Add(device);
+                        }
+                    }
+                }
+            }
+            return roomIncludeMatchHumpDevice;
+        }
+
+        /// <summary>
         /// 鑾峰彇妤煎眰瀵瑰簲鐨勬埧闂村垪琛�
         /// </summary>
         /// <returns></returns>
-        private List<Room> GetFloorRoomList(string floorId)
+        private List<Room> GetFloorRoomList()
         {
             supportRoomList.Clear();
             var supportRoomListTemp = new List<Room>();
@@ -1279,10 +1425,6 @@
                 {
                     if (string.IsNullOrEmpty(room.FloorId))
                     {
-                        if (room.FloorId != floorId)
-                        {
-                            continue;
-                        }
                         if (room.IsLove)
                         {
                             continue;
@@ -1350,16 +1492,10 @@
                         {
                             continue;
                         }
-                        foreach (var deviceKeys in r.ListDevice)
+                        var deviceListTemp = GetMatchTemperatureSensorDevice(r);
+                        foreach (var dev in deviceListTemp)
                         {
-                            var device = LocalDevice.Current.GetDevice(deviceKeys);
-                            if (device != null)
-                            {
-                                if (device.Type == DeviceType.TemperatureSensor)
-                                {
-                                    currentPanelBindSupportDeviceListTemp.Add(device);
-                                }
-                            }
+                            currentPanelBindSupportDeviceListTemp.Add(dev);
                         }
                     }
                     break;
@@ -1369,6 +1505,11 @@
                         if (r.ListDevice.Count == 0)
                         {
                             continue;
+                        }
+                        var deviceListTemp = GetMatchHumiditySensorDevice(r);
+                        foreach (var dev in deviceListTemp)
+                        {
+                            currentPanelBindSupportDeviceListTemp.Add(dev);
                         }
                         foreach (var deviceKeys in r.ListDevice)
                         {
@@ -1420,19 +1561,10 @@
                     }
                     break;
                 case 2:
-                    foreach (var deviceKeys in curRoom.ListDevice)
-                    {
-                        var device = LocalDevice.Current.GetDevice(deviceKeys);
-                        if (device != null)
-                        {
-                            if (device.Type == DeviceType.TemperatureSensor)
-                            {
-                                curRoomDeviceListTemp.Add(device);
-                            }
-                        }
-                    }
+                    curRoomDeviceListTemp = GetMatchTemperatureSensorDevice(curRoom);
                     break;
                 case 3:
+                    curRoomDeviceListTemp = GetMatchHumiditySensorDevice(curRoom);
                     foreach (var deviceKeys in curRoom.ListDevice)
                     {
                         var device = LocalDevice.Current.GetDevice(deviceKeys);

--
Gitblit v1.8.0