From 5986f63b75bd81c6cef262c670e9251c038cbf5d Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期二, 17 十二月 2019 17:21:07 +0800 Subject: [PATCH] 合并一个版本 --- ZigbeeApp/Shared/Common/Room.cs | 85 ++++++++++++++++++++++++++++++++---------- 1 files changed, 65 insertions(+), 20 deletions(-) diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs index 2edf091..9f1c2a6 100755 --- a/ZigbeeApp/Shared/Common/Room.cs +++ b/ZigbeeApp/Shared/Common/Room.cs @@ -281,11 +281,11 @@ { //榛樿娣诲姞鍠滅埍鐨勬埧闂�--绂佹淇敼鎴块棿鍚� var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.JPG", Id = LoveRoomId }; - love.Save(true); + 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) { @@ -298,8 +298,10 @@ room.Name = $"{room.Name}"; } Lists.Add(room); + } } + Config.Instance.Home.InitFloor(); } /// <summary> @@ -321,15 +323,45 @@ homeTemp.AddRoomListFilePath(fRoom); } + var listRoomFile = new List<string>(); foreach (string fileName in listFile) { if (fileName.StartsWith("Room_")) { homeTemp.AddRoomListFilePath(fileName); + listRoomFile.Add(fileName); } } + //妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬� + CheckFloorData(listRoomFile); + homeTemp.Save(false); InitAllRoom(); + } + + /// <summary> + /// 妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬� + /// </summary> + /// <param name="listRoomFile"></param> + private static void CheckFloorData(List<string> listRoomFile) + { + for (int i = 0; i < listRoomFile.Count; i++) + { + try + { + var byteData = Global.ReadFileByHomeId(listRoomFile[i]); + string valueData = System.Text.Encoding.UTF8.GetString(byteData); + var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData); + + //妫�娴嬪涓墜鏈烘潵鍥炲垱寤�,鐒跺悗鍙堝垹闄や箣鍚�,妤煎眰鏁版嵁涓嶈兘淇濊瘉100%鍚屾鐨勯棶棰� + if (roomTemp.FloorId != string.Empty && Config.Instance.Home.FloorDics.ContainsKey(roomTemp.FloorId) == false) + { + //鏈煡妤煎眰 + Config.Instance.Home.FloorDics[roomTemp.FloorId] = Language.StringByID(R.MyInternationalizationString.uUnKnownFloor); + } + } + catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); } + } } #endregion @@ -416,8 +448,7 @@ try { var roomFile = Global.ReadFileByHomeId(roomFilePath); - var roomData = System.Text.Encoding.UTF8.GetString(roomFile); - var nowRoom = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(roomData); + var nowRoom = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(System.Text.Encoding.UTF8.GetString(roomFile)); if (null == nowRoom) { @@ -588,21 +619,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); } @@ -617,6 +652,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; @@ -646,7 +685,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) @@ -660,7 +700,7 @@ var room = this.GetRoomById(roomId); if (room != null) { - room.AddDevice(device); + room.AddDevice(device, saveRealRoom); } } @@ -749,7 +789,7 @@ #region 鈼� 娣诲姞璁惧________________________ /// <summary> - /// 娣诲姞璁惧 + /// 娣诲姞璁惧(姝ゆ柟娉曠洰鍓嶅彧缁欍�愭垜鐨勫枩鐖便�戜娇鐢�) /// </summary> /// <param name="deviceUIFilePath">Device UIF ile path.</param> public void AddDevice(string deviceUIFilePath) @@ -774,10 +814,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) { @@ -785,9 +826,6 @@ } //璁惧淇℃伅淇濆瓨鍒版湰鍦� device.Save(); - - //娣诲姞鑷姩澶囦唤 - HdlAutoBackupLogic.AddOrEditorFile(device.FilePath); var deviceUI = Common.LocalDevice.Current.GetDeviceUI(device); if (DeviceUIFilePathList.Contains(deviceUI.FileName) == false) @@ -799,6 +837,11 @@ //娣诲姞鑷姩澶囦唤 HdlAutoBackupLogic.AddOrEditorFile(FileName); + if (saveRealRoom == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1) + { + //濡傛灉鍙湁涓�涓洖璺�,鍒欎慨鏀圭湡瀹炵墿鐞嗚澶囩殑鎴块棿 + LocalDevice.Current.SaveRealDeviceRoomId(new List<CommonDevice>() { device }, this.Id, false); + } } } @@ -848,6 +891,9 @@ room.Save(); //鏇存敼鑷姩澶囦唤 HdlAutoBackupLogic.AddOrEditorFile(room.FileName); + + //閫掑綊锛氬垹闄ゆ帀浠ュ墠鐨勬棫鏁版嵁瀵艰嚧鐨勫涓埧闂寸殑闂 + this.DeleteDevice(device); } #endregion @@ -984,7 +1030,7 @@ return -1; } } - + var getSceneIdAllData = await ZigBee.Device.Scene.GetSceneNewIdAsync(sceneName); if (getSceneIdAllData == null || getSceneIdAllData.getSceneIdData == null) { @@ -1195,7 +1241,6 @@ Save(); Global.DeleteFilebyHomeId(sceneUI.FileName); HdlAutoBackupLogic.DeleteFile(sceneUI.FileName); - HdlAutoBackupLogic.AddOrEditorFile(FileName); } #endregion @@ -1470,6 +1515,6 @@ } #endregion - + } } -- Gitblit v1.8.0