From 944b87b6bcccb095cd73f13f4410fb20faf48f74 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期三, 25 十二月 2019 11:21:06 +0800
Subject: [PATCH] 2019.12.25

---
 ZigbeeApp/Shared/Common/Room.cs |  203 +++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 164 insertions(+), 39 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index d410ead..178fc61 100644
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -69,12 +69,20 @@
 
         /// <summary>
         /// 娓╁害浼犳劅鍣�(璁惧涓婚敭)
-        /// </summary>
+        /// </summary>   
         public string TemperatrueDevice = string.Empty;
         /// <summary>
         /// 婀垮害浼犳劅鍣�(璁惧涓婚敭)
         /// </summary>
         public string HumidityDevice = string.Empty;
+        /// <summary>
+        /// 娓╁害
+        /// </summary>
+        public double Temperatrue;
+        /// <summary>
+        /// 婀垮害
+        /// </summary>
+        public double Humidity;
 
         /// <summary>
         /// 褰撳墠閫夋嫨鐨勬埧闂�
@@ -201,6 +209,32 @@
                 return sceneList;
             }
         }
+
+        /// <summary>
+        /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夊満鏅矾寰�
+        /// </summary>
+        /// <value>All room scene UIL ist.</value>
+        [Newtonsoft.Json.JsonIgnore]
+        public  List<string> AllRoomSceneUIFilepathList
+        {
+            get
+            {
+                var pathList = new List<string> { };
+                foreach (var r in Lists)
+                {
+                    if (r.SceneUIFilePathList.Count == 0)
+                    {
+                        continue;
+                    }
+                    foreach (var path in r.SceneUIFilePathList)
+                    {
+                        pathList.Add(path);
+                    }
+                }
+                return pathList;
+            }
+        }
+
         /// <summary>
         /// 鍦烘櫙鍒楄〃---涓嶅啀搴忓垪鍖�
         /// </summary>
@@ -280,12 +314,12 @@
             if (Config.Instance.Home.RoomFilePathList.Contains("Room_Favorite.json") == false)
             {
                 //榛樿娣诲姞鍠滅埍鐨勬埧闂�--绂佹淇敼鎴块棿鍚�
-                var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "Room/r0.png", Id = LoveRoomId };
-                love.Save(true);
+                var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.JPG", Id = LoveRoomId };
+                love.Save(false);
                 //娣诲姞鍒癶ouse 鎴块棿璺緞鍒楄〃
                 var currentHome = Config.Instance.Home;
                 currentHome.RoomFilePathList.Insert(0, love.FileName);
-                currentHome.Save();
+                currentHome.Save(false);
             }
             foreach (var roomFilePath in Config.Instance.Home.RoomFilePathList)
             {
@@ -302,6 +336,19 @@
                 }
             }
             Config.Instance.Home.InitFloor();
+
+            RefreshRoomListView();
+        }
+
+        /// <summary>
+        /// 鍒锋柊鎴块棿瑙嗗浘鍒楄〃
+        /// </summary>
+        public static void RefreshRoomListView()
+        {
+            Application.RunOnMainThread(() =>
+            {
+                Phone.Device.Room.RoomManagement.Instance.Show();
+            });
         }
 
         /// <summary>
@@ -602,21 +649,25 @@
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
-        public  List<Room> GetRoomsByFloorId(string id)
+        public List<Room> GetRoomsByFloorId(string id)
         {
-            return Lists.FindAll((obj) => obj.FloorId==id);
+            if (Config.Instance.Home.FloorDics.Count == 0)
+            {
+                return Lists;
+            }
+            return Lists.FindAll((obj) => obj.FloorId == id);
         }
         /// <summary>
         /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂村悕绉�
         /// </summary>
         /// <param name="id"></param>
         /// <returns></returns>
-        public  List<string> GetRoomNamesByFloorId(string id)
+        public List<string> GetRoomNamesByFloorId(string id)
         {
             List<string> names = new List<string> { };
-            foreach(var r in Lists)
+            foreach (var r in Lists)
             {
-                if(r.FloorId==id)
+                if (r.FloorId == id)
                 {
                     names.Add(r.Name);
                 }
@@ -631,6 +682,10 @@
         /// <returns></returns>
         public  List<Room> GetRoomsByFloorIdAppendLoveRoom(string id)
         {
+            if (Config.Instance.Home.FloorDics.Count == 0)
+            {
+                return Lists;
+            }
             var r= Lists.FindAll((obj) => obj.FloorId == id);
             r.Insert(0, GetLoveRoom());
             return r;
@@ -660,7 +715,8 @@
         /// </summary>
         /// <param name="device">璁惧瀵硅薄</param>
         /// <param name="roomId">鏂版埧闂碔d</param>
-        public void ChangedRoom(CommonDevice device, string roomId)
+        /// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
+        public void ChangedRoom(CommonDevice device, string roomId, bool saveRealRoom = true)
         {
             //鎴块棿鏄惁淇敼
             if (this.IsRoomChanged(device, roomId) == false)
@@ -674,7 +730,7 @@
             var room = this.GetRoomById(roomId);
             if (room != null)
             {
-                room.AddDevice(device);
+                room.AddDevice(device, saveRealRoom);
             }
         }
 
@@ -763,15 +819,14 @@
         #region 鈼� 娣诲姞璁惧________________________
 
         /// <summary>
-        /// 娣诲姞璁惧
+        /// 娣诲姞璁惧(姝ゆ柟娉曠洰鍓嶅彧缁欍�愭垜鐨勫枩鐖便�戜娇鐢�)
         /// </summary>
         /// <param name="deviceUIFilePath">Device UIF ile path.</param>
         public void AddDevice(string deviceUIFilePath)
         {
             if (string.IsNullOrEmpty(deviceUIFilePath))
-
-             {
-                 return;
+            {
+                return;
             }
             var deviceUI = Common.LocalDevice.Current.GetDeviceUI(deviceUIFilePath);
             if (null == deviceUI.CommonDevice)
@@ -789,10 +844,11 @@
         }
 
         /// <summary>
-        /// 娣诲姞璁惧
+        /// 娣诲姞璁惧(姝ゆ柟娉曠洰鍓嶅彧缁橰oom閲岄潰浣跨敤)
         /// </summary>
         /// <param name="device">瑕佹坊鍔犵殑璁惧瀵硅薄</param>
-        public void AddDevice(CommonDevice device)
+        /// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
+        public void AddDevice(CommonDevice device, bool saveRealRoom)
         {
             if (device == null)
             {
@@ -800,9 +856,6 @@
             }
             //璁惧淇℃伅淇濆瓨鍒版湰鍦�
             device.Save();
-
-            //娣诲姞鑷姩澶囦唤
-            HdlAutoBackupLogic.AddOrEditorFile(device.FilePath);
 
             var deviceUI = Common.LocalDevice.Current.GetDeviceUI(device);
             if (DeviceUIFilePathList.Contains(deviceUI.FileName) == false)
@@ -814,6 +867,11 @@
 
                 //娣诲姞鑷姩澶囦唤
                 HdlAutoBackupLogic.AddOrEditorFile(FileName);
+                if (saveRealRoom == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1)
+                {
+                    //濡傛灉鍙湁涓�涓洖璺�,鍒欎慨鏀圭湡瀹炵墿鐞嗚澶囩殑鎴块棿
+                    LocalDevice.Current.SaveRealDeviceRoomId(new List<CommonDevice>() { device }, this.Id, false);
+                }
             }
         }
 
@@ -947,35 +1005,34 @@
         }
 
         /// <summary>
-        /// 鑾峰彇璇ユゼ灞傜殑鍦烘櫙
+        /// 鑾峰彇鏈垎閰嶅尯鍩熻澶�
         /// </summary>
-        /// <param name="floorId"></param>
         /// <returns></returns>
-        public List<SceneUI> GetSceneUIsByFloorId(string floorId)
+        public List<DeviceUI> GetUnalloctedDeviceUIs()
         {
-            var rooms = GetRoomsByFloorId(floorId);
-            if (rooms == null)
+            List<DeviceUI> deviceUIs = new List<DeviceUI> { };
+            var dList = AllRoomDeviceUIList;
+            var commonDeviceList = Common.LocalDevice.Current.listAllDevice;
+
+            if (dList.Count == 0)
             {
                 return null;
             }
-            var sceneList = new List<SceneUI> { };
-            foreach (var r in rooms)
+            foreach (var device in commonDeviceList)
             {
-                if (r.SceneUIList.Count == 0)
+                if (dList.Find((obj) => obj.CommonDevice == device) == null)
                 {
-                    continue;
-                }
-                foreach (var sceneUI in r.SceneUIList)
-                {
-                    if (sceneUI == null)
-                    {
-                        continue;
-                    }
-                    sceneList.Add(sceneUI);
+                    deviceUIs.Add(Common.LocalDevice.Current.GetDeviceUI(device));
                 }
             }
-            return sceneList;
+            if (deviceUIs.Count == 0)
+            {
+                return null;
+            }
+            return deviceUIs;
         }
+
+        //public List<DeviceUI> GetUnalloctedDeviceUITypes
 
         #endregion
 
@@ -1210,7 +1267,6 @@
             Save();
             Global.DeleteFilebyHomeId(sceneUI.FileName);
             HdlAutoBackupLogic.DeleteFile(sceneUI.FileName);
-            HdlAutoBackupLogic.AddOrEditorFile(FileName);
         }
 
         #endregion
@@ -1236,6 +1292,7 @@
             }
             return null;
         }
+
         /// <summary>
         /// 鑾峰彇璇ユゼ灞傛墍鏈夊満鏅�
         /// </summary>
@@ -1251,6 +1308,74 @@
             }
             return sceneUIs;
         }
+
+        /// <summary>
+        /// 鑾峰彇璇ユゼ灞傜殑鍦烘櫙
+        /// </summary>
+        /// <param name="floorId"></param>
+        /// <returns></returns>
+        public List<SceneUI> GetSceneUIsByFloorId(string floorId)
+        {
+            var rooms = GetRoomsByFloorId(floorId);
+            if (rooms == null)
+            {
+                return null;
+            }
+            var sceneList = new List<SceneUI> { };
+            foreach (var r in rooms)
+            {
+                if (r.SceneUIList.Count == 0)
+                {
+                    continue;
+                }
+                foreach (var sceneUI in r.SceneUIList)
+                {
+                    if (sceneUI == null)
+                    {
+                        continue;
+                    }
+                    sceneList.Add(sceneUI);
+                }
+            }
+            return sceneList;
+        }
+
+        /// <summary>
+        /// 鑾峰彇鏈垎閰嶅尯鍩熷満鏅�
+        /// </summary>
+        /// <returns></returns>
+        public List<SceneUI> GetUnalloctedScenes()
+        {
+            List<SceneUI> sceneUIs = new List<SceneUI> { };
+            var sList = AllRoomSceneUIFilepathList;
+
+            List<string> sfile = new List<string> { };
+            foreach (var path in Global.FileListByHomeId())
+            {
+                if (path.StartsWith("Scene_", StringComparison.Ordinal))
+                {
+                    sfile.Add(path);
+                }
+            }
+            foreach (var path in sfile)
+            {
+                if (sList.Find((obj) => obj == path) == null)
+                {
+                    var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(path));
+                    var tempSceneUI = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneUI>(jsonInfo);
+                    if (tempSceneUI != null)
+                    {
+                        sceneUIs.Add(tempSceneUI);
+                    }
+                }
+            }
+            if (sceneUIs.Count == 0)
+            {
+                return null;
+            }
+            return sceneUIs;
+        }
+
         #endregion
 
         #region 鈼� 鍒锋柊鍦烘櫙_________________________

--
Gitblit v1.8.0