From dfa6733793434bdcfd394f978ae72f1628b2260f Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期三, 22 四月 2020 16:50:03 +0800
Subject: [PATCH] 合并代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs |  947 +++++++++++++++++++++++++++++++---------------------------
 1 files changed, 504 insertions(+), 443 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
index e2765e4..f72f4e3 100644
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirTargetsForm.cs
@@ -1,6 +1,7 @@
 锘縰sing System;
 using System.Collections.Generic;
 using System.Linq.Expressions;
+using Microsoft.AppCenter.Crashes;
 using Shared.Common;
 using Shared.Phone.UserCenter.Safety;
 using ZigBee.Device;
@@ -62,10 +63,6 @@
         /// </summary>
         List<Room> supportRoomList = new List<Room>();
         /// <summary>
-        /// 褰撶粦瀹氳〃鍙樺寲鍚庣殑鍥炶皟
-        /// </summary>
-        public Action<List<BindListResponseObj>> action;
-        /// <summary>
         /// 淇濆瓨瀹屾垚鎸夐挳
         /// </summary>
         Button btnFinifh;
@@ -92,19 +89,19 @@
         /// <summary>
         /// 鏂伴缁戝畾鐩爣鍥炶皟
         /// </summary>
-        Action actionFreshAirTarget = null;
+        public Action<string> actionFreshAirTarget = null;
         /// <summary>
         /// 娓╁害缁戝畾鐩爣鍥炶皟
         /// </summary>
-        Action actionTemperatureTarget = null;
+        public Action<string> actionTemperatureTarget = null;
         /// <summary>
         /// 婀垮害缁戝畾鐩爣鍥炶皟
         /// </summary>
-        Action actionHumidityTarget = null;
+        public Action<string> actionHumidityTarget = null;
         /// <summary>
         /// PM缁戝畾鐩爣鍥炶皟
         /// </summary>
-        Action actionPMTarget = null;
+        public Action<string> actionPMTarget = null;
         #endregion
 
         #region UI璁捐 
@@ -135,7 +132,7 @@
             {
                 RemoveFromParent();
             };
-            this.btnTitle.Width = Application.GetRealWidth(1080 - 161 - 200 - 58);
+            this.btnTitle.Width = Application.GetRealWidth(1080 - 161 - 300);
             this.btnBack.MouseUpEventHandler += eHandlerBack;
             this.btnBackFrameLayout.MouseUpEventHandler += eHandlerBack;
             this.MidFrameLayout(this);
@@ -156,14 +153,13 @@
         {
             var btnAddFrameLayout = new FrameLayout
             {
-                X = Application.GetRealWidth(830),
+                X = Application.GetRealWidth(619),
             };
             this.titleFrameLayout.AddChidren(btnAddFrameLayout);
 
             btnFloorText = new Button
             {
-                Width = Application.GetRealWidth(110),
-                X = Application.GetRealWidth(15),
+                Width = Application.GetRealWidth(300 - 69 - 58),
                 Text = Language.StringByID(R.MyInternationalizationString.FirstFloor),
                 TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                 TextSize = 14,
@@ -172,26 +168,35 @@
             };
             btnAddFrameLayout.AddChidren(btnFloorText);
 
+            var btnBindDownFrameLayout = new FrameLayout
+            {
+                Width = Application.GetMinReal(69 + 58),
+                X = Application.GetRealWidth(300 - 69 - 58),
+            };
+            btnAddFrameLayout.AddChidren(btnBindDownFrameLayout);
+
             var btnBindDown = new Button
             {
                 Height = Application.GetMinReal(69),
                 Width = Application.GetMinReal(69),
-                X = Application.GetRealWidth(200 - 77),
                 UnSelectedImagePath = "BindPic/BindDown.png",
                 Gravity = Gravity.CenterVertical,
             };
-            btnAddFrameLayout.AddChidren(btnBindDown);
-            btnBindDown.MouseDownEventHandler += (sender, e) =>
+            btnBindDownFrameLayout.AddChidren(btnBindDown);
+
+            EventHandler<MouseEventArgs> eHandlerBindDown = (sender, e) =>
             {
                 SideslipFramelayout();
             };
+            btnBindDown.MouseDownEventHandler += eHandlerBindDown;
+            btnBindDownFrameLayout.MouseDownEventHandler += eHandlerBindDown;
             if (Common.Config.Instance.Home.FloorDics.Count == 0)
             {
                 btnAddFrameLayout.Width = 0;
             }
             else
             {
-                btnAddFrameLayout.Width = Application.GetRealWidth(200);
+                btnAddFrameLayout.Width = Application.GetRealWidth(300);
             }
         }
 
@@ -220,6 +225,11 @@
                 Height = Application.GetRealHeight(1145),
             };
             this.midFrameLayout.AddChidren(midVerticalScrolViewLayout);
+            midVerticalScrolViewLayout.BeginHeaderRefreshingAction += () =>
+            {
+                midVerticalScrolViewLayout.BeginHeaderRefreshing();
+                InitData();
+            };
 
             //搴曢儴淇濆瓨鏍�
             var bottomFrameLayout = new FrameLayout()
@@ -253,8 +263,9 @@
         /// </summary>
         /// <param name="gateway">Gateway.</param>
         /// <param name="key">Key.</param>
-        void RefreshRoomList(Room curRoom, ref int index2)
+        void RefreshRoomList()
         {
+            Room curRoom = null;
             if (supportRoomList.Count == 0)
             {
                 return;
@@ -263,7 +274,7 @@
             Button curentOldRoom = null;
             FrameLayout curentOldRoomFrameLayout = null;
             int index = 0;
-            var roomTempList = GetSupportRoomList(curRoom);
+            var roomTempList = GetSupportRoomList();
             for (int i = 0; i < roomTempList.Count; i++)
             {
                 var room = roomTempList[i];
@@ -302,7 +313,6 @@
                 }
                 EventHandler<MouseEventArgs> eHandlerRoom = (sender, e) =>
                 {
-                    //ChangeRoom(curRoom, room, btnRoom, curentOldRoom, btnRoomFrameLayout, curentOldRoomFrameLayout);
                     if (!btnRoom.IsSelected)
                     {
                         if (curentOldRoom != null)
@@ -327,26 +337,11 @@
                     }
                     curRoom = room;
                     curControlDev.RoomId = room.Id;
-                    if (curRoom.ListSceneId.Count == 0)
-                    {
-                        btnFinifh.Enable = false;
-                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-                    }
-                    else
-                    {
-                        btnFinifh.Enable = true;
-                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                    }
-                    if (targetList.Count == 0)
-                    {
-                        btnFinifh.Enable = false;
-                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-                    }
-                    else
-                    {
-                        btnFinifh.Enable = true;
-                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                    }
+
+                    //鏂伴闈㈡澘淇濆瓨浣胯兘
+                    btnFinifh.Enable = true;
+                    btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+
                     RefreshDeviceList(curRoom);
                 };
                 btnRoom.MouseUpEventHandler += eHandlerRoom;
@@ -354,6 +349,17 @@
                 index++;
             }
             BindInfo.FinishDisplay(roomTempList, btnFinifh);
+
+            if (roomTempList.Count != 0)
+            {
+                curRoom = roomTempList[0];
+            }
+            else
+            {
+                curRoom = new Shared.Common.Room();
+            }
+
+            RefreshDeviceList(curRoom);
         }
 
         /// <summary>
@@ -425,7 +431,7 @@
                 };
                 rowLayout.AddChidren(line2);
 
-                if (curIndex == currentPanelSupportBindDeviceList.Count - 1)
+                if (curIndex == currentRoomSupportBindDeviceList.Count - 1)
                 {
                     line2.Visible = false;
                 }
@@ -435,23 +441,6 @@
                 string mianKey = device.DeviceAddr + device.DeviceEpoint;
                 if (targetList.Count != 0)
                 {
-                    //    if(curControlDev!=null)
-                    //    {
-                    //        foreach (var bindedSc in curControlDev.bindList)
-                    //        {
-                    //            if (bindedSc.BindMacAddr + bindedSc.BindEpoint == mianKey)
-                    //            {
-                    //                btnChoose.IsSelected = true;
-                    //                btnChoose.Visible = true;
-                    //                oldDevice = btnChoose;
-                    //                targetList.Add(device);
-                    //            }
-                    //        }
-                    //    }
-
-                    //}
-                    //else
-                    //{
                     foreach (var bindedDev in targetList)
                     {
                         if (bindedDev.DeviceAddr + bindedDev.DeviceEpoint == mianKey)
@@ -465,17 +454,20 @@
 
                 EventHandler<MouseEventArgs> hander = (sender, e) =>
                {
-                   //ChangeTarget(device, btnChoose, oldDevice);
-                   if (curControlDev.bindList.Count != 0)
-                   {
-                       if (btnChoose.IsSelected)
-                       {
-                           new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindExist), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
-                           return;
-                       }
-                   }
-
+                   btnChoose.IsSelected = !btnChoose.IsSelected;
                    if (!btnChoose.IsSelected)
+                   {
+                       if (oldDevice != null)
+                       {
+                           oldDevice.IsSelected = false;
+                           oldDevice.Visible = false;
+                       }
+                       oldDevice = btnChoose;
+                       oldDevice.IsSelected = false;
+                       oldDevice.Visible = false;
+                       targetList.Clear();
+                   }
+                   else
                    {
                        if (oldDevice != null)
                        {
@@ -488,33 +480,16 @@
                        targetList.Clear();
                        targetList.Add(device);
                    }
-                   if (targetList.Count == 0)
-                   {
-                       btnFinifh.Enable = false;
-                       btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-                   }
-                   else
-                   {
-                       btnFinifh.Enable = true;
-                       btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                   }
+
+                   //鏂伴闈㈡澘锛氱敱浜庣洰鏍囨病鏈夋彁渚涘垹闄ゆ帴鍙o紝鎵�浠ュ彲浠ュ彇娑堥�変腑鑳戒繚瀛�
+                   btnFinifh.Enable = true;
+                   btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                };
                 rowLayout.MouseUpEventHandler += hander;
                 devicePic.MouseUpEventHandler += hander;
                 btnBindName.MouseUpEventHandler += hander;
                 btnChoose.MouseUpEventHandler += hander;
                 curIndex++;
-            }
-
-            if (targetList.Count == 0)
-            {
-                btnFinifh.Enable = false;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-            }
-            else
-            {
-                btnFinifh.Enable = true;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
             }
         }
 
@@ -537,7 +512,6 @@
 
             var sidelipFrameLayout = new FrameLayout()
             {
-                Height = Application.GetMinReal(783),
                 Width = Application.GetMinReal(449),
                 Y = Application.GetRealHeight(161),
                 X = Application.GetRealWidth(596),
@@ -561,18 +535,19 @@
 
             var sidelipVerticalScrolViewLayout = new VerticalScrolViewLayout()
             {
+                Y = btnSelectFloor.Bottom + Application.GetRealHeight(45),
                 Height = Application.GetRealHeight(600),
-                Y = btnSelectFloor.Bottom,
             };
             sidelipFrameLayout.AddChidren(sidelipVerticalScrolViewLayout);
 
             Button oldbutton = null;
             Button oldbuttonText = null;
+            int count = 0;
             foreach (var floorId in dicFloorList.Keys)
             {
                 var rowFrameLayout = new RowLayout()
                 {
-                    Height = Application.GetRealHeight(150),
+                    Height = Application.GetRealHeight(152),
                     LineColor = Shared.Common.ZigbeeColor.Current.XMRowLine,
                     X = Application.GetRealWidth(81),
                 };
@@ -582,9 +557,9 @@
                 {
                     Width = Application.GetMinReal(81),
                     Height = Application.GetMinReal(81),
-                    Y = Application.GetRealHeight(55),
                     UnSelectedImagePath = "Floor/Floor.png",
                     SelectedImagePath = "Floor/FloorSelected.png",
+                    Gravity = Gravity.CenterVertical,
                 };
                 rowFrameLayout.AddChidren(btnAllMethod);
 
@@ -593,7 +568,7 @@
                     Width = Application.GetRealWidth(311),
                     Height = Application.GetRealHeight(58),
                     X = Application.GetRealWidth(92),
-                    Y = Application.GetRealHeight(69),
+                    Gravity = Gravity.CenterVertical,
                     TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                     TextSize = 14,
                     TextAlignment = TextAlignment.CenterLeft,
@@ -608,36 +583,18 @@
                     btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                 }
 
+                string curFloorId = floorId;
                 EventHandler<MouseEventArgs> hander = (sender, e) =>
                 {
-                    //ChangeFloor(dialog, floorId, btnMethodText, oldbuttonText, oldbutton);
-                    var curFloorId = floorId;
-                    curControlDev.currentSelectFloorId = curFloorId;
-                    btnFloorText.Text = dicFloorList[curFloorId];
                     if (curControlDev.currentSelectFloorId == curFloorId)
                     {
                         return;
                     }
                     curControlDev.currentSelectFloorId = curFloorId;
-                    btnFloorText.Text = dicFloorList[curFloorId];
+                    btnFloorText.Text = dicFloorList[floorId];
 
                     //鑾峰彇妤煎眰涓埧闂村垪琛� 
                     supportRoomList = GetFloorRoomList();
-                    if (supportRoomList.Count == 0)
-                    {
-                        return;
-                    }
-                    var curRoom = new Room();
-                    if (supportRoomList.Count != 0)
-                    {
-                        curRoom = supportRoomList[0];
-                    }
-                    else
-                    {
-                        curRoom = new Shared.Common.Room();
-                        supportRoomList.Add(curRoom);
-                    }
-
                     if (!btnMethodText.IsSelected)
                     {
                         if (oldbutton != null)
@@ -656,23 +613,26 @@
                     }
 
                     int index = 0;
-                    RefreshRoomList(curRoom, ref index);
-
-                    if (targetList.Count == 0)
-                    {
-                        btnFinifh.Enable = false;
-                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-                    }
-                    else
-                    {
-                        btnFinifh.Enable = true;
-                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                    }
+                    RefreshRoomList();
                     dialog.Close();
                 };
                 btnAllMethod.MouseUpEventHandler += hander;
                 rowFrameLayout.MouseUpEventHandler += hander;
                 btnMethodText.MouseUpEventHandler += hander;
+                count++;
+            }
+
+            if (count == 0)
+            {
+                sidelipFrameLayout.Height = 0;
+            }
+            else if (count <= 4 && count > 0)
+            {
+                sidelipFrameLayout.Height = Application.GetRealHeight(180) + count * Application.GetRealHeight(150);
+            }
+            else
+            {
+                sidelipFrameLayout.Height = Application.GetMinReal(780);
             }
         }
         #endregion
@@ -697,8 +657,10 @@
                     curControlDev.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId();
                     if (BindInfo.GetCurrentSelectFloorIdName() != null)
                     {
-                        btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName();
-
+                        Application.RunOnMainThread(() =>
+                        {
+                            btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName();
+                        });
                     }
 
                     //鑾峰彇妤煎眰涓埧闂村垪琛�
@@ -743,215 +705,76 @@
                                 var device = LocalDevice.Current.GetDevice(bindDev.DeviceAddr, bindDev.DeviceEpoint);
                                 if (device != null)
                                 {
-                                    //鑾峰彇璁惧绫诲瀷鐨�
-                                    var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
-                                    //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
-                                    if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                                    switch (curDeviceBindType)
                                     {
-                                        continue;
+                                        case 1:
+                                            //鑾峰彇璁惧绫诲瀷鐨�
+                                            var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                                            //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
+                                            if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                                            {
+                                                continue;
+                                            }
+                                            if (device.Type == DeviceType.FreshAir)
+                                            {
+                                                targetList.Add(device);
+                                                oldTargetList.Add(device);
+                                            }
+                                            break;
+                                        case 2:
+                                            if (device.Type == DeviceType.TemperatureSensor)
+                                            {
+                                                targetList.Add(device);
+                                                oldTargetList.Add(device);
+                                            }
+                                            break;
+                                        case 3:
+                                            if (device.Type == DeviceType.FreshAirHumiditySensor)
+                                            {
+                                                targetList.Add(device);
+                                                oldTargetList.Add(device);
+                                            }
+                                            break;
+                                        case 4:
+                                            //PM2.5
+                                            break;
                                     }
-                                    if (device.Type == DeviceType.FreshAir)
-                                    {
-                                        targetList.Add(device);
-                                        oldTargetList.Add(device);
-                                    }
-                                }
 
+                                }
                             }
                         }
                     }
                 }
-                catch { }
+                catch (Exception ex)
+                {
+                    var mess = ex.Message;
+                }
                 finally
                 {
                     Application.RunOnMainThread(() =>
                     {
                         if (supportRoomList.Count != 0)
                         {
-                            Shared.Common.Room curRoom = supportRoomList[0];
-                            int index = 0;
-                            RefreshRoomList(curRoom, ref index);
-                            RefreshDeviceList(curRoom);
-
-                            if (curRoom.ListDevice.Count == 0 || targetList.Count == 0)
-                            {
-                                btnFinifh.Enable = false;
-                                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-                            }
-                            else
-                            {
-                                btnFinifh.Enable = true;
-                                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                            }
+                            RefreshRoomList();
                         }
+
+                        //棣栨鏄惁鑳界偣鍑讳繚瀛�
+                        if (targetList.Count == 0)
+                        {
+                            btnFinifh.Enable = false;
+                            btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
+                        }
+                        else
+                        {
+                            btnFinifh.Enable = true;
+                            btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                        }
+
                         CommonPage.Loading.Hide();
+                        midVerticalScrolViewLayout.EndHeaderRefreshing();
                     });
                 }
             });
-        }
-
-        /// <summary>
-        /// 鍒囨崲妤煎眰
-        /// </summary>
-        /// <param name="dialog"></param>
-        /// <param name="curFloorId"></param>
-        /// <param name="btnMethodText"></param>
-        /// <param name="oldbuttonText"></param>
-        /// <param name="oldbutton"></param>
-        void ChangeFloor(Dialog dialog, string curFloorId, Button btnMethodText, Button oldbuttonText, Button oldbutton)
-        {
-            if (curControlDev.currentSelectFloorId == curFloorId)
-            {
-                return;
-            }
-            curControlDev.currentSelectFloorId = curFloorId;
-            btnFloorText.Text = dicFloorList[curFloorId];
-
-            //鑾峰彇妤煎眰涓埧闂村垪琛� 
-            supportRoomList = GetFloorRoomList();
-            if (supportRoomList.Count == 0)
-            {
-                return;
-            }
-            var curRoom = new Room();
-            if (supportRoomList.Count != 0)
-            {
-                curRoom = supportRoomList[0];
-            }
-            else
-            {
-                curRoom = new Shared.Common.Room();
-                supportRoomList.Add(curRoom);
-            }
-
-            if (!btnMethodText.IsSelected)
-            {
-                if (oldbutton != null)
-                {
-                    oldbutton.IsSelected = false;
-                }
-                if (oldbuttonText != null)
-                {
-                    oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
-                }
-                oldbutton = btnMethodText;
-                oldbuttonText = btnMethodText;
-                btnMethodText.IsSelected = true;
-                oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                oldbuttonText.IsBold = true;
-            }
-
-            int index = 0;
-            RefreshRoomList(curRoom, ref index);
-
-            if (targetList.Count == 0)
-            {
-                btnFinifh.Enable = false;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-            }
-            else
-            {
-                btnFinifh.Enable = true;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-            }
-            dialog.Close();
-        }
-
-        /// <summary>
-        /// 鍒囨崲鎴块棿
-        /// </summary>
-        /// <param name="curRoom"></param>
-        /// <param name="room"></param>
-        /// <param name="btnRoom"></param>
-        /// <param name="curentOldRoom"></param>
-        /// <param name="btnRoomFrameLayout"></param>
-        /// <param name="curentOldRoomFrameLayout"></param>
-        void ChangeRoom(Room curRoom, Room room, Button btnRoom, Button curentOldRoom, FrameLayout btnRoomFrameLayout, FrameLayout curentOldRoomFrameLayout)
-        {
-            if (!btnRoom.IsSelected)
-            {
-                if (curentOldRoom != null)
-                {
-                    curentOldRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMGray3;
-                }
-                curentOldRoom = btnRoom;
-                curentOldRoom.TextColor = Shared.Common.ZigbeeColor.Current.XMWhite;
-            }
-
-            if (btnRoomFrameLayout.BorderWidth == 1)
-            {
-                if (curentOldRoomFrameLayout != null)
-                {
-                    curentOldRoomFrameLayout.BorderWidth = 1;
-                    curentOldRoomFrameLayout.BorderColor = Shared.Common.ZigbeeColor.Current.XMOrange;
-                    curentOldRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackground.png";
-                }
-                curentOldRoomFrameLayout = btnRoomFrameLayout;
-                curentOldRoomFrameLayout.BorderWidth = 0;
-                curentOldRoomFrameLayout.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
-            }
-            curRoom = room;
-            curControlDev.RoomId = room.Id;
-            if (curRoom.ListSceneId.Count == 0)
-            {
-                btnFinifh.Enable = false;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-            }
-            else
-            {
-                btnFinifh.Enable = true;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-            }
-            if (targetList.Count == 0)
-            {
-                btnFinifh.Enable = false;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-            }
-            else
-            {
-                btnFinifh.Enable = true;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-            }
-            RefreshDeviceList(curRoom);
-        }
-
-        /// <summary>
-        /// 鍒囨崲缁戝畾鐩爣
-        /// </summary>
-        void ChangeTarget(CommonDevice device, Button btnChoose, Button oldDevice)
-        {
-            if (curControlDev.bindList.Count != 0)
-            {
-                if (btnChoose.IsSelected)
-                {
-                    new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.BindExist), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
-                    return;
-                }
-            }
-
-            if (!btnChoose.IsSelected)
-            {
-                if (oldDevice != null)
-                {
-                    oldDevice.IsSelected = false;
-                    oldDevice.Visible = false;
-                }
-                oldDevice = btnChoose;
-                oldDevice.IsSelected = true;
-                oldDevice.Visible = true;
-                targetList.Clear();
-                targetList.Add(device);
-            }
-            if (targetList.Count == 0)
-            {
-                btnFinifh.Enable = false;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
-            }
-            else
-            {
-                btnFinifh.Enable = true;
-                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-            }
         }
 
         /// <summary>
@@ -960,24 +783,127 @@
         /// <param name="curControlDev"></param>
         void SaveTarget()
         {
-            bool isFinish = false;
-
-            //绌虹洰鏍�
             if (targetList.Count == 0)
             {
-                Application.RunOnMainThread(() =>
+                //绌虹洰鏍�
+                System.Threading.Tasks.Task.Run(async () =>
                 {
-                    var myTip = new Tip();
-                    myTip.Direction = AMPopTipDirection.None;
-                    myTip.CloseTime = 2;
-                    myTip.Text = Language.StringByID(R.MyInternationalizationString.BindDeviceTargetIsEmpty);
-                    myTip.Show(Common.CommonPage.Instance);
+                    try
+                    {
+                        Application.RunOnMainThread(() => { CommonPage.Loading.Start(""); });
+
+                        if (oldTargetList.Count != 0)
+                        {
+                            //鍒犻櫎鍙栨秷鐨勭洰鏍�
+                            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)
+                                {
+                                    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);
+
+                                var delResult = new DelDeviceBindResponseAllData();
+                                delResult = await curControlDev.DelDeviceBindAsync(delDevice);
+                                if (delResult != null && delResult.removeBindResultResponseData != null)
+                                {
+                                    if (delResult.removeBindResultResponseData.Result == 0)
+                                    {
+                                        switch (curDeviceBindType)
+                                        {
+                                            case 1:
+                                                if (actionFreshAirTarget != null)
+                                                {
+                                                    actionFreshAirTarget("");
+                                                }
+                                                break;
+                                            case 2:
+                                                if (actionTemperatureTarget != null)
+                                                {
+                                                    actionTemperatureTarget("");
+                                                }
+                                                break;
+                                            case 3:
+                                                if (actionHumidityTarget != null)
+                                                {
+                                                    actionHumidityTarget("");
+                                                }
+                                                break;
+                                            case 4:
+                                                if (actionPMTarget != null)
+                                                {
+                                                    actionPMTarget("");
+                                                }
+                                                break;
+                                        }
+                                        Application.RunOnMainThread(() =>
+                                        {
+                                            CommonPage.Loading.Hide();
+                                            btnFinifh.Enable = true;
+                                            btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                            this.RemoveFromParent();
+                                        });
+                                    }
+                                    else
+                                    {
+                                        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;
+                                    }
+                                }
+                            }
+                        }
+                        else
+                        {
+                            //娌℃湁鐩爣鎻愮ず
+                            Application.RunOnMainThread(() =>
+                            {
+                                var myTip = new Tip();
+                                myTip.Direction = AMPopTipDirection.None;
+                                myTip.CloseTime = 2;
+                                myTip.Text = Language.StringByID(R.MyInternationalizationString.BindDeviceTargetIsEmpty);
+                                myTip.Show(Common.CommonPage.Instance);
+                                btnFinifh.Enable = true;
+                                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                CommonPage.Loading.Hide();
+                            });
+                            return;
+                        }
+                    }
+                    catch (Exception ex)
+                    {
+                        var mess = ex.Message;
+                    }
                 });
-                return;
             }
             else
             {
-                //宸茬粡缁戝畾杩囩殑鐩爣
+                //閫変腑鐩爣
+                //1銆佸凡缁忕粦瀹氳繃鐨勭洰鏍�
                 if (checkExistDevice())
                 {
                     Application.RunOnMainThread(() =>
@@ -987,6 +913,8 @@
                         myTip.CloseTime = 2;
                         myTip.Text = Language.StringByID(R.MyInternationalizationString.BindExist);
                         myTip.Show(Common.CommonPage.Instance);
+                        btnFinifh.Enable = true;
+                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                     });
                     return;
                 }
@@ -1002,23 +930,52 @@
                         {
                             foreach (var bd in oldTargetList)
                             {
-                                var res = await RemoveTargets(bd);
-                                if (res != 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;
-                                    });
-                                }
+                                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);
+
+                                var delResult = new DelDeviceBindResponseAllData();
+                                delResult = await curControlDev.DelDeviceBindAsync(delDevice);
+                                if (delResult != null && delResult.removeBindResultResponseData != null)
+                                {
+                                    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;
+                                    }
+                                }
                             }
                         }
 
-                        //娣诲姞鏂扮殑鐩爣
+                        //2銆佹坊鍔犳柊鐨勭洰鏍�
+                        string bindName = "";
                         var addBindeDev = new AddBindData();
                         addBindeDev.DeviceAddr = curControlDev.DeviceAddr;
                         addBindeDev.Epoint = curControlDev.DeviceEpoint;
@@ -1036,25 +993,29 @@
                                 case 3:
                                     addBindInfo.BindCluster = 1029;
                                     break;
+                                case 4:
+                                    //PM2.5
+                                    break;
                             }
                             addBindInfo.BindType = 0;
                             addBindInfo.BindMacAddr = de.DeviceAddr;
                             addBindInfo.BindEpoint = de.DeviceEpoint;
                             addBindeDev.BindList.Add(addBindInfo);
+                            bindName = de.DeviceEpointName;
                         }
 
                         var dev = new AddedDeviceBindResponseAllData();
                         dev = await curControlDev.AddDeviceBindAsync(addBindeDev);
-                        if (dev != null || dev.addedDeviceBindResponseData == null)
+                        if (dev == null || dev.addedDeviceBindResponseData == null)
                         {
                             Application.RunOnMainThread(() =>
                             {
                                 CommonPage.Loading.Hide();
                                 new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(CommonPage.Instance);
+                                btnFinifh.Enable = true;
+                                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                return;
                             });
-                            btnFinifh.Enable = true;
-                            btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
-                            return;
                         }
                         else
                         {
@@ -1062,24 +1023,41 @@
                             {
                                 curControlDev.bindList = dev.addedDeviceBindResponseData.BindList;
                                 targetList.Clear();
-                                isFinish = true;
-                                if (isFinish)
+
+                                switch (curDeviceBindType)
                                 {
-                                    if (action != null)
-                                    {
-                                        action(curControlDev.bindList);
-                                    }
-                                    this.RemoveFromParent();
+                                    case 1:
+                                        if (actionFreshAirTarget != null)
+                                        {
+                                            actionFreshAirTarget(bindName);
+                                        }
+                                        break;
+                                    case 2:
+                                        if (actionTemperatureTarget != null)
+                                        {
+                                            actionTemperatureTarget(bindName);
+                                        }
+                                        break;
+                                    case 3:
+                                        if (actionHumidityTarget != null)
+                                        {
+                                            actionHumidityTarget(bindName);
+                                        }
+                                        break;
+                                    case 4:
+                                        if (actionPMTarget != null)
+                                        {
+                                            actionPMTarget(bindName);
+                                        }
+                                        break;
                                 }
-                                else
-                                {
-                                    this.RemoveFromParent();
-                                }
+
                                 Application.RunOnMainThread(() =>
                                 {
                                     CommonPage.Loading.Hide();
                                     btnFinifh.Enable = true;
                                     btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack;
+                                    this.RemoveFromParent();
                                 });
                             }
                             else if (dev.addedDeviceBindResponseData.Result == 1)
@@ -1118,68 +1096,12 @@
                             }
                         }
                     }
-                    catch
+                    catch (Exception ex)
                     {
+                        var mess = ex.Message;
                     }
                 });
             }
-        }
-
-        /// <summary>
-        /// 鍒犻櫎瀛樺湪鐨勭洰鏍�
-        /// </summary>
-        /// <param name="bindDevice"></param>
-        /// <param name="btnDel"></param>
-        /// <returns></returns>
-        private async System.Threading.Tasks.Task<int> RemoveTargets(CommonDevice delDev)
-        {
-            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;
-            }
-            removeDevice.BindMacAddr = delDev.DeviceAddr;
-            removeDevice.BindEpoint = delDev.DeviceEpoint;
-            delDevice.RemoveBindList.Add(removeDevice);
-
-            try
-            {
-                CommonPage.Loading.Start("");
-                var delResult = new DelDeviceBindResponseAllData();
-                delResult = await curControlDev.DelDeviceBindAsync(delDevice);
-                if (delResult != null && delResult.delDeviceBindResponseData != null)
-                {
-                    if (delResult.delDeviceBindResponseData?.RemoveBindList != null)
-                    {
-                        foreach (var re in delResult.delDeviceBindResponseData.RemoveBindList)
-                        {
-                            if (re.Result == 0)
-                            {
-                                return 0;
-                            }
-                            {
-                                return -1;
-                            }
-                        }
-                    }
-                }
-            }
-            catch { }
-
-            return -1;
         }
 
         /// <summary>
@@ -1208,7 +1130,7 @@
         /// <summary>
         /// 鑳芥樉绀虹殑鎴块棿鍒楄〃
         /// </summary>
-        private List<Room> GetSupportRoomList(Room curRoom)
+        private List<Room> GetSupportRoomList()
         {
             var roomTempList = new List<Room>();
             for (int i = 0; i < supportRoomList.Count; i++)
@@ -1225,11 +1147,81 @@
                 {
                     continue;
                 }
-
-                roomTempList.Add(room);
-                if (roomTempList.Count != 0)
+                else
                 {
-                    curRoom = roomTempList[0];
+                    List<CommonDevice> roomIncludeMatchDevice = new List<CommonDevice>();
+
+                    //鎴块棿涓病鏈夊搴旂殑鏀寔缁戝畾鐨勭洰鏍�
+                    switch (curDeviceBindType)
+                    {
+                        case 1:
+                            foreach (var de in room.ListDevice)
+                            {
+                                var device = LocalDevice.Current.GetDevice(de);
+                                if (device != null)
+                                {
+                                    //鑾峰彇璁惧绫诲瀷鐨�
+                                    var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                                    //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
+                                    if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                                    {
+                                        continue;
+                                    }
+                                    if (device.Type == DeviceType.FreshAir)
+                                    {
+                                        roomIncludeMatchDevice.Add(device);
+                                    }
+                                }
+                            }
+                            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);
+                                    }
+                                }
+                            }
+                            break;
+                        case 3:
+                            foreach (var de in room.ListDevice)
+                            {
+                                var device = LocalDevice.Current.GetDevice(de);
+                                if (device != null)
+                                {
+                                    if (device.Type == DeviceType.FreshAirHumiditySensor)
+                                    {
+                                        roomIncludeMatchDevice.Add(device);
+                                    }
+                                }
+                            }
+                            break;
+                        case 4:
+                            break;
+                    }
+
+                    if (roomIncludeMatchDevice.Count == 0)
+                    {
+                        continue;
+                    }
+                }
+
+                if (!string.IsNullOrEmpty(room.FloorId))
+                {
+                    //鏈夋ゼ灞�
+                    if (room.FloorId == curControlDev.currentSelectFloorId)
+                    {
+                        roomTempList.Add(room);
+                    }
+                }
+                else
+                {
+                    //娌℃湁妤煎眰
+                    roomTempList.Add(room);
                 }
             }
             return roomTempList;
@@ -1261,24 +1253,21 @@
             }
             else
             {
-                // 鑾峰彇妤煎眰瀵瑰簲瀵规埧闂�
+                // 鑾峰彇鏀寔鐨勬埧闂�
                 foreach (var room in listAllRoom)
                 {
-                    if (room.FloorId == curControlDev.currentSelectFloorId)
+                    if (room.IsLove)
                     {
-                        if (room.IsLove)
-                        {
-                            continue;
-                        }
-                        supportRoomListTemp.Add(room);
+                        continue;
                     }
+                    supportRoomListTemp.Add(room);
                 }
             }
             return supportRoomListTemp;
         }
 
         /// <summary>
-        /// 鎴块棿涓尮閰嶇殑鏀寔缁戝畾鐨勬墍鏈夌洰鏍囧垪琛�
+        /// 鎵�鏈夋埧闂翠腑鍖归厤鐨勬敮鎸佺粦瀹氱殑鎵�鏈夌洰鏍囧垪琛�
         /// </summary>
         /// <returns></returns>
         List<CommonDevice> GetAllRoomSupportDeviceList()
@@ -1299,13 +1288,13 @@
                             var device = LocalDevice.Current.GetDevice(deviceKeys);
                             if (device != null)
                             {
-                                ////鑾峰彇璁惧绫诲瀷鐨�
-                                //var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
-                                ////鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
-                                //if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
-                                //{
-                                //    continue;
-                                //}
+                                //鑾峰彇璁惧绫诲瀷鐨�
+                                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                                //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
+                                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                                {
+                                    continue;
+                                }
                                 if (device.Type == DeviceType.FreshAir)
                                 {
                                     currentPanelBindSupportDeviceListTemp.Add(device);
@@ -1315,8 +1304,44 @@
                     }
                     break;
                 case 2:
+                    foreach (var r in supportRoomList)
+                    {
+                        if (r.ListDevice.Count == 0)
+                        {
+                            continue;
+                        }
+                        foreach (var deviceKeys in r.ListDevice)
+                        {
+                            var device = LocalDevice.Current.GetDevice(deviceKeys);
+                            if (device != null)
+                            {
+                                if (device.Type == DeviceType.TemperatureSensor)
+                                {
+                                    currentPanelBindSupportDeviceListTemp.Add(device);
+                                }
+                            }
+                        }
+                    }
                     break;
                 case 3:
+                    foreach (var r in supportRoomList)
+                    {
+                        if (r.ListDevice.Count == 0)
+                        {
+                            continue;
+                        }
+                        foreach (var deviceKeys in r.ListDevice)
+                        {
+                            var device = LocalDevice.Current.GetDevice(deviceKeys);
+                            if (device != null)
+                            {
+                                if (device.Type == DeviceType.FreshAirHumiditySensor)
+                                {
+                                    currentPanelBindSupportDeviceListTemp.Add(device);
+                                }
+                            }
+                        }
+                    }
                     break;
                 case 4:
                     break;
@@ -1340,13 +1365,13 @@
                         var device = LocalDevice.Current.GetDevice(deviceKeys);
                         if (device != null)
                         {
-                            ////鑾峰彇璁惧绫诲瀷鐨�
-                            //var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
-                            ////鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
-                            //if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
-                            //{
-                            //    continue;
-                            //}
+                            //鑾峰彇璁惧绫诲瀷鐨�
+                            var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                            //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
+                            if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                            {
+                                continue;
+                            }
                             if (device.Type == DeviceType.FreshAir)
                             {
                                 curRoomDeviceListTemp.Add(device);
@@ -1355,14 +1380,50 @@
                     }
                     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);
+                            }
+                        }
+                    }
                     break;
                 case 3:
+                    foreach (var deviceKeys in curRoom.ListDevice)
+                    {
+                        var device = LocalDevice.Current.GetDevice(deviceKeys);
+                        if (device != null)
+                        {
+                            if (device.Type == DeviceType.FreshAirHumiditySensor)
+                            {
+                                curRoomDeviceListTemp.Add(device);
+                            }
+                        }
+                    }
                     break;
                 case 4:
                     break;
             }
             return curRoomDeviceListTemp;
         }
-        #endregion 
+        #endregion
+
+        #region 绉婚櫎鏂规硶
+        /// <summary>
+        /// 閲嶅啓绉婚櫎鏂规硶
+        /// </summary>
+        public override void RemoveFromParent()
+        {
+            actionFreshAirTarget = null;
+            actionTemperatureTarget = null;
+            actionHumidityTarget = null;
+            actionPMTarget = null;
+            base.RemoveFromParent();
+        }
+        #endregion
     }
 }

--
Gitblit v1.8.0