From 9064c76e6a795ae735cac52d98bed178a27c2a87 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期五, 10 一月 2020 16:38:16 +0800
Subject: [PATCH] 合并代码

---
 ZigbeeApp/Shared/Common/Room.cs |  129 ++++++++++++++++++++++++++++++++++--------
 1 files changed, 104 insertions(+), 25 deletions(-)

diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index 8310b10..d5612e4 100755
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -98,6 +98,7 @@
             {
                 if (m_CurrentRoom == null && Lists.Count > 0)
                 {
+                    if (m_CurrentRoom == null) { m_CurrentRoom = Lists[0]; }
                     return Lists[0];
                 }
                 return m_CurrentRoom;
@@ -193,6 +194,10 @@
                 var sceneList = new List<SceneUI> { };
                 foreach (var r in Shared.Common.Room.Lists)
                 {
+                    if(r.IsLove)
+                    {
+                        continue;
+                    }
                     if (r.SceneUIList.Count == 0)
                     {
                         continue;
@@ -222,6 +227,11 @@
                 var pathList = new List<string> { };
                 foreach (var r in Lists)
                 {
+                    if(r.IsLove)
+                    {
+                        continue;
+                    }
+
                     if (r.SceneUIFilePathList.Count == 0)
                     {
                         continue;
@@ -263,7 +273,7 @@
                 for (int i = 0; i < Lists.Count; i++)
                 {
                     var room = Lists[i];
-                    if (room.IsSharedRoom)
+                    if (room.IsSharedRoom || room.IsLove)
                     {
                         continue;
                     }
@@ -335,6 +345,7 @@
 
                 }
             }
+
             Config.Instance.Home.InitFloor();
 
             CurrentRoom.RefreshRoomListView();
@@ -356,7 +367,6 @@
         /// </summary>
         public static void RefreshAllRoomByLocation()
         {
-            Lists.Clear();
             var homeTemp = Config.Instance.Home;
             homeTemp.RoomFilePathList.Clear();
 
@@ -367,7 +377,7 @@
             if (listFile.Contains(fRoom) == true)
             {
                 listFile.Remove(fRoom);
-                homeTemp.AddRoomListFilePath(fRoom);
+                homeTemp.RoomFilePathList.Add(fRoom);
             }
 
             var listRoomFile = new List<string>();
@@ -375,7 +385,7 @@
             {
                 if (fileName.StartsWith("Room_"))
                 {
-                    homeTemp.AddRoomListFilePath(fileName);
+                    homeTemp.RoomFilePathList.Add(fileName);
                     listRoomFile.Add(fileName);
                 }
             }
@@ -696,11 +706,24 @@
         /// <returns></returns>
         public List<Room> GetRoomsByFloorId(string id)
         {
-            if (Config.Instance.Home.FloorDics.Count == 0)
+            try
             {
-                return Lists;
+                if (Lists == null || Lists.Count == 0 || Lists.Count == 1)
+                {
+                    return null;
+                }
+                if (Config.Instance.Home.FloorDics.Count == 0)
+                {
+                    return Lists;
+                }
+                return Lists.FindAll((obj) => obj.FloorId == id);
             }
-            return Lists.FindAll((obj) => obj.FloorId == id);
+            catch(Exception ex)
+            {
+                System.Console.WriteLine(ex.Message);
+                return null;
+            }
+            
         }
         /// <summary>
         /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂村悕绉�
@@ -904,8 +927,6 @@
                 //淇濆瓨鍒版湰鍦�
                 Save();
 
-                //娣诲姞鑷姩澶囦唤
-                HdlAutoBackupLogic.AddOrEditorFile(FileName);
                 if (saveRealRoom == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1)
                 {
                     //濡傛灉鍙湁涓�涓洖璺�,鍒欎慨鏀圭湡瀹炵墿鐞嗚澶囩殑鎴块棿
@@ -1185,17 +1206,8 @@
         /// <param name="scene">Scene.</param>
         public void AddScene(SceneUI scene)
         {
-            //var sceneUI = new SceneUI
-            //{
-            //    Name = scene.Name,
-            //    Id = scene.Id,
-            //    IconPath = scene.IconPath,
-            //    IconPathType = scene.IconPathType,
-            //    AddSceneMemberDataList = scene.AddSceneMemberDataList
-            //};
             SceneUIList.Add(scene);
             SceneUIFilePathList.Add(scene.FileName);
-            scene.Save();
             Save();
         }
 
@@ -1205,10 +1217,13 @@
         /// <param name="scene"></param>
         public void DeleteScene(SceneUI scene)
         {
-            //scene.IsCollected = false;
-            scene.Save();
-            SceneUIList.Remove(scene);
-            SceneUIFilePathList.Remove(scene.FileName);
+            var curScene = SceneUIList.Find((obj) => obj.Id == scene.Id);
+            if (curScene == null)
+            {
+                return;
+            }
+            SceneUIList.Remove(curScene);
+            SceneUIFilePathList.Remove(curScene.FileName);
             Save();
         }
 
@@ -1297,9 +1312,61 @@
             {
                 sceneUI.AddSceneMemberDataList = addCommons;
                 sceneUI.Save();
+                if (IsLove == false)
+                {
+                    var curScene = Common.Room.CurrentRoom.GetLoveRoom().SceneUIList.Find((obj) => obj.Id == sceneUI.Id);
+                    if (curScene != null)
+                    {
+                        curScene.Name = sceneUI.Name;
+                        curScene.IconPath = sceneUI.IconPath;
+                        curScene.IconPathType = sceneUI.IconPathType;
+                        curScene.AddSceneMemberDataList = sceneUI.AddSceneMemberDataList;
+                        curScene.SceneDelayTime = sceneUI.SceneDelayTime;
+                        curScene.Save(false);
+                        Common.Room.CurrentRoom.GetLoveRoom().Save();
+                    }
+                }
                 return 1;
             }
             return 0;
+        }
+
+        /// <summary>
+        /// 璁剧疆銆佸悓姝ュ欢鏃舵椂闂�
+        /// </summary>
+        /// <param name="scene"></param>
+        public void ModifySceneDelayTime(SceneUI scene)
+        {
+            if (IsLove)
+            {
+                foreach (var r in Lists)
+                {
+                    if (r.IsLove || r.SceneUIList.Count == 0)
+                    {
+                        continue;
+                    }
+                    foreach (var sce in r.SceneUIList)
+                    {
+                        if (sce.Id == scene.Id)
+                        {
+                            sce.SceneDelayTime = scene.SceneDelayTime;
+                            sce.Save(false);
+                            r.Save(false);
+                            break;
+                        }
+                    }
+                }
+            }
+            else
+            {
+                var curScene = Common.Room.CurrentRoom.GetLoveRoom().SceneUIList.Find((obj) => obj.Id == scene.Id);
+                if (curScene != null)
+                {
+                    curScene.SceneDelayTime = scene.SceneDelayTime;
+                    curScene.Save(false);
+                    Common.Room.CurrentRoom.GetLoveRoom().Save(false);
+                }
+            }
         }
 
         #endregion
@@ -1316,9 +1383,16 @@
             {
                 return;
             }
-            SceneUIList.Remove(sceneUI);
-            SceneUIFilePathList.Remove(sceneUI.FileName);
-            Save();
+
+            if (sceneUI.IconPathType == 1 || sceneUI.IconPathType == 2)
+            {
+                if (Global.IsExistsByHomeId(sceneUI.IconPath))
+                {
+                    Global.DeleteFilebyHomeId(sceneUI.IconPath);
+                    HdlAutoBackupLogic.DeleteFile(sceneUI.IconPath);
+                }
+            }
+
             if (IsLove == false)
             {
                 if (CurrentRoom.GetLoveRoom().SceneUIList.Find((obj) => obj.Id == sceneUI.Id) != null)
@@ -1326,6 +1400,11 @@
                     CurrentRoom.GetLoveRoom().DeleteScene(sceneUI);
                 }
             }
+
+            SceneUIList.Remove(sceneUI);
+            SceneUIFilePathList.Remove(sceneUI.FileName);
+            Save();
+            
             Global.DeleteFilebyHomeId(sceneUI.FileName);
             HdlAutoBackupLogic.DeleteFile(sceneUI.FileName);
         }

--
Gitblit v1.8.0