From eb424d24e39bab4a245725f35deab3f234ea0f13 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期五, 13 十二月 2019 10:48:50 +0800
Subject: [PATCH] 2019.12.13
---
ZigbeeApp/Shared/Common/Room.cs | 805 +++++++++++++++++++++++++++++++++++++++-----------------
1 files changed, 556 insertions(+), 249 deletions(-)
diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index f14649b..4d255ea 100644
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -27,20 +27,33 @@
return $"Room_{Id}.json";
}
}
-
/// <summary>
/// 鎴块棿id--浣跨敤guid
/// Guid.NewGuid().ToString()
/// </summary>
public string Id = Guid.NewGuid().ToString();
-
+ /// <summary>
+ /// 妤煎眰Id
+ /// 鏂板鏃朵娇鐢℅uid
+ /// </summary>
+ public string FloorId = string.Empty;
+ /// <summary>
+ /// 妤煎眰鍚嶇О
+ /// </summary>
+ public string FloorName
+ {
+ get
+ {
+ return Config.Instance.Home.GetFloorNameById(FloorId);
+ }
+ }
/// <summary>
/// 鎴块棿鍚�
/// </summary>
public string Name = string.Empty;
/// <summary>
- /// 鎴块棿鐨勬椂鍊欒儗鏅浘
+ /// 鎴块棿鑳屾櫙鍥�
/// </summary>
public string BackgroundImage = string.Empty;
@@ -54,10 +67,35 @@
/// </summary>
public Dictionary<string, string> FloorList = new Dictionary<string, string> { };
+ /// <summary>
+ /// 娓╁害浼犳劅鍣�(璁惧涓婚敭)
+ /// </summary>
+ public string TemperatrueDevice = string.Empty;
+ /// <summary>
+ /// 婀垮害浼犳劅鍣�(璁惧涓婚敭)
+ /// </summary>
+ public string HumidityDevice = string.Empty;
+
+ /// <summary>
+ /// 褰撳墠閫夋嫨鐨勬埧闂�
+ /// </summary>
+ private static Room m_CurrentRoom = null;
/// <summary>
/// 褰撳墠閫夋嫨鐨勬埧闂�
/// </summary>
- public static Room CurrentRoom;
+ [Newtonsoft.Json.JsonIgnore]
+ public static Room CurrentRoom
+ {
+ get
+ {
+ if (m_CurrentRoom == null && Lists.Count > 0)
+ {
+ return Lists[0];
+ }
+ return m_CurrentRoom;
+ }
+ set { m_CurrentRoom = value; }
+ }
/// <summary>
/// 鎴块棿閲屾墍鏈夌殑璁惧鍒楄〃
@@ -70,6 +108,11 @@
public readonly List<string> DeviceUIFilePathList = new List<string>();
/// <summary>
+ /// 鍠滅埍鎴块棿id
+ /// </summary>
+ public const string LoveRoomId= "Favorite";
+
+ /// <summary>
/// 鏄惁鏄粯璁ゅ枩鐖辨埧闂�
/// </summary>
/// <value><c>true</c> if is love; otherwise, <c>false</c>.</value>
@@ -78,7 +121,7 @@
{
get
{
- return Id == "Favorite";
+ return Id == LoveRoomId;
}
}
@@ -87,12 +130,6 @@
/// 娉細鍒嗕韩杩囨潵鐨勬埧闂翠笉鑳藉垹闄わ紝涓嶈兘缂栬緫璇ユ埧闂达紝涓嶈兘瀵硅澶囷紙鍔熻兘锛夈�佸満鏅繘琛屽鍒犳敼
/// </summary>
public bool IsSharedRoom = false;
-
- /// <summary>
- /// 鏄惁鍙互鍒锋柊鎴块棿鏁版嵁浜�
- /// 闇�瑕佺瓑鍒濆鍖栨湰鍦拌澶囨暟鎹悗鍦ㄥ彲浠ュ垵濮嬪寲鎴块棿鏁版嵁
- /// </summary>
- public static bool canInitAllRoom;
/// <summary>
/// 鑾峰彇鍠滅埍鎴块棿鐨勬墍鏈夎澶囪矾寰�
@@ -107,18 +144,34 @@
{
return new List<string> { };
}
- var loveRoom = Lists[0];
- return loveRoom.DeviceUIFilePathList;
+ return CurrentRoom.GetLoveRoom().DeviceUIFilePathList;
}
}
/// <summary>
/// 鎵�鏈夋埧闂寸殑鎵�鏈夎澶囩被鍨�
- /// 鍏堣皟鐢� GetAllRoomDeviceTypeList()
/// </summary>
/// <value>All room device type list.</value>
[Newtonsoft.Json.JsonIgnore]
- public static List<DeviceType> AllRoomDeviceTypeList = new List<DeviceType> { };
+ public static List<DeviceType> AllRoomDeviceTypeList
+ {
+ get
+ {
+ var typeList = new List<DeviceType> { };
+ foreach (var deviceUI in AllRoomDeviceUIList)
+ {
+ if (deviceUI == null || deviceUI.CommonDevice == null)
+ {
+ continue;
+ }
+ if (!typeList.Contains(deviceUI.CommonDevice.Type))
+ {
+ typeList.Add(deviceUI.CommonDevice.Type);
+ }
+ }
+ return typeList;
+ }
+ }
/// <summary>
/// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夊満鏅�
@@ -165,11 +218,41 @@
/// <summary>
/// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
- /// 璇峰厛璋冪敤 GetAllRoomDeviceUIList()鏂规硶
/// </summary>
/// <value>All room device UIL ist.</value>
[Newtonsoft.Json.JsonIgnore]
- public static List<DeviceUI> AllRoomDeviceUIList = new List<DeviceUI> { };
+ public static List<DeviceUI> AllRoomDeviceUIList
+ {
+ get
+ {
+ List<DeviceUI> deviceList = new List<DeviceUI>();
+ for (int i = 0; i < Lists.Count; i++)
+ {
+ var room = Lists[i];
+ if (room.IsSharedRoom)
+ {
+ continue;
+ }
+ if (room.DeviceUIList.Count == 0)
+ {
+ continue;
+ }
+ for (int j = 0; j < room.DeviceUIList.Count; j++)
+ {
+ var device = room.DeviceUIList[j];
+ if (device == null || device.CommonDevice == null)
+ {
+ continue;
+ }
+ if (deviceList.Find((obj) => obj.FileName == device.FileName) == null)
+ {
+ deviceList.Add(device);
+ }
+ }
+ }
+ return deviceList;
+ }
+ }
#endregion
@@ -193,43 +276,32 @@
/// </summary>
public static void InitAllRoom()
{
- if (canInitAllRoom == false)
- {
- return;
- }
Lists.Clear();
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 = "Favorite" };
- 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)
{
var room = GetRoomByFilePath(roomFilePath);
- System.Console.WriteLine(roomFilePath);
- System.Console.WriteLine(room?.FileName);
- System.Console.WriteLine(room?.Name);
if (null != room)
{
if (room.IsSharedRoom)
{
- var sharedName = $"{room.Name}({Language.StringByID(R.MyInternationalizationString.Shared)})";
- if (Lists.Find((obj) => obj.Name == sharedName) == null)
- {
-
- }
- room.Name = $"{room.Name}({Language.StringByID(R.MyInternationalizationString.Shared)})";
- room.Save();
+ room.Name = $"{room.Name}";
}
Lists.Add(room);
+
}
}
+ Config.Instance.Home.InitFloor();
}
/// <summary>
@@ -259,7 +331,6 @@
}
}
homeTemp.Save(false);
- canInitAllRoom = true;
InitAllRoom();
}
@@ -327,6 +398,15 @@
#endregion
#region 鈼� 鑾峰彇鎴块棿________________________
+
+ /// <summary>
+ /// 鑾峰彇鍠滅埍鎴块棿
+ /// </summary>
+ /// <returns></returns>
+ public Room GetLoveRoom()
+ {
+ return CurrentRoom.GetRoomById(LoveRoomId);
+ }
/// <summary>
/// 閫氳繃璺緞鑾峰彇鎴块棿
@@ -427,6 +507,20 @@
}
/// <summary>
+ /// 鏍规嵁鎴块棿Id锛岃幏鍙栨埧闂村璞�
+ /// </summary>
+ /// <returns>The room by name.</returns>
+ /// <param name="roomId">鎴块棿ID</param>
+ public Room GetRoomById(string roomId)
+ {
+ if (string.IsNullOrEmpty(roomId))
+ {
+ return null;
+ }
+ return Lists.Find((obj) => obj.Id == roomId);
+ }
+
+ /// <summary>
/// 鏍规嵁鎴块棿鍚嶅瓧锛岃幏鍙栨埧闂村璞�
/// </summary>
/// <returns>The room by name.</returns>
@@ -437,59 +531,35 @@
}
/// <summary>
- /// 鏍规嵁璁惧鑾峰彇鎴块棿鍚嶅瓧
- /// </summary>
- /// <returns>鎴块棿鍚�</returns>
- /// <param name="device">璁惧瀵硅薄</param>
- public List<string> GetRoomListNameByDevice(CommonDevice device)
- {
- var listName = new List<string>();
- var listroom = this.GetRoomByDevice(device);
- foreach (var room in listroom)
- {
- listName.Add(room.Name);
- }
-
- return listName;
- }
-
- /// <summary>
- /// 鏍规嵁璁惧鑾峰彇鎴块棿鍚嶅瓧(澶氫釜鎴块棿鐨勬椂鍊欙紝鐢ㄢ��,鈥濆垎鍓�)
+ /// 鏍规嵁璁惧鑾峰彇鎴块棿鍚嶅瓧(妤煎眰+鎴块棿鍚�)
/// </summary>
/// <returns>鎴块棿鍚�</returns>
/// <param name="device">璁惧瀵硅薄</param>
public string GetRoomNameByDevice(CommonDevice device)
{
- var listName = this.GetRoomListNameByDevice(device);
-
- return this.GetRoomName(listName);
- }
-
- /// <summary>
- /// 鑾峰彇澶氫釜鎴块棿鐨勮繛鎺ヨ捣鏉ョ殑鍚嶅瓧
- /// </summary>
- /// <param name="listName"></param>
- /// <returns></returns>
- public string GetRoomName(List<string> listName)
- {
- if (listName.Count == 0)
- {
- //鏈垎閰嶅尯鍩�
- return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
+ var room = this.GetRoomByDevice(device);
+ if (room == null)
+ {
+ //鏈垎閰嶅尯鍩�
+ return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom);
}
- return string.Join(",", listName);
+ if (Config.Instance.Home.FloorDics.ContainsKey(room.FloorId) == true)
+ {
+ //(妤煎眰+鎴块棿鍚�)
+ return Config.Instance.Home.FloorDics[room.FloorId] + " " + room.Name;
+ }
+ return room.Name;
}
/// <summary>
- /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
+ /// 鑾峰彇璁惧鎵�鍦ㄧ殑鎴块棿
/// </summary>
/// <returns>The room by device.</returns>
/// <param name="device">璁惧瀵硅薄</param>
- public List<Room> GetRoomByDevice(CommonDevice device)
+ public Room GetRoomByDevice(CommonDevice device)
{
- var deviceUI = new DeviceUI { };
- deviceUI.DeviceFileName = device.FilePath;
- return Lists.FindAll((obj) => obj.DeviceUIFilePathList.Contains(deviceUI.FileName));
+ string deviceFile = device.FilePath;
+ return Lists.Find((obj) => obj.IsLove == false && obj.DeviceUIFilePathList.Contains(deviceFile));
}
/// <summary>
@@ -527,6 +597,67 @@
return null;
}
+ /// <summary>
+ /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂�
+ /// </summary>
+ /// <param name="id"></param>
+ /// <returns></returns>
+ public List<Room> GetRoomsByFloorId(string 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)
+ {
+ List<string> names = new List<string> { };
+ foreach (var r in Lists)
+ {
+ if (r.FloorId == id)
+ {
+ names.Add(r.Name);
+ }
+ }
+ return names;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂�(鎷兼帴浜嗐�愬父鐢ㄣ�戝湪绗竴浣�)
+ /// </summary>
+ /// <param name="id"></param>
+ /// <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;
+ }
+
+ /// <summary>
+ /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂�(鎷兼帴浜嗐�愬父鐢ㄣ�戝湪绗竴浣�)
+ /// </summary>
+ /// <returns></returns>
+ public List<Room> GetRoomsByCurrentFloorIdAppendLoveRoom()
+ {
+ if(Config.Instance.Home.FloorDics.Count==0)
+ {
+ return Lists;
+ }
+ var r = Lists.FindAll((obj) => obj.FloorId == Config.Instance.Home.CurrentFloorId);
+ r.Insert(0, GetLoveRoom());
+ return r;
+ }
#endregion
@@ -536,52 +667,38 @@
/// 璁惧鐨勬埧闂村彉鏇�
/// </summary>
/// <param name="device">璁惧瀵硅薄</param>
- /// <param name="listnewName">鏂版埧闂村悕瀛楀垪琛�</param>
- public void ChangedRoom(CommonDevice device, List<string> listnewName)
+ /// <param name="roomId">鏂版埧闂碔d</param>
+ /// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
+ public void ChangedRoom(CommonDevice device, string roomId, bool saveRealRoom = true)
{
//鎴块棿鏄惁淇敼
- if (this.IsRoomChanged(device, listnewName) == false)
+ if (this.IsRoomChanged(device, roomId) == false)
{
return;
}
- var list = new List<string>();
- list.AddRange(listnewName);
-
- //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧,浣嗘槸涓嶅垹闄I鏂囦欢
- this.DeleteDevice(device, ref list, false);
+ //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧
+ this.DeleteDevice(device);
//娣诲姞鍒版柊鐨勬埧闂�
- foreach (string newRoom in list)
- {
- var room = this.GetRoomByName(newRoom);
- if (room != null)
- {
- //涓嶈鐩朥I鏂囦欢
- room.AddDevice(device, false);
- }
+ var room = this.GetRoomById(roomId);
+ if (room != null)
+ {
+ room.AddDevice(device, saveRealRoom);
}
- }
-
+ }
+
/// <summary>
/// 鎴块棿鍚嶅瓧鏄惁鏈変慨鏀�
/// </summary>
/// <param name="device">璁惧瀵硅薄</param>
- /// <param name="listnewName">鏂版埧闂村悕瀛楀垪琛�</param>
+ /// <param name="roomId">鏂版埧闂碔d</param>
/// <returns></returns>
- public bool IsRoomChanged(CommonDevice device, List<string> listnewName)
+ public bool IsRoomChanged(CommonDevice device, string roomId)
{
- var listOld = this.GetRoomListNameByDevice(device);
- if (listOld.Count != listnewName.Count)
- {
- return true;
- }
- //涓暟涓�鏍锋椂锛屾瘮杈冨唴瀹�
- foreach (string newstring in listnewName)
- {
- if (listOld.Contains(newstring) == false)
- {
- return true;
- }
+ var room = this.GetRoomByDevice(device);
+ if (room == null || room.Id != roomId)
+ {
+ return true;
}
return false;
}
@@ -655,18 +772,18 @@
#region 鈼� 娣诲姞璁惧________________________
/// <summary>
- /// 娣诲姞璁惧
+ /// 娣诲姞璁惧(姝ゆ柟娉曠洰鍓嶅彧缁欍�愭垜鐨勫枩鐖便�戜娇鐢�)
/// </summary>
/// <param name="deviceUIFilePath">Device UIF ile path.</param>
public void AddDevice(string deviceUIFilePath)
{
if (string.IsNullOrEmpty(deviceUIFilePath))
- {
- return;
+
+ {
+ return;
}
- var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(deviceUIFilePath));
- var deviceUI = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceUI>(jsonInfo);
- if (null == deviceUI || null == deviceUI.CommonDevice)
+ var deviceUI = Common.LocalDevice.Current.GetDeviceUI(deviceUIFilePath);
+ if (null == deviceUI.CommonDevice)
{
//褰撳墠瀵硅薄鏁版嵁鏃犳晥
return;
@@ -681,11 +798,11 @@
}
/// <summary>
- /// 娣诲姞璁惧
+ /// 娣诲姞璁惧(姝ゆ柟娉曠洰鍓嶅彧缁橰oom閲岄潰浣跨敤)
/// </summary>
/// <param name="device">瑕佹坊鍔犵殑璁惧瀵硅薄</param>
- /// <param name="backUpUI">鏄惁瑕佽鐩朥I鏂囦欢</param>
- public void AddDevice(CommonDevice device, bool backUpUI = true)
+ /// <param name="saveRealRoom">鏄惁淇敼鐪熷疄鐗╃悊璁惧鐨勬埧闂�,涓嶅嚭鎰忓,杩欎釜鍊奸粯璁や负true鍗冲彲</param>
+ public void AddDevice(CommonDevice device, bool saveRealRoom)
{
if (device == null)
{
@@ -694,23 +811,7 @@
//璁惧淇℃伅淇濆瓨鍒版湰鍦�
device.Save();
- //娣诲姞鑷姩澶囦唤
- HdlAutoBackupLogic.AddOrEditorFile(device.FilePath);
-
- DeviceUI deviceUI = Common.LocalDevice.Current.GetDeviceUI(device);
- deviceUI.DeviceFileName = device.FilePath;
- if (backUpUI == true)
- {
- deviceUI.ReSave();
- }
- else
- {
- deviceUI.Save();
- }
-
- //娣诲姞鑷姩澶囦唤
- HdlAutoBackupLogic.AddOrEditorFile(deviceUI.FileName);
-
+ var deviceUI = Common.LocalDevice.Current.GetDeviceUI(device);
if (DeviceUIFilePathList.Contains(deviceUI.FileName) == false)
{
DeviceUIFilePathList.Add(deviceUI.FileName);
@@ -720,13 +821,17 @@
//娣诲姞鑷姩澶囦唤
HdlAutoBackupLogic.AddOrEditorFile(FileName);
+ if (saveRealRoom == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1)
+ {
+ //濡傛灉鍙湁涓�涓洖璺�,鍒欎慨鏀圭湡瀹炵墿鐞嗚澶囩殑鎴块棿
+ LocalDevice.Current.SaveRealDeviceRoomId(new List<CommonDevice>() { device }, this.Id, false);
+ }
}
}
#endregion
#region 鈼� 鍒犻櫎璁惧_________________________
-
/// <summary>
/// 鍒犻櫎鍔熻兘-璁惧
/// </summary>
@@ -734,11 +839,10 @@
public void DeleteDevice(string deviceUIFilePath)
{
if (deviceUIFilePath == null) return;
- if (DeviceUIFilePathList.Contains(deviceUIFilePath) && Global.IsExistsByHomeId(deviceUIFilePath))
+ if (DeviceUIFilePathList.Contains(deviceUIFilePath))
{
DeviceUIFilePathList.Remove(deviceUIFilePath);
DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUIFilePath);
- HdlAutoBackupLogic.DeleteFile(deviceUIFilePath);
Save();
}
}
@@ -747,97 +851,35 @@
/// 鍒犻櫎璁惧
/// </summary>
/// <param name="device">瑕佸垹闄ょ殑璁惧瀵硅薄</param>
- /// <param name="DeleteUi">鏄惁鍒犻櫎UI鏂囦欢</param>
- public void DeleteDevice(CommonDevice device, bool DeleteUi = true)
- {
- List<string> listNotDelRoom = new List<string>();
- //鍒犻櫎璁惧
- this.DeleteDevice(device, ref listNotDelRoom, DeleteUi);
- }
-
- /// <summary>
- /// 鍒犻櫎璁惧(鐗规畩鍑芥暟,鐜伴樁娈垫槸缁欒澶囧彉鏇存埧闂翠娇鐢ㄧ殑)
- /// </summary>
- /// <param name="device">瑕佸垹闄ょ殑璁惧瀵硅薄</param>
- /// <param name="listNotDelRoom">涓嶆墽琛屽垹闄ょ殑鎴块棿,褰撴寚瀹氱殑涓嶈兘鍒犻櫎鐨勬埧闂村瓨鍦ㄦ椂锛屼細浠庤繖涓垪琛ㄤ腑绉婚櫎锛屾渶缁堝彧鍓╀笅鏂扮殑鎴块棿</param>
- /// <param name="DeleteUi">鏄惁鍒犻櫎UI鏂囦欢</param>
- public void DeleteDevice(CommonDevice device, ref List<string> listNotDelRoom, bool DeleteUi)
+ public void DeleteDevice(CommonDevice device)
{
if (device == null)
{
return;
}
- DeviceUI deviceUI = new DeviceUI();
- deviceUI.DeviceFileName = device.FilePath;
-
- //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿锛屽洜涓哄畠鍒犵殑涓嶄竴瀹氭槸褰撳墠鎴块棿
- List<Room> listroom = this.GetRoomByDevice(device);
-
- //鍒犻櫎UI鏂囦欢
- if (DeleteUi == true && Global.IsExistsByHomeId(deviceUI.FileName) == true)
- {
- Global.DeleteFilebyHomeId(deviceUI.FileName);
- //鍒犻櫎鑷姩澶囦唤
- Phone.UserCenter.HdlAutoBackupLogic.DeleteFile(deviceUI.FileName);
- }
-
- foreach (Room room in listroom)
- {
- if (listNotDelRoom.Contains(room.Name) == true)
- {
- listNotDelRoom.Remove(room.Name);
- continue;
- }
- //绉婚櫎缂撳瓨
- if (room.DeviceUIFilePathList.Contains(deviceUI.FileName) == false)
- {
- return;
- }
- room.DeviceUIFilePathList.Remove(deviceUI.FileName);
-
- room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUI.FileName);
- room.Save();
- //鏇存敼鑷姩澶囦唤
- Phone.UserCenter.HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
- }
+ //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿
+ var room = this.GetRoomByDevice(device);
+ if (room == null)
+ {
+ return;
+ }
+ string deviceFile = device.FilePath;
+ //绉婚櫎缂撳瓨
+ if (room.DeviceUIFilePathList.Contains(deviceFile) == false)
+ {
+ return;
+ }
+ room.DeviceUIFilePathList.Remove(deviceFile);
+
+ room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceFile);
+ room.Save();
+ //鏇存敼鑷姩澶囦唤
+ HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
}
#endregion
#region 鈼� 鑾峰彇璁惧_________________________
-
- /// <summary>
- /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
- /// </summary>
- public static void GetAllRoomDeviceUIList()
- {
- List<string> devicePathList = new List<string>();
- //鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
- AllRoomDeviceUIList.Clear();
- foreach (var room in Shared.Common.Room.Lists)
- {
- if(room.IsSharedRoom)
- {
- continue;
- }
- if (room.DeviceUIList.Count == 0)
- {
- continue;
- }
- foreach (var device in room.DeviceUIList)
- {
- if (device == null || device.CommonDevice == null)
- {
- continue;
- }
- if (!devicePathList.Contains(device.FileName))
- {
- AllRoomDeviceUIList.Add(device);
- devicePathList.Add(device.FileName);
- }
- }
- }
- }
/// <summary>
/// 鏍规嵁璁惧鑾峰彇瀹冪殑UI瀵硅薄锛屽鏋滀笉瀛樺湪鍒欐柊寤�
@@ -849,23 +891,102 @@
return Common.LocalDevice.Current.GetDeviceUI(device);
}
+ /// <summary>
+ /// 鑾峰彇褰撳墠鎴块棿涓嬬殑鍏ㄩ儴璁惧
+ /// </summary>
+ /// <returns></returns>
+ public List<CommonDevice> GetRoomListDevice()
+ {
+ var listDevice = new List<CommonDevice>();
+ foreach (var device in this.DeviceUIList)
+ {
+ if (device == null || device.CommonDevice == null)
+ {
+ continue;
+ }
+ listDevice.Add(device.CommonDevice);
+ }
+ return listDevice;
+ }
+
/// <summary>
- /// 閲嶆柊鑾峰彇-鎵�鏈夋埧闂寸殑鎵�鏈夎澶囩被鍨�
+ /// 鑾峰彇鎴块棿璁惧绫诲瀷
/// </summary>
- public static void GetAllRoomDeviceTypeList()
+ /// <param name="room"></param>
+ /// <returns></returns>
+ public static List<DeviceType> GetdeviceTypes(Room room)
{
- AllRoomDeviceTypeList.Clear();
- foreach (var deviceUI in AllRoomDeviceUIList)
+ List<DeviceType> typeList = new List<DeviceType> { };
+ foreach (var deviceUI in room.DeviceUIList)
{
if (deviceUI == null || deviceUI.CommonDevice == null)
{
continue;
}
- if (!AllRoomDeviceTypeList.Contains(deviceUI.CommonDevice.Type))
+ if (!typeList.Contains(deviceUI.CommonDevice.Type))
{
- AllRoomDeviceTypeList.Add(deviceUI.CommonDevice.Type);
+ typeList.Add(deviceUI.CommonDevice.Type);
}
}
+ return typeList;
+ }
+
+ /// <summary>
+ /// 鑾峰彇璇ョ被鍨嬬殑璁惧
+ /// </summary>
+ /// <param name="room"></param>
+ /// <param name="deviceType"></param>
+ /// <returns></returns>
+ public static List<DeviceUI> GetDeviceUIs(Room room ,DeviceType deviceType)
+ {
+ List<DeviceUI> typeList = new List<DeviceUI> { };
+ foreach (var deviceUI in room.DeviceUIList)
+ {
+ if (deviceUI == null || deviceUI.CommonDevice == null)
+ {
+ continue;
+ }
+ if(deviceUI.CommonDevice.Type!=deviceType)
+ {
+ continue;
+ }
+ if (!typeList.Contains(deviceUI))
+ {
+ typeList.Add(deviceUI);
+ }
+ }
+ return typeList;
+ }
+
+ /// <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;
}
#endregion
@@ -882,25 +1003,21 @@
/// <param name="iconPathType">I鍦烘櫙鑳屾櫙鍥剧墖鏉ユ簮绫诲瀷 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱 榛樿0</param>
public async System.Threading.Tasks.Task<int> AddScene(string sceneName, string sceneIconPath, List<ZigBee.Device.Scene.AddSceneMemberData> commons, int iconPathType = 0)
{
- if (AllRoomSceneUIList.Find(s => s.Name == sceneName) != null)
+ var scenes = GetSceneUIsByFloorId(FloorId);
+ if(scenes!=null && scenes.Count>0)
{
- return -1;
+ if (scenes.Find(s => s.Name == sceneName) != null)
+ {
+ return -1;
+ }
}
+
var getSceneIdAllData = await ZigBee.Device.Scene.GetSceneNewIdAsync(sceneName);
if (getSceneIdAllData == null || getSceneIdAllData.getSceneIdData == null)
{
return 0;
}
var getSceneIdData = getSceneIdAllData.getSceneIdData;
- //寰幆鐩稿悓鎶ラ敊
- foreach (var tempSceneUI in AllRoomSceneUIList)
- {
- if (tempSceneUI.Id == getSceneIdAllData.getSceneIdData.NewScenesId)
- {
- //鍦烘櫙宸插瓨鍦�
- return -1;
- }
- }
bool result = true;
foreach (var common in commons)
@@ -908,12 +1025,13 @@
//娣诲姞鏂版垚鍛�
var addSceneMemberData = new ZigBee.Device.Scene.AddSceneMemberData
{
- DeviceAddr = common.DeviceAddr,
Type = common.Type,
+ DeviceAddr = common.DeviceAddr,
Epoint = common.Epoint,
ScenesId = getSceneIdData.NewScenesId,
TaskList = common.TaskList,
DelayTime = common.DelayTime,
+ MemberNumber=common.MemberNumber,
ElseScenesId = common.ElseScenesId
};
//common.ScenesId = getSceneIdData.NewScenesId;
@@ -963,20 +1081,55 @@
/// <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(sceneUI);
- SceneUIFilePathList.Add(sceneUI.FileName);
- sceneUI.Save();
+ //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();
}
+ /// <summary>
+ /// 鍒犻櫎鍦烘櫙
+ /// </summary>
+ /// <param name="scene"></param>
+ public void DeleteScene(SceneUI scene)
+ {
+ //scene.IsCollected = false;
+ scene.Save();
+ SceneUIList.Remove(scene);
+ SceneUIFilePathList.Remove(scene.FileName);
+ Save();
+ }
+
+ #endregion
+
+ #region 鈼� 璁惧鏄惁鏀惰棌______________________
+
+ /// <summary>
+ /// 鏄惁鏄敹钘忚澶�
+ /// </summary>
+ /// <param name="room"></param>
+ /// <param name="filePath"></param>
+ /// <returns></returns>
+ public bool IsCollectInRoom(Room room,string filePath)
+ {
+ if(room.IsLove)
+ {
+ return true;
+ }
+ if (GetLoveRoom().DeviceUIFilePathList.Find((obj) => obj == filePath) == null)
+ {
+ return false;
+ }
+ return true;
+ }
#endregion
#region 鈼� 淇敼鍦烘櫙________________________
@@ -1023,7 +1176,8 @@
ScenesId = sceneUI.Id,
TaskList = addCommon.TaskList,
DelayTime = addCommon.DelayTime,
- ElseScenesId = addCommon.ElseScenesId
+ ElseScenesId = addCommon.ElseScenesId,
+ MemberNumber=addCommon.MemberNumber
};
//娣诲姞鏂版垚鍛� 杩斿洖缁撴灉
var addSceneMemberResponseAllData = await ZigBee.Device.Scene.AddSceneMemberAsync(addSceneMemberData);
@@ -1068,7 +1222,6 @@
Save();
Global.DeleteFilebyHomeId(sceneUI.FileName);
HdlAutoBackupLogic.DeleteFile(sceneUI.FileName);
- HdlAutoBackupLogic.AddOrEditorFile(FileName);
}
#endregion
@@ -1094,7 +1247,21 @@
}
return null;
}
-
+ /// <summary>
+ /// 鑾峰彇璇ユゼ灞傛墍鏈夊満鏅�
+ /// </summary>
+ /// <param name="floorId"></param>
+ /// <returns></returns>
+ public List<SceneUI> GetSameFloorScenes(string floorId)
+ {
+ List<SceneUI> sceneUIs = new List<SceneUI> { };
+ var rooms= CurrentRoom.GetRoomsByFloorId(floorId);
+ foreach(var r in rooms)
+ {
+ sceneUIs.AddRange(r.SceneUIList);
+ }
+ return sceneUIs;
+ }
#endregion
#region 鈼� 鍒锋柊鍦烘櫙_________________________
@@ -1171,6 +1338,142 @@
#endregion
+ #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)
+ {
+ dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData);
+ }
+
+ 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>();
+ foreach (var room in Common.Room.Lists)
+ {
+ if (room.FloorId != i_floorKeys || 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;
+ }
+
+ 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;
+ }
+
+ /// <summary>
+ /// 淇濆瓨鎴块棿鐨勯『搴�
+ /// </summary>
+ /// <param name="i_floorKeys">妤煎眰涓婚敭</param>
+ /// <param name="listSort">鎴块棿椤哄簭(鎴块棿鐨勪富閿�)</param>
+ public void SaveRoomSort(string i_floorKeys, List<string> listSort)
+ {
+ 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)
+ {
+ dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData);
+ }
+
+ //淇濆瓨椤哄簭
+ dicAllSort[i_floorKeys] = listSort;
+ UserCenterLogic.SaveFileContent(fullName, dicAllSort);
+ dicAllSort.Clear();
+ }
+
+ /// <summary>
+ /// 鑾峰彇鎺掑簭鍚庣殑妤煎眰
+ /// </summary>
+ /// <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)
+ {
+ listFloorSort = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(strData);
+ }
+ foreach (string keys in Common.Config.Instance.Home.FloorDics.Keys)
+ {
+ if (listFloorSort.Contains(keys) == false)
+ {
+ //鏂版坊鍔犵殑妤煎眰
+ listFloorSort.Add(keys);
+ }
+ }
+
+ var dic = new Dictionary<string, string>();
+ for (int i = 0; i < listFloorSort.Count; i++)
+ {
+ if (Config.Instance.Home.FloorDics.ContainsKey(listFloorSort[i]) == true)
+ {
+ dic[listFloorSort[i]] = Config.Instance.Home.FloorDics[listFloorSort[i]];
+ }
+ }
+
+ //淇濆瓨椤哄簭
+ 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
+
#region 鈼� 鍏嬮殕鎴块棿瀵硅薄_____________________
/// <summary>
@@ -1182,6 +1485,9 @@
var newRoom = new Room();
//鍏嬮殕灞炴��
newRoom.Id = this.Id;
+ newRoom.FloorId = this.FloorId;
+ newRoom.TemperatrueDevice = this.TemperatrueDevice;
+ newRoom.HumidityDevice = this.HumidityDevice;
newRoom.Name = this.Name;
newRoom.BackgroundImage = this.BackgroundImage;
newRoom.BackgroundImageType = this.BackgroundImageType;
@@ -1190,5 +1496,6 @@
}
#endregion
+
}
}
--
Gitblit v1.8.0