From c7df85937f73fb347ee0b19e9c052d2d00a6df6c Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期五, 18 九月 2020 13:58:19 +0800 Subject: [PATCH] 新版本 --- ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs | 544 ++++++++++++++++++++++++++++++++--------------------- 1 files changed, 328 insertions(+), 216 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs index 4f3a0c7..91c4949 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs @@ -31,32 +31,14 @@ return m_Current; } } - /// <summary> - /// 褰撳墠閫夋嫨鐨勬埧闂� + /// 褰撳墠涓婚〉閫夋嫨鐨勬埧闂村璞� /// </summary> - private Room m_CurrentRoom = null; + public Room NowMainPageRoom = null; /// <summary> - /// 褰撳墠閫夋嫨鐨勬埧闂� + /// 褰撳墠鍒嗙被閫夋嫨鐨勬埧闂村璞� /// </summary> - public Room CurrentRoom - { - get - { - if (m_CurrentRoom == null && dicRooms.Count > 0) - { - //璁剧疆鍒濆鍊� - foreach (var room in dicRooms.Values) - { - m_CurrentRoom = room; - break; - } - } - return m_CurrentRoom; - } - set { m_CurrentRoom = value; } - } - + public Room NowCategoryRoom = null; /// <summary> /// 鎵�鏈夌殑鎴块棿淇℃伅 /// </summary> @@ -72,22 +54,27 @@ /// </summary> public void InitAllRoom() { + this.NowMainPageRoom = null; + this.NowCategoryRoom = null; + //娓呯┖鏈湴缂撳瓨 this.dicRooms.Clear(); //妫�娴嬫垜鐨勫枩鐖辫繖涓埧闂村璞� this.CheckLoveRoom(); - - foreach (var roomId in Config.Instance.Home.ListRooms) + + var listFile = HdlFileLogic.Current.GetRootPathListFile(); + foreach (var fileName in listFile) { - //浠庢枃浠堕噷闈㈣幏鍙栨埧闂村璞� - var room = this.GetRoomByFilePath($"Room_{roomId}.json"); - if (room != null) + if (fileName.StartsWith("Room_") == true) { - this.dicRooms[room.Id] = (room); + //浠庢枃浠堕噷闈㈣幏鍙栨埧闂村璞� + var room = this.GetRoomByFilePath(fileName); + if (room != null) + { + this.dicRooms[room.Id] = (room); + } } } - //璁剧疆褰撳墠妤煎眰鐨処D - Config.Instance.Home.SetCurrentFloorId(); //椤轰究鍒锋柊鍦烘櫙 HdlSceneLogic.Current.ReFreshByLocal(); //鍒锋柊鎴块棿瑙嗗浘鍒楄〃 @@ -99,17 +86,13 @@ /// </summary> public void RefreshAllRoomByLocation() { - var homeTemp = Config.Instance.Home; - homeTemp.ListRooms.Clear(); - - var listFile = Global.FileListByHomeId(); + var listFile = HdlFileLogic.Current.GetRootPathListFile(); //鎴戠殑鍠滅埍鐨勬埧闂村繀椤昏鍦ㄧ0浣嶆墠琛� string fRoom = "Room_Favorite.json"; if (listFile.Contains(fRoom) == true) { listFile.Remove(fRoom); - homeTemp.ListRooms.Add("Favorite"); } var listRoomFile = new List<string>(); @@ -118,15 +101,20 @@ if (fileName.StartsWith("Room_")) { string roomId = fileName.Replace("Room_", string.Empty).Replace(".json", string.Empty); - homeTemp.ListRooms.Add(roomId); listRoomFile.Add(fileName); } } //妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬� - this.CheckFloorData(listRoomFile); + if (UserCenterResourse.UserInfo.AuthorityNo == 3) + { + this.CheckMemberFloorData(listRoomFile); + } + else + { + this.CheckAdminFloorData(listRoomFile); + } - homeTemp.Save(false); - InitAllRoom(); + this.InitAllRoom(); } /// <summary> @@ -136,7 +124,7 @@ { Application.RunOnMainThread(() => { - MainPage.ListRoomViewFrom.Instance?.ShowForm(); + MainPage.LeftListRoomViewFrom.Instance?.RefreshListRoom(); }); } @@ -144,8 +132,12 @@ /// 妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬� /// </summary> /// <param name="listRoomFile"></param> - private void CheckFloorData(List<string> listRoomFile) + private void CheckAdminFloorData(List<string> listRoomFile) { + //娌℃湁妤煎眰,鍒欐棤闇�澶勭悊 + if (Config.Instance.Home.FloorDics.Count == 0) { return; } + + //涓讳汉鎴栬�呯鐞嗗憳鐨勮瘽,灏辨娴嬫槸鍚﹀瓨鍦ㄦ湭鍒嗛厤妤煎眰鐨勬埧闂� for (int i = 0; i < listRoomFile.Count; i++) { try @@ -165,6 +157,49 @@ } } + /// <summary> + /// 妫�娴嬫ゼ灞傛暟鎹殑鍚堟硶鎬� + /// </summary> + /// <param name="listRoomFile"></param> + private void CheckMemberFloorData(List<string> listRoomFile) + { + //娌℃湁妤煎眰,鍒欐棤闇�澶勭悊 + if (Config.Instance.Home.FloorDics.Count == 0) { return; } + + //鎴愬憳鐨勮瘽,灏辨娴嬫槸鍚﹀瓨鍦ㄦ病鏈夋埧闂寸殑妤煎眰 + var listEsixtFloor = new List<string>(); + 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); + if (roomTemp.FloorId != string.Empty && listEsixtFloor.Contains(roomTemp.FloorId) == false) + { + //鏀堕泦妤煎眰 + listEsixtFloor.Add(roomTemp.FloorId); + } + } + catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); } + } + var listDeleteId = new List<string>(); + foreach (var flootId in Config.Instance.Home.FloorDics.Keys) + { + if (listEsixtFloor.Contains(flootId) == false) + { + //濡傛灉杩欎釜id涓嶅瓨鍦ㄤ簬浠讳綍鎴块棿鐨勮瘽,鏀堕泦瀹� + listDeleteId.Add(flootId); + } + } + foreach (var deleteId in listDeleteId) + { + //鍒犻櫎杩欎釜id + Config.Instance.Home.FloorDics.Remove(deleteId); + } + Config.Instance.Home.Save(false); + } + #endregion #region 鈻� 娣诲姞鎴块棿___________________________ @@ -173,23 +208,24 @@ /// 澧炲姞鎴块棿 /// </summary> /// <param name="room">Room.</param> - public void AddRoom(Room room) + /// <param name="rorefreshRoomViewom">鏄惁鍒锋柊鎴块棿瑙嗗浘鍒楄〃鐣岄潰</param> + public void AddRoom(Room room, bool refreshRoomView = true) { - if (Global.IsExistsByHomeId(room.FileName) == true - || Config.Instance.Home.ListRooms.Contains(room.Id) == true) + if (Global.IsExistsByHomeId(room.FileName) == true) { return; } //娣诲姞鍒扮紦瀛� this.dicRooms[room.Id] = room; - //鎶婃埧闂碔D娣诲姞鍒颁綇瀹� - Config.Instance.Home.AddRoomId(room.Id); //鐢熸垚鏂囦欢 room.Save(); //澶囦唤 HdlAutoBackupLogic.AddOrEditorFile(room.FileName); - //鍒锋柊鎴块棿瑙嗗浘鍒楄〃 - this.RefreshRoomListView(); + if (refreshRoomView == true) + { + //鍒锋柊鎴块棿瑙嗗浘鍒楄〃 + this.RefreshRoomListView(); + } } #endregion @@ -200,9 +236,21 @@ /// 鍒犻櫎鎴块棿 /// </summary> /// <param name="roomId">鎴块棿ID</param> + /// <param name="refreshLeftView">鏄惁鍒锋柊宸︽粦鐣岄潰(姝ゅ彉閲忕洰鍓嶆槸缁欏垹闄ゅ叏閮ㄦ埧闂寸敤鐨�)</param> /// <returns></returns> - public void RemoveRoom(string roomId) + public void RemoveRoom(string roomId, bool refreshLeftView = true) { + if (this.NowMainPageRoom != null && this.NowMainPageRoom.Id == roomId) + { + //褰撳垹闄ょ殑鏄富椤电殑鎴块棿鐨勬椂鍊� + this.NowMainPageRoom = this.GetLoveRoom(); + } + if (this.NowCategoryRoom != null && this.NowCategoryRoom.Id == roomId) + { + //褰撳垹闄ょ殑鏄垎绫荤殑鎴块棿鐨勬椂鍊� + this.NowCategoryRoom = this.GetLoveRoom(); + } + //鏍规嵁鎴块棿Id锛岃幏鍙栨埧闂村璞� var room = this.GetRoomById(roomId); if (room == null) @@ -236,8 +284,6 @@ } loveRoom.Save(false); } - - Config.Instance.Home.RemoveRoomId(roomId); this.dicRooms.Remove(roomId); string roomFilePath = room.FileName; @@ -247,8 +293,33 @@ Global.DeleteFilebyHomeId(roomFilePath); } HdlAutoBackupLogic.DeleteFile(roomFilePath); - //鍒锋柊鎴块棿瑙嗗浘鍒楄〃 - this.RefreshRoomListView(); + + //鏍规嵁鎴块棿ID,绉婚櫎鎸囧畾鐨勭湡瀹炵墿鐞嗚澶囩殑鎵�灞炴埧闂磋褰� + Common.LocalDevice.Current.DeleteRealDeviceByRoomId(roomId); + if (refreshLeftView == true) + { + //鍒锋柊鎴块棿瑙嗗浘鍒楄〃 + this.RefreshRoomListView(); + } + } + + /// <summary> + /// 鍒犻櫎鍏ㄩ儴鐨勬埧闂� + /// </summary> + public void DeleteAllRoom() + { + var listRoomId = new List<string>(); + foreach (var room in this.dicRooms.Values) + { + if (room.IsLove == false) + { + listRoomId.Add(room.Id); + } + } + foreach (var roomId in listRoomId) + { + this.RemoveRoom(roomId, false); + } } #endregion @@ -310,7 +381,7 @@ public string GetRoomNameByDevice(CommonDevice device) { var room = this.GetRoomByDevice(device); - return this.GetFloorRoomName(room); + return this.GetRoomName(room); } /// <summary> @@ -318,7 +389,7 @@ /// </summary> /// <returns>鎴块棿鍚�</returns> /// <param name="room">鎴块棿瀵硅薄</param> - public string GetFloorRoomName(Room room) + public string GetRoomName(Room room) { if (room == null) { @@ -419,7 +490,7 @@ } } } - return listRoom; + return this.SortRoom(listRoom); } /// <summary> @@ -433,36 +504,7 @@ { listRoom.Add(room); } - return listRoom; - } - - /// <summary> - /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂村悕绉� - /// </summary> - /// <param name="id"></param> - /// <returns></returns> - public List<string> GetRoomNamesByFloorId(string id) - { - var listName = new List<string>(); - if (Config.Instance.Home.FloorDics.Count == 0) - { - //娌℃湁妤煎眰 - foreach (var room in this.dicRooms.Values) - { - listName.Add(room.Name); - } - } - else - { - foreach (var room in this.dicRooms.Values) - { - if (room.FloorId == id) - { - listName.Add(room.Name); - } - } - } - return listName; + return this.SortRoom(listRoom); } /// <summary> @@ -494,17 +536,10 @@ } } } + listRoom = this.SortRoom(listRoom); + listRoom.Insert(0, GetLoveRoom()); return listRoom; - } - - /// <summary> - /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂�(鎷兼帴浜嗐�愬父鐢ㄣ�戝湪绗竴浣�) - /// </summary> - /// <returns></returns> - public List<Room> GetRoomsByCurrentFloorIdAppendLoveRoom() - { - return this.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId); } #endregion @@ -524,6 +559,10 @@ { //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧 this.DeleteDevice(device); + //绉婚櫎鎴戠殑鍠滅埍 + this.DeleteLoveDevice(device); + //璁惧鏀瑰彉鎴块棿鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshAllForm = true; return; } //鎴块棿鏄惁淇敼 @@ -531,8 +570,8 @@ { return; } - //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧 - this.DeleteDevice(device); + //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧,杩欓噷涓嶅垹闄ょ湡瀹炶澶囩殑鎴块棿 + this.DeleteDevice(device, false); //娣诲姞鍒版柊鐨勬埧闂� var room = this.GetRoomById(roomId); @@ -540,6 +579,8 @@ { this.AddDevice(room, device, saveRealRoom); } + //璁惧鏀瑰彉鎴块棿鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshAllForm = true; } /// <summary> @@ -556,25 +597,6 @@ return true; } return false; - } - - /// <summary> - /// 鑾峰彇鎴块棿鎵�鍦ㄥ尯鍩� - /// 妤煎眰,鎴块棿鍚� - /// </summary> - /// <returns></returns> - public string GetZoneName(Room i_room) - { - if (string.IsNullOrEmpty(i_room.FloorId)) - { - return i_room.Name; - } - var floorName = Config.Instance.Home.GetFloorNameById(i_room.FloorId); - if (floorName == null) - { - return i_room.Name; - } - return $"{floorName}锛寋i_room.Name}"; } #endregion @@ -631,6 +653,8 @@ //淇濆瓨鍒版湰鍦� loveRoom.ListDevice.Add(mainkeys); loveRoom.Save(); + //娣诲姞鏀惰棌璁惧鏃�,闇�瑕佸埛鏂颁富椤� + UserView.UserPage.Instance.RefreshAllForm = true; } } } @@ -643,12 +667,20 @@ /// 鍒犻櫎璁惧(杩欎釜鍑芥暟涓嶅垹闄ゆ垜鐨勫枩鐖�) /// </summary> /// <param name="device">瑕佸垹闄ょ殑璁惧瀵硅薄</param> - public void DeleteDevice(CommonDevice device) + /// <param name="deleteReal">鏄惁鍒犻櫎鐪熷疄鐗╃悊璁惧鐨勬埧闂�</param> + public void DeleteDevice(CommonDevice device, bool deleteReal = true) { if (device == null) { return; } + //濡傛灉瀹冨彧鏈変竴涓洖璺� + if (deleteReal == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1) + { + //鍒犻櫎鎺夊畠鐨勭湡瀹炵墿鐞嗚澶囩殑鎵�鍦ㄤ綅缃� + LocalDevice.Current.DeleteRealDeviceFromRoom(device); + } + //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿 var room = this.GetRoomByDevice(device); if (room == null) @@ -663,7 +695,7 @@ HdlAutoBackupLogic.AddOrEditorFile(room.FileName); //閫掑綊锛氬垹闄ゆ帀浠ュ墠鐨勬棫鏁版嵁瀵艰嚧鐨勫涓埧闂寸殑闂 - this.DeleteDevice(device); + this.DeleteDevice(device, deleteReal); } /// <summary> @@ -686,6 +718,8 @@ loveRoom.Save(); //鏇存敼鑷姩澶囦唤 HdlAutoBackupLogic.AddOrEditorFile(loveRoom.FileName); + //娣诲姞鏀惰棌璁惧鏃�,闇�瑕佸埛鏂颁富椤� + UserView.UserPage.Instance.RefreshAllForm = true; } } @@ -863,92 +897,98 @@ #region 鈻� 妤煎眰鍜屾埧闂撮『搴忕浉鍏砡________________ /// <summary> - /// 鏍规嵁妤煎眰鐨勪富閿幏鍙栨帓搴忓悗鐨勬埧闂村垪琛�(鏀寔鏃犳ゼ灞傛ā寮�) + /// 鏍规嵁妤煎眰鐨勪富閿幏鍙栨帓搴忓悗鐨勬埧闂村垪琛�(鏀寔鏃犳ゼ灞傛ā寮�,涓嶈幏鍙栨敹钘忔埧闂�) /// </summary> /// <param name="i_floorKeys">妤煎眰鐨勪富閿�</param> /// <param name="getShard">鍒嗕韩鐨勬埧闂存槸鍚︿篃鑾峰彇</param> /// <returns></returns> public List<Room> GetFloorSortRoom(string i_floorKeys, bool getShard = true) { - Dictionary<string, List<string>> dicAllSort = new Dictionary<string, List<string>>(); - //璇诲彇鎴块棿椤哄簭 - string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile); - var strData = UserCenterLogic.LoadFileContent(fullName); - if (strData != null) + if (i_floorKeys == null) { - dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData); + i_floorKeys = string.Empty; } - - var listRoomSort = new List<string>(); - if (dicAllSort.ContainsKey(i_floorKeys) == true) - { - listRoomSort = dicAllSort[i_floorKeys]; - } - else - { - dicAllSort[i_floorKeys] = listRoomSort; - } - - var dicRoom = new Dictionary<string, Common.Room>(); + var listRoom = new List<Room>(); foreach (var room in this.dicRooms.Values) { - if (room.FloorId != i_floorKeys && i_floorKeys != string.Empty) + if (room.FloorId != i_floorKeys && i_floorKeys != string.Empty + || room.IsLove == true) { - //涓嶆槸鍚屼竴涓ゼ灞� + //涓嶆槸鍚屼竴涓ゼ灞�,涓嶈鎴戠殑鍠滅埍 continue; - } - if (room.IsLove == true) - { - //涓嶈鎴戠殑鍠滅埍 - continue; - } - if (listRoomSort.Contains(room.Id) == false) - { - //鏂版坊鍔犵殑鎴块棿 - listRoomSort.Add(room.Id); } if (getShard == false && room.IsSharedRoom == true) { //涓嶈鍒嗕韩鐨勬埧闂� continue; } - dicRoom[room.Id] = room; + listRoom.Add(room); } - - var listSortRoom = new List<Room>(); - for (int i = 0; i < listRoomSort.Count; i++) - { - if (dicRoom.ContainsKey(listRoomSort[i]) == true) - { - listSortRoom.Add(dicRoom[listRoomSort[i]]); - } - } - - //淇濆瓨椤哄簭 - UserCenterLogic.SaveFileContent(fullName, dicAllSort); - return listSortRoom; + return this.SortRoom(listRoom); } /// <summary> - /// 淇濆瓨鎴块棿鐨勯『搴� + /// 鎺掑簭鎴块棿瀵硅薄 /// </summary> - /// <param name="i_floorKeys">妤煎眰涓婚敭</param> - /// <param name="listSort">鎴块棿椤哄簭(鎴块棿鐨勪富閿�)</param> - public void SaveRoomSort(string i_floorKeys, List<string> listSort) + /// <param name="listRoom"></param> + /// <returns></returns> + public List<Room> SortRoom(List<Room> listRoom) { - Dictionary<string, List<string>> dicAllSort = new Dictionary<string, List<string>>(); - //璇诲彇鎴块棿椤哄簭 - string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile); - var strData = UserCenterLogic.LoadFileContent(fullName); - if (strData != null) + //浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴� + var listName = new List<string>(); + foreach (var room in listRoom) { - dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData); + listName.Add(room.Name); } + int numberLength = this.GetNumberMaxLength(listName); - //淇濆瓨椤哄簭 - dicAllSort[i_floorKeys] = listSort; - UserCenterLogic.SaveFileContent(fullName, dicAllSort); - dicAllSort.Clear(); + var listSort = new List<string[]>(); + foreach (var room in listRoom) + { + var strArry = new string[2]; + strArry[0] = room.Id; + strArry[1] = string.Empty; + + string value = string.Empty; + foreach (var c in room.Name) + { + if (char.IsNumber(c) == true) + { + //鏁板瓧 + value += c.ToString(); + continue; + } + else if (value != string.Empty) + { + //濡傛灉鎴块棿鍚嶅瓧甯︽湁鏁板瓧鐨勮瘽,鍒欏乏杈瑰姞闆�,鍥犱负杩欓噷鏈変釜鎺掑簭鐨勯棶棰� + strArry[1] += value.PadLeft(numberLength, '0'); + value = string.Empty; + } + strArry[1] += c.ToString(); + } + if (value != string.Empty) + { + //浠ユ暟瀛楃粨灏剧殑璇� + strArry[1] += value.PadLeft(numberLength, '0'); + } + listSort.Add(strArry); + } + //鎺掑簭 + listSort.Sort((obj1, obj2) => + { + if (obj1[1].CompareTo(obj2[1]) > 0) + { + return 1; + } + return -1; + }); + var listSortRoom = new List<Room>(); + foreach (var strArry in listSort) + { + var room = this.GetRoomById(strArry[0]); + listSortRoom.Add(room); + } + return listSortRoom; } /// <summary> @@ -957,46 +997,66 @@ /// <returns></returns> public Dictionary<string, string> GetFloorSortList() { - //璇诲彇妤煎眰椤哄簭 - var listFloorSort = new List<string>(); - string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile); - var strData = UserCenterLogic.LoadFileContent(fullName); - if (strData != null) + //娌℃湁妤煎眰 + if (Config.Instance.Home.FloorDics.Count == 0) { - listFloorSort = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(strData); + return new Dictionary<string, string>(); } - foreach (string keys in Common.Config.Instance.Home.FloorDics.Keys) + //浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴� + var listName = new List<string>(); + foreach (var floorName in Config.Instance.Home.FloorDics.Values) { - if (listFloorSort.Contains(keys) == false) - { - //鏂版坊鍔犵殑妤煎眰 - listFloorSort.Add(keys); - } + listName.Add(floorName); } + int numberLength = this.GetNumberMaxLength(listName); + var listSort = new List<string[]>(); + foreach (var floorId in Config.Instance.Home.FloorDics.Keys) + { + var strArry = new string[2]; + strArry[0] = floorId; + strArry[1] = string.Empty; + + string value = string.Empty; + string floorName = Config.Instance.Home.FloorDics[floorId]; + foreach (var c in floorName) + { + if (char.IsNumber(c) == true) + { + //鏁板瓧 + value += c.ToString(); + continue; + } + else if (value != string.Empty) + { + //濡傛灉鎴块棿鍚嶅瓧甯︽湁鏁板瓧鐨勮瘽,鍒欏乏杈瑰姞闆�,鍥犱负杩欓噷鏈変釜鎺掑簭鐨勯棶棰� + strArry[1] += value.PadLeft(numberLength, '0'); + value = string.Empty; + } + strArry[1] += c.ToString(); + } + if (value != string.Empty) + { + //浠ユ暟瀛楃粨灏剧殑璇� + strArry[1] += value.PadLeft(numberLength, '0'); + } + listSort.Add(strArry); + } + //妤煎眰鎺掑簭 + listSort.Sort((obj1, obj2) => + { + if (obj1[1].CompareTo(obj2[1]) > 0) + { + return 1; + } + return -1; + }); var dic = new Dictionary<string, string>(); - for (int i = 0; i < listFloorSort.Count; i++) + foreach (var strArry in listSort) { - if (Config.Instance.Home.FloorDics.ContainsKey(listFloorSort[i]) == true) - { - dic[listFloorSort[i]] = Config.Instance.Home.FloorDics[listFloorSort[i]]; - } + dic[strArry[0]] = Config.Instance.Home.FloorDics[strArry[0]]; } - - //淇濆瓨椤哄簭 - UserCenterLogic.SaveFileContent(fullName, listFloorSort); return dic; - } - - /// <summary> - /// 淇濆瓨妤煎眰鐨勯『搴� - /// </summary> - /// <param name="listSort">妤煎眰鐨勪富閿�</param> - public void SaveFloorSort(List<string> listSort) - { - string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile); - //淇濆瓨椤哄簭 - UserCenterLogic.SaveFileContent(fullName, listSort); } #endregion @@ -1014,9 +1074,7 @@ newRoom.Id = i_room.Id; newRoom.FloorId = i_room.FloorId; newRoom.TemperatrueDevice = i_room.TemperatrueDevice; - newRoom.Temperatrue = i_room.Temperatrue; newRoom.HumidityDevice = i_room.HumidityDevice; - newRoom.Humidity = i_room.Humidity; newRoom.Name = i_room.Name; newRoom.BackgroundImage = i_room.BackgroundImage; newRoom.BackgroundImageType = i_room.BackgroundImageType; @@ -1029,24 +1087,78 @@ #region 鈻� 涓�鑸柟娉昣__________________________ /// <summary> + /// 鑾峰彇鎴块棿鎬绘暟 + /// </summary> + /// <returns></returns> + public int GetRoomCount() + { + return this.dicRooms.Count; + } + + /// <summary> /// 妫�娴嬫垜鐨勫枩鐖辫繖涓埧闂村璞� /// </summary> private void CheckLoveRoom() { - if (Config.Instance.Home.ListRooms.Contains("Favorite") == false) + if (this.dicRooms.ContainsKey("Favorite") == true) + { + return; + } + //璇诲彇鏈湴鎴戠殑鍠滅埍鏂囦欢 + string favoriteFile = System.IO.Path.Combine(Common.Config.Instance.FullPath, "Room_Favorite.json"); + var fileContent = HdlFileLogic.Current.ReadFileTextContent(favoriteFile); + if (fileContent != null) + { + var love = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(fileContent); + this.dicRooms["Favorite"] = love; + } + else { //榛樿娣诲姞鍠滅埍鐨勬埧闂�--绂佹淇敼鎴块棿鍚� var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.jpg", Id = "Favorite" }; love.Save(false); - //娣诲姞鍒癶ouse 鎴块棿璺緞鍒楄〃 - var currentHome = Config.Instance.Home; - currentHome.ListRooms.Insert(0, love.Id); - currentHome.Save(false); - this.dicRooms["Favorite"] = love; } } + /// <summary> + /// 浠庝竴鍫嗘枃瀛椾腑,鑾峰彇杩欎竴鍫嗘枃瀛楅噷闈㈡暟瀛楀瓧绗︿覆鐨勬渶闀块暱搴� + /// </summary> + /// <param name="listText"></param> + /// <returns></returns> + private int GetNumberMaxLength(List<string> listText) + { + int maxLength = 0; + foreach (var text in listText) + { + string value = string.Empty; + foreach (var c in text) + { + if (char.IsNumber(c) == true) + { + //鏁板瓧 + value += c.ToString(); + continue; + } + else if (value != string.Empty) + { + //鍒ゆ柇鏁板瓧闀垮害 + if (maxLength <= value.Length) + { + maxLength = value.Length; + } + value = string.Empty; + } + } + //鍒ゆ柇鏁板瓧闀垮害 + if (maxLength <= value.Length) + { + maxLength = value.Length; + } + } + return maxLength; + } + #endregion } } -- Gitblit v1.8.0