From 2109463fab2eb1caed189e4f258e0e763c5cea7b Mon Sep 17 00:00:00 2001
From: WJC <wjc@hdlchina.com.cn>
Date: 星期四, 07 十一月 2019 11:58:53 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-wjc

---
 ZigbeeApp/Shared/Common/Room.cs |  114 +++++++++++++++++++++++++++++++-------------------------
 1 files changed, 63 insertions(+), 51 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index b15f457..00f950b 100644
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -76,10 +76,26 @@
         /// </summary>
         public string HumidityDevice = string.Empty;
 
+        /// <summary>
+        /// 褰撳墠閫夋嫨鐨勬埧闂�
+        /// </summary>
+        private static Room m_CurrentRoom = null;
         /// <summary>
         /// 褰撳墠閫夋嫨鐨勬埧闂�
         /// </summary>
-        public static Room CurrentRoom;
+        [Newtonsoft.Json.JsonIgnore]
+        public static Room CurrentRoom
+        {
+            get
+            {
+                if (m_CurrentRoom == null && Lists.Count > 0)
+                {
+                    return Lists[0];
+                }
+                return m_CurrentRoom;
+            }
+            set { m_CurrentRoom = value; }
+        }
 
         /// <summary>
         /// 鎴块棿閲屾墍鏈夌殑璁惧鍒楄〃
@@ -266,10 +282,10 @@
         /// </summary>
         public static void InitAllRoom()
         {
-            if (CanInitAllRoom == false)
-            {
-                return;
-            }
+            //if (CanInitAllRoom == false)
+            //{
+            //    return;
+            //}
             Lists.Clear();
             if (Config.Instance.Home.RoomFilePathList.Contains("Room_Favorite.json") == false)
             {
@@ -493,6 +509,10 @@
         /// <param name="roomId">鎴块棿ID</param>
         public Room GetRoomById(string roomId)
         {
+            if (string.IsNullOrEmpty(roomId))
+            {
+                return null;
+            }
             return Lists.Find((obj) => obj.Id == roomId);
         }
 
@@ -534,11 +554,8 @@
         /// <param name="device">璁惧瀵硅薄</param>
         public Room GetRoomByDevice(CommonDevice device)
         {
-            var deviceUI = new DeviceUI { };
-            deviceUI.DeviceAddr = device.DeviceAddr;
-            deviceUI.DeviceEpoint = device.DeviceEpoint;
-
-            return Lists.Find((obj) => obj.IsLove == false && obj.DeviceUIFilePathList.Contains(deviceUI.FileName));
+            string deviceFile = device.FilePath;
+            return Lists.Find((obj) => obj.IsLove == false && obj.DeviceUIFilePathList.Contains(deviceFile));
         }
 
         /// <summary>
@@ -621,6 +638,10 @@
         /// <returns></returns>
         public List<Room> GetRoomsByCurrentFloorIdAppendLoveRoom()
         {
+            if(Config.Instance.Home.FloorDics.Count==0)
+            {
+                return Lists;
+            }
             var r = Lists.FindAll((obj) => obj.FloorId == Config.Instance.Home.CurrentFloorId);
             r.Insert(0, GetLoveRoom());
             return r;
@@ -747,9 +768,8 @@
             {
                 return;
             }
-            var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(deviceUIFilePath));
-            var deviceUI = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceUI>(jsonInfo);
-            if (null == deviceUI || null == deviceUI.CommonDevice)
+            var deviceUI = Common.LocalDevice.Current.GetDeviceUI(deviceUIFilePath);
+            if (null == deviceUI.CommonDevice)
             {
                 //褰撳墠瀵硅薄鏁版嵁鏃犳晥
                 return;
@@ -779,7 +799,7 @@
             //娣诲姞鑷姩澶囦唤
             HdlAutoBackupLogic.AddOrEditorFile(device.FilePath);
 
-            DeviceUI deviceUI = Common.LocalDevice.Current.GetDeviceUI(device);
+            var deviceUI = Common.LocalDevice.Current.GetDeviceUI(device);
             if (DeviceUIFilePathList.Contains(deviceUI.FileName) == false)
             {
                 DeviceUIFilePathList.Add(deviceUI.FileName);
@@ -802,11 +822,10 @@
         public void DeleteDevice(string deviceUIFilePath)
         {
             if (deviceUIFilePath == null) return;
-            if (DeviceUIFilePathList.Contains(deviceUIFilePath) && Global.IsExistsByHomeId(deviceUIFilePath))
+            if (DeviceUIFilePathList.Contains(deviceUIFilePath))
             {
                 DeviceUIFilePathList.Remove(deviceUIFilePath);
                 DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUIFilePath);
-                HdlAutoBackupLogic.DeleteFile(deviceUIFilePath);
                 Save();
             }
         }
@@ -821,26 +840,23 @@
             {
                 return;
             }
-            DeviceUI deviceUI = new DeviceUI();
-            deviceUI.DeviceAddr = device.DeviceAddr;
-            deviceUI.DeviceEpoint = device.DeviceEpoint;
-
             //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿
             var room = this.GetRoomByDevice(device);
-            if (room == null)
-            {
-                return;
-            }
-            //绉婚櫎缂撳瓨
-            if (room.DeviceUIFilePathList.Contains(deviceUI.FileName) == false)
-            {
-                return;
-            }
-            room.DeviceUIFilePathList.Remove(deviceUI.FileName);
-
-            room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUI.FileName);
-            room.Save();
-            //鏇存敼鑷姩澶囦唤
+            if (room == null)
+            {
+                return;
+            }
+            string deviceFile = device.FilePath;
+            //绉婚櫎缂撳瓨
+            if (room.DeviceUIFilePathList.Contains(deviceFile) == false)
+            {
+                return;
+            }
+            room.DeviceUIFilePathList.Remove(deviceFile);
+
+            room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceFile);
+            room.Save();
+            //鏇存敼鑷姩澶囦唤
             HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
         }
 
@@ -862,22 +878,18 @@
         /// 鑾峰彇褰撳墠鎴块棿涓嬬殑鍏ㄩ儴璁惧
         /// </summary>
         /// <returns></returns>
-        public List<CommonDevice> GetRoomListDevice()
-        {
-            var listDevice = new List<CommonDevice>();
-            foreach (var device in this.DeviceUIList)
-            {
-                if (device == null || device.CommonDevice == null)
-                {
-                    continue;
-                }
-                listDevice.Add(device.CommonDevice);
-            }
-            if (listDevice.Count == 0)
-            {
-                return listDevice;
-            }
-            return Common.LocalDevice.Current.SortDevice(listDevice);
+        public List<CommonDevice> GetRoomListDevice()
+        {
+            var listDevice = new List<CommonDevice>();
+            foreach (var device in this.DeviceUIList)
+            {
+                if (device == null || device.CommonDevice == null)
+                {
+                    continue;
+                }
+                listDevice.Add(device.CommonDevice);
+            }
+            return listDevice;
         }
 
         /// <summary>
@@ -1470,4 +1482,4 @@
         #endregion
 
     }
-}
\ No newline at end of file
+}

--
Gitblit v1.8.0