From e79b65b97a8ae1eae5ee172dea1b52d041006599 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期三, 02 九月 2020 17:24:32 +0800
Subject: [PATCH] 2020-09-02-3
---
ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs | 595 +++++++++++++++++++++++++++++++++++++----------------------
1 files changed, 375 insertions(+), 220 deletions(-)
diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Logic/HdlRoomLogic.cs
index a44eb08..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(() =>
{
- Phone.Device.Room.RoomManagement.Instance.Show();
+ 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
@@ -307,10 +378,19 @@
/// </summary>
/// <returns>鎴块棿鍚�</returns>
/// <param name="device">璁惧瀵硅薄</param>
- /// <param name="append">鍦ㄦゼ灞傚拰鎴块棿鍚嶅瓧鐨勪腑闂存坊鍔犵殑瀛楃(浠呴檺鏈夋ゼ灞傜殑鏃跺�欐湁鏁�)</param>
- public string GetRoomNameByDevice(CommonDevice device, string append = " ")
+ public string GetRoomNameByDevice(CommonDevice device)
{
var room = this.GetRoomByDevice(device);
+ return this.GetRoomName(room);
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎴块棿鍚嶅瓧(妤煎眰+鎴块棿鍚�)
+ /// </summary>
+ /// <returns>鎴块棿鍚�</returns>
+ /// <param name="room">鎴块棿瀵硅薄</param>
+ public string GetRoomName(Room room)
+ {
if (room == null)
{
//鏈垎閰嶅尯鍩�
@@ -319,7 +399,7 @@
if (Config.Instance.Home.FloorDics.ContainsKey(room.FloorId) == true)
{
//(妤煎眰+鎴块棿鍚�)
- return Config.Instance.Home.FloorDics[room.FloorId] + append + room.Name;
+ return Config.Instance.Home.FloorDics[room.FloorId] + " " + room.Name;
}
return room.Name;
}
@@ -410,7 +490,7 @@
}
}
}
- return listRoom;
+ return this.SortRoom(listRoom);
}
/// <summary>
@@ -424,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>
@@ -485,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
@@ -510,13 +554,24 @@
/// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
public void ChangedRoom(CommonDevice device, string roomId, bool saveRealRoom = true)
{
+ //閫夋嫨鐨勬槸鏈垎閰�
+ if (roomId == string.Empty)
+ {
+ //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧
+ this.DeleteDevice(device);
+ //绉婚櫎鎴戠殑鍠滅埍
+ this.DeleteLoveDevice(device);
+ //璁惧鏀瑰彉鎴块棿鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
+ UserView.UserPage.Instance.RefreshAllForm = true;
+ return;
+ }
//鎴块棿鏄惁淇敼
if (this.IsRoomChanged(device, roomId) == false)
{
return;
}
- //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧
- this.DeleteDevice(device);
+ //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧,杩欓噷涓嶅垹闄ょ湡瀹炶澶囩殑鎴块棿
+ this.DeleteDevice(device, false);
//娣诲姞鍒版柊鐨勬埧闂�
var room = this.GetRoomById(roomId);
@@ -524,6 +579,8 @@
{
this.AddDevice(room, device, saveRealRoom);
}
+ //璁惧鏀瑰彉鎴块棿鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
+ UserView.UserPage.Instance.RefreshAllForm = true;
}
/// <summary>
@@ -540,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
@@ -615,6 +653,8 @@
//淇濆瓨鍒版湰鍦�
loveRoom.ListDevice.Add(mainkeys);
loveRoom.Save();
+ //娣诲姞鏀惰棌璁惧鏃�,闇�瑕佸埛鏂颁富椤�
+ UserView.UserPage.Instance.RefreshAllForm = true;
}
}
}
@@ -627,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)
@@ -647,7 +695,7 @@
HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
//閫掑綊锛氬垹闄ゆ帀浠ュ墠鐨勬棫鏁版嵁瀵艰嚧鐨勫涓埧闂寸殑闂
- this.DeleteDevice(device);
+ this.DeleteDevice(device, deleteReal);
}
/// <summary>
@@ -670,6 +718,8 @@
loveRoom.Save();
//鏇存敼鑷姩澶囦唤
HdlAutoBackupLogic.AddOrEditorFile(loveRoom.FileName);
+ //娣诲姞鏀惰棌璁惧鏃�,闇�瑕佸埛鏂颁富椤�
+ UserView.UserPage.Instance.RefreshAllForm = true;
}
}
@@ -683,12 +733,28 @@
/// <returns></returns>
public List<CommonDevice> GetRoomListDevice(Room i_room)
{
- var listDevice = new List<CommonDevice>();
+ var dicSort = new Dictionary<string, List<int>>();
foreach (var mainKeys in i_room.ListDevice)
{
var device = LocalDevice.Current.GetDevice(mainKeys);
if (device != null)
{
+ if (dicSort.ContainsKey(device.DeviceAddr) == false)
+ {
+ dicSort[device.DeviceAddr] = new List<int>();
+ }
+ dicSort[device.DeviceAddr].Add(device.DeviceEpoint);
+ }
+ }
+ var listDevice = new List<CommonDevice>();
+ foreach (var strMac in dicSort.Keys)
+ {
+ var listEpont = dicSort[strMac];
+ //鎺掑簭
+ listEpont.Sort();
+ for (int i = 0; i < listEpont.Count; i++)
+ {
+ var device = LocalDevice.Current.GetDevice(strMac, listEpont[i]);
listDevice.Add(device);
}
}
@@ -747,6 +813,11 @@
var listEsxit = new HashSet<string>();
foreach (var room in this.dicRooms.Values)
{
+ if (room.IsLove == true)
+ {
+ //涓嶅寘鍚敹钘忔埧闂�
+ continue;
+ }
foreach (string mainkeys in room.ListDevice)
{
if (listEsxit.Contains(mainkeys) == false)
@@ -760,15 +831,16 @@
var commonDeviceList = LocalDevice.Current.listAllDevice;
foreach (var device in commonDeviceList)
{
+ //鍒ゆ柇璇ヨ澶囪兘鍚︽樉绀哄湪涓婚〉
+ if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false)
+ {
+ continue;
+ }
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
if (listEsxit.Contains(mainkeys) == false)
{
listDevice.Add(device);
}
- }
- if (listDevice.Count == 0)
- {
- return null;
}
return listDevice;
}
@@ -825,87 +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 || room.IsLove == true)
+ if (room.FloorId != i_floorKeys && i_floorKeys != string.Empty
+ || 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>
@@ -914,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
@@ -971,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;
@@ -986,22 +1087,76 @@
#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)
{
- //榛樿娣诲姞鍠滅埍鐨勬埧闂�--绂佹淇敼鎴块棿鍚�
- 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);
-
+ 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);
+ 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