From 4e25d344065ffd9248a254ec9d11f0bb4bbbdb5e Mon Sep 17 00:00:00 2001
From: WJC <wjc@hdlchina.com.cn>
Date: 星期一, 30 三月 2020 11:34:58 +0800
Subject: [PATCH] 2020-03-30-1
---
ZigbeeApp/Shared/Common/Room.cs | 1198 +++--------------------------------------------------------
1 files changed, 68 insertions(+), 1,130 deletions(-)
diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index c9ca441..c17db61 100755
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -12,66 +12,12 @@
/// </summary>
[System.Serializable]
public class Room
- {
- #region 鈼� 鍙橀噺____________________________
+ {
+ #region 鈻� 鍙橀噺澹版槑___________________________
/// <summary>
- /// 鎴块棿鏂囦欢
+ /// 鏄惁鏄枩鐖辨埧闂�
/// </summary>
- /// <value>The name of the file.</value>
- [Newtonsoft.Json.JsonIgnore]
- public string FileName
- {
- get
- {
- return $"Room_{Id}.json";
- }
- }
- /// <summary>
- /// 鎴块棿id--浣跨敤guid
- /// Guid.NewGuid().ToString()
- /// </summary>
- public string Id = Guid.NewGuid().ToString();
-
- /// <summary>
- /// 鎴块棿鍚�
- /// </summary>
- public string Name = string.Empty;
-
- /// <summary>
- /// 鎴块棿鐨勬椂鍊欒儗鏅浘
- /// </summary>
- public string BackgroundImage = string.Empty;
-
- /// <summary>
- /// 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱
- /// </summary>
- public int BackgroundImageType = 0;
-
- /// <summary>
- /// 妤煎眰--澶囩敤
- /// </summary>
- public Dictionary<string, string> FloorList = new Dictionary<string, string> { };
-
- /// <summary>
- /// 褰撳墠閫夋嫨鐨勬埧闂�
- /// </summary>
- public static Room CurrentRoom;
-
- /// <summary>
- /// 鎴块棿閲屾墍鏈夌殑璁惧鍒楄〃
- /// </summary>
- [Newtonsoft.Json.JsonIgnore]
- public List<DeviceUI> DeviceUIList = new List<DeviceUI> { };
- /// <summary>
- ///璁惧鏂囦欢璺緞鍒楄〃
- /// </summary>
- public readonly List<string> DeviceUIFilePathList = new List<string>();
-
- /// <summary>
- /// 鏄惁鏄粯璁ゅ枩鐖辨埧闂�
- /// </summary>
- /// <value><c>true</c> if is love; otherwise, <c>false</c>.</value>
[Newtonsoft.Json.JsonIgnore]
public bool IsLove
{
@@ -79,1094 +25,86 @@
{
return Id == "Favorite";
}
+ }
+ /// <summary>
+ /// 鎴块棿鏂囦欢
+ /// </summary>
+ [Newtonsoft.Json.JsonIgnore]
+ public string FileName
+ {
+ get
+ {
+ return $"Room_{Id}.json";
+ }
}
+ /// <summary>
+ /// 鎴块棿id--浣跨敤guid
+ /// </summary>
+ public string Id = Guid.NewGuid().ToString();
+ /// <summary>
+ /// 鎴块棿鍚�
+ /// </summary>
+ public string Name = string.Empty;
+ /// <summary>
+ /// 鎴块棿鑳屾櫙鍥�
+ /// </summary>
+ public string BackgroundImage = string.Empty;
+ /// <summary>
+ /// 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱
+ /// </summary>
+ public int BackgroundImageType = 0;
+ /// <summary>
+ /// 娓╁害浼犳劅鍣�(璁惧涓婚敭)
+ /// </summary>
+ public string TemperatrueDevice = string.Empty;
+ /// <summary>
+ /// 婀垮害浼犳劅鍣�(璁惧涓婚敭)
+ /// </summary>
+ public string HumidityDevice = string.Empty;
+ /// <summary>
+ /// 娓╁害
+ /// </summary>
+ public decimal Temperatrue;
+ /// <summary>
+ /// 婀垮害
+ /// </summary>
+ public decimal Humidity;
/// <summary>
/// 鏄惁鏄垎浜繃鏉ョ殑鎴块棿
/// 娉細鍒嗕韩杩囨潵鐨勬埧闂翠笉鑳藉垹闄わ紝涓嶈兘缂栬緫璇ユ埧闂达紝涓嶈兘瀵硅澶囷紙鍔熻兘锛夈�佸満鏅繘琛屽鍒犳敼
/// </summary>
- public bool IsSharedRoom = false;
-
+ public bool IsSharedRoom = false;
/// <summary>
- /// 鏄惁鍙互鍒锋柊鎴块棿鏁版嵁浜�
- /// 闇�瑕佺瓑鍒濆鍖栨湰鍦拌澶囨暟鎹悗鍦ㄥ彲浠ュ垵濮嬪寲鎴块棿鏁版嵁
+ /// 妤煎眰Id
/// </summary>
- public static bool canInitAllRoom;
-
- /// <summary>
- /// 鑾峰彇鍠滅埍鎴块棿鐨勬墍鏈夎澶囪矾寰�
- /// </summary>
- /// <value>The love room device list.</value>
- [Newtonsoft.Json.JsonIgnore]
- public static List<string> LoveRoomDeviceUIFilePathList
- {
- get
- {
- if (Lists.Count == 0)
- {
- return new List<string> { };
- }
- var loveRoom = Lists[0];
- return loveRoom.DeviceUIFilePathList;
- }
- }
-
- /// <summary>
- /// 鎵�鏈夋埧闂寸殑鎵�鏈夎澶囩被鍨�
- /// 鍏堣皟鐢� GetAllRoomDeviceTypeList()
- /// </summary>
- /// <value>All room device type list.</value>
- [Newtonsoft.Json.JsonIgnore]
- public static List<DeviceType> AllRoomDeviceTypeList = new List<DeviceType> { };
-
- /// <summary>
- /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夊満鏅�
- /// </summary>
- /// <value>All room scene UIL ist.</value>
- [Newtonsoft.Json.JsonIgnore]
- public static List<SceneUI> AllRoomSceneUIList
- {
- get
- {
- var sceneList = new List<SceneUI> { };
- foreach (var r in Shared.Common.Room.Lists)
- {
- if (r.SceneUIList.Count == 0)
- {
- continue;
- }
- foreach (var sceneUI in r.SceneUIList)
- {
- if (sceneUI == null)
- {
- continue;
- }
- sceneList.Add(sceneUI);
- }
- }
- return sceneList;
- }
- }
- /// <summary>
- /// 鍦烘櫙鍒楄〃---涓嶅啀搴忓垪鍖�
- /// </summary>
- [Newtonsoft.Json.JsonIgnore]
- public List<SceneUI> SceneUIList = new List<SceneUI> { };
- /// <summary>
- ///鍦烘櫙鏂囦欢鍒楄〃
- /// </summary>
- public readonly List<string> SceneUIFilePathList = new List<string>();
-
- /// <summary>
- /// 鎵�鏈夌殑鎴块棿淇℃伅
- /// </summary>
- public static List<Room> Lists = new List<Room>();
-
- /// <summary>
- /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
- /// 璇峰厛璋冪敤 GetAllRoomDeviceUIList()鏂规硶
- /// </summary>
- /// <value>All room device UIL ist.</value>
- [Newtonsoft.Json.JsonIgnore]
- public static List<DeviceUI> AllRoomDeviceUIList = new List<DeviceUI> { };
-
- #endregion
-
- #region 鈼� 鏋勯�犳柟娉昣_______________________
-
- /// <summary>
- /// 鏋勯�犳柟娉�
- /// </summary>
- static Room()
- {
- InitAllRoom();
- }
-
- #endregion
-
- #region 鈼� 鍒濆鍖朹_________________________
-
- /// <summary>
- /// 鍒濆鍖栨埧闂翠俊鎭�
- /// 浠庢枃浠朵腑鍏ㄩ儴璇诲彇鎵�鏈夌殑鎴块棿鏁版嵁鍒板唴瀛�
- /// </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);
- //娣诲姞鍒癶ouse 鎴块棿璺緞鍒楄〃
- var currentHome = Config.Instance.Home;
- currentHome.RoomFilePathList.Insert(0, love.FileName);
- currentHome.Save();
- }
- foreach (var roomFilePath in Config.Instance.Home.RoomFilePathList)
- {
- var room = GetRoomByFilePath(roomFilePath);
-
- if (null != room)
- {
- if (room.IsSharedRoom)
- {
- room.Name = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){room.Name}";
- }
- Lists.Add(room);
- }
- }
- }
-
- /// <summary>
- /// 浠庢湰鍦伴噸鏂板姞杞藉叏閮ㄧ殑鎴块棿
- /// </summary>
- public static void RefreshAllRoomByLocation()
- {
- Lists.Clear();
- var homeTemp = Config.Instance.Home;
- homeTemp.RoomFilePathList.Clear();
+ public string FloorId = string.Empty;
- var listFile = Global.FileListByHomeId();
+ /// <summary>
+ /// 鎴块棿閲屾墍鏈夌殑璁惧鍒楄〃(璁惧鐨勪富閿�:mac鍦板潃_绔彛)
+ /// </summary>
+ public List<string> ListDevice = new List<string>();
+ /// <summary>
+ ///鍦烘櫙鍒楄〃(鍦烘櫙鐨処D)
+ /// </summary>
+ public List<int> ListSceneId = new List<int>();
- //鎴戠殑鍠滅埍鐨勬埧闂村繀椤昏鍦ㄧ0浣嶆墠琛�
- string fRoom = "Room_Favorite.json";
- if (listFile.Contains(fRoom) == true)
- {
- listFile.Remove(fRoom);
- homeTemp.AddRoomListFilePath(fRoom);
- }
+ #endregion
- foreach (string fileName in listFile)
- {
- if (fileName.StartsWith("Room_"))
- {
- homeTemp.AddRoomListFilePath(fileName);
- }
- }
- homeTemp.Save(false);
- canInitAllRoom = true;
- InitAllRoom();
- }
-
- #endregion
-
- #region 鈼� 娣诲姞鎴块棿_________________________
-
- /// <summary>
- /// 澧炲姞鎴块棿
- /// </summary>
- /// <returns><c>true</c>, if room was added, <c>false</c> otherwise.</returns>
- /// <param name="room">Room.</param>
- public bool AddRoom(Room room)
- {
- if (string.IsNullOrEmpty(room.FileName) || Global.IsExistsByHomeId(room.FileName))
- {
- return false;
- }
- if (Config.Instance.Home.RoomFilePathList.Contains(room.FileName))
- {
- return false;
- }
- Lists.Add(room);
- var r = Config.Instance.Home.AddRoomListFilePath(room.FileName);
- if (r == false)
- {
- return false;
- }
- Save();
- HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
- return true;
- }
-
- #endregion
-
- #region 鈼� 鍒犻櫎鎴块棿_________________________
-
- /// <summary>
- /// 鍒犻櫎鎴块棿
- /// </summary>
- public bool Remove(string roomFilePath)
- {
- var room = GetRoomByFilePath(roomFilePath);
- if (null == room)
- {
- return false;
- }
- //鍒犻櫎鏉ヨ嚜鎷嶇収鎴栬�呯郴缁熷浘搴撶殑鎴块棿鑳屾櫙鍥剧墖
- if (room.BackgroundImageType == 1 || room.BackgroundImageType == 2)
- {
- DeleteBackGroundIamageFilebyHomeId(room.BackgroundImage);
- }
- if (Global.IsExistsByHomeId(roomFilePath) == false)
- {
- return false;
- }
- Config.Instance.Home.RemoveRoomListFilePath(roomFilePath);
- //鍒犻櫎鏂囦欢
- Global.DeleteFilebyHomeId(roomFilePath);
- Lists.Remove(room);
- HdlAutoBackupLogic.DeleteFile(roomFilePath);
- return true;
- }
-
- #endregion
-
- #region 鈼� 鑾峰彇鎴块棿________________________
-
- /// <summary>
- /// 閫氳繃璺緞鑾峰彇鎴块棿
- /// </summary>
- /// <returns>The room by file path.</returns>
- /// <param name="roomFilePath">Room file path.</param>
- public static Room GetRoomByFilePath(string roomFilePath)
- {
- try
- {
- var roomFile = Global.ReadFileByHomeId(roomFilePath);
- var nowRoom = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(System.Text.Encoding.UTF8.GetString(roomFile));
-
- if (null == nowRoom)
- {
- System.Console.WriteLine("鎴块棿鏂囦欢璺緞涓嶅锛屾枃浠惰矾寰勪负锛�" + roomFilePath);
- return null;
- }
-
- var beforeRoom = Lists.Find((obj) => obj.Id == nowRoom.Id);
- if (beforeRoom != null)
- {
- var tempDeviceUIList = new List<DeviceUI>();
- tempDeviceUIList.AddRange(beforeRoom.DeviceUIList);
- var tempSceneUIList = new List<SceneUI>();
- tempSceneUIList.AddRange(beforeRoom.SceneUIList);
- //璁惧锛坉eviceUI锛�
- beforeRoom.DeviceUIList.Clear();
- foreach (var deviceFilePath in beforeRoom.DeviceUIFilePathList)
- {
- var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(deviceFilePath));
- var tempDeviceUI = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceUI>(jsonInfo);
- if (tempDeviceUI != null)
- {
- var delCommon = tempDeviceUIList.Find((obj) => obj.CommonDevice != null && tempDeviceUI.CommonDevice != null && obj.CommonDevice.Type == tempDeviceUI.CommonDevice.Type && obj.CommonDevice.CommonDeviceAddrEpoint == tempDeviceUI.CommonDevice.CommonDeviceAddrEpoint);
- if (delCommon != null)
- {
- beforeRoom.DeviceUIList.Add(delCommon);
- }
- else
- {
- beforeRoom.AddDevice(deviceFilePath);
- }
- }
- }
- //鍦烘櫙(SceneUI)
- beforeRoom.SceneUIList.Clear();
- foreach (var sceneFilePath in beforeRoom.SceneUIFilePathList)
- {
- var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(sceneFilePath));
- var tempSceneUI = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneUI>(jsonInfo);
- if (tempSceneUI != null)
- {
- var scene = tempSceneUIList.Find((obj) => obj.FileName == tempSceneUI.FileName);
- if (scene != null)
- {
- beforeRoom.SceneUIList.Add(scene);
- }
- else
- {
- beforeRoom.AddScene(scene);
- }
- }
- }
-
- return beforeRoom;
- }
-
- //璁惧锛坉eviceUI锛�
- nowRoom.DeviceUIList.Clear();
- foreach (var deviceFilePath in nowRoom.DeviceUIFilePathList)
- {
- var tempCommon = LocalDevice.Current.GetDeviceUI(deviceFilePath);
- if (tempCommon == null || tempCommon.CommonDevice == null)
- {
- continue;
- }
- nowRoom.DeviceUIList.Add(tempCommon);
- }
- //鍦烘櫙(SceneUI)
- nowRoom.SceneUIList.Clear();
- foreach (var sceneUIFilePath in nowRoom.SceneUIFilePathList)
- {
- var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(sceneUIFilePath));
- var tempScene = Newtonsoft.Json.JsonConvert.DeserializeObject<SceneUI>(jsonInfo);
- if (tempScene == null)
- {
- continue;
- }
- nowRoom.SceneUIList.Add(tempScene);
- }
- return nowRoom;
- }
- catch(Exception ex)
- {
- return null;
- }
- }
-
- /// <summary>
- /// 鏍规嵁鎴块棿鍚嶅瓧锛岃幏鍙栨埧闂村璞�
- /// </summary>
- /// <returns>The room by name.</returns>
- /// <param name="roomName">鎴块棿鍚�</param>
- public Room GetRoomByName(string roomName)
- {
- return Lists.Find((obj) => obj.Name == roomName);
- }
-
- /// <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);
- }
- return string.Join(",", listName);
- }
-
- /// <summary>
- /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
- /// </summary>
- /// <returns>The room by device.</returns>
- /// <param name="device">璁惧瀵硅薄</param>
- public List<Room> GetRoomByDevice(CommonDevice device)
- {
- var deviceUI = new DeviceUI { };
- deviceUI.DeviceAddr = device.DeviceAddr;
- deviceUI.DeviceEpoint = device.DeviceEpoint;
-
- return Lists.FindAll((obj) => obj.DeviceUIFilePathList.Contains(deviceUI.FileName));
- }
-
- /// <summary>
- /// 閫氳繃鍦烘櫙id鑾峰彇鎴块棿鍚�
- /// </summary>
- /// <returns>The room name by scene identifier.</returns>
- /// <param name="sceneId">Scene identifier.</param>
- public string GetRoomNameBySceneId(int sceneId)
- {
- var room = GetRoomBySceneId(sceneId);
- if (room == null)
- {
- return null;
- }
- return room.Name;
- }
-
- /// <summary>
- /// 閫氳繃鍦烘櫙id鑾峰彇鎴块棿瀵硅薄
- /// </summary>
- /// <returns>The room by scene identifier.</returns>
- /// <param name="sceneId">Scene identifier.</param>
- public Room GetRoomBySceneId(int sceneId)
- {
- foreach (var r in Lists)
- {
- foreach (var scene in r.SceneUIList)
- {
- if (scene.Id == sceneId)
- {
- return r;
- }
- }
- }
- return null;
- }
-
-
- #endregion
-
- #region 鈼� 鎴块棿鏂规硶________________________
-
- /// <summary>
- /// 璁惧鐨勬埧闂村彉鏇�
- /// </summary>
- /// <param name="device">璁惧瀵硅薄</param>
- /// <param name="listnewName">鏂版埧闂村悕瀛楀垪琛�</param>
- public void ChangedRoom(CommonDevice device, List<string> listnewName)
- {
- //鎴块棿鏄惁淇敼
- if (this.IsRoomChanged(device, listnewName) == false)
- {
- return;
- }
- var list = new List<string>();
- list.AddRange(listnewName);
-
- //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧,浣嗘槸涓嶅垹闄I鏂囦欢
- this.DeleteDevice(device, ref list, false);
-
- //娣诲姞鍒版柊鐨勬埧闂�
- foreach (string newRoom in list)
- {
- var room = this.GetRoomByName(newRoom);
- if (room != null)
- {
- //涓嶈鐩朥I鏂囦欢
- room.AddDevice(device, false);
- }
- }
- }
-
- /// <summary>
- /// 鎴块棿鍚嶅瓧鏄惁鏈変慨鏀�
- /// </summary>
- /// <param name="device">璁惧瀵硅薄</param>
- /// <param name="listnewName">鏂版埧闂村悕瀛楀垪琛�</param>
- /// <returns></returns>
- public bool IsRoomChanged(CommonDevice device, List<string> listnewName)
- {
- var listOld = this.GetRoomListNameByDevice(device);
- if (listOld.Count != listnewName.Count)
- {
- return true;
- }
- //涓暟涓�鏍锋椂锛屾瘮杈冨唴瀹�
- foreach (string newstring in listnewName)
- {
- if (listOld.Contains(newstring) == false)
- {
- return true;
- }
- }
- return false;
- }
-
- #endregion
-
- #region 鈼� 鏇存柊鎴块棿_________________________
-
- /// <summary>
- /// Updates the memorry.
- /// </summary>
- /// <param name="roomFilePath">Room file path.</param>
- public static void UpdateMemorry(string roomFilePath)
- {
- GetRoomByFilePath(roomFilePath);
- }
-
- #endregion
-
- #region 鈼� 鎴块棿鑳屾櫙鍥剧殑鐩稿叧___________________
- /// <summary>
- /// 鍒犻櫎鑳屾櫙鍥剧墖
- /// </summary>
- /// <param name="fileName">fileName瀹為檯涓婂寘鍚簡浣忓畢璺姴 濡� 浣忓畢/鏂囦欢鍚�.</param>
- public static void DeleteBackGroundIamageFilebyHomeId(string fileName)
- {
- if (fileName == null)
- {
- return;
- }
- var pathLists = fileName.Split('/');
- if (pathLists == null || pathLists.Count() < 9 || pathLists[8] == null)
- {
- return;
- }
- var path = System.IO.Path.Combine(Config.Instance.FullPath, fileName);
- if (!Global.IsExistsByHomeId(pathLists[8]))
- {
- return;
- }
- //鍒犻櫎鏈湴鍥剧墖
- System.IO.File.Delete(path);
- //鍒犻櫎澶囦唤
- Phone.UserCenter.HdlAutoBackupLogic.DeleteFile(pathLists[8]);
- }
-
- /// <summary>
- /// 绉诲姩鑳屾櫙鍥剧墖鍒颁綇瀹呯洰褰曚笅
- /// </summary>
- /// <param name="oldFile">闇�瑕佺Щ鍔ㄧ殑鏂囦欢(鐩存帴鏂囦欢鍚�)</param>
- /// <param name="newFile">瑕佺Щ鍔ㄥ埌鐨勪綅缃�-(鍖呭惈浣忓畢璺緞锛氫綇瀹�/鏂囦欢鍚�)</param>
- public void MoveBackGroundIamageFileToDirectory(string oldFile, string newFile)
- {
- try
- {
- var newPath = System.IO.Path.Combine(Config.Instance.FullPath, newFile);
- var path = System.IO.Path.Combine(Shared.IO.FileUtils.RootPath,oldFile);
- Global.MoveFileToDirectory(path, newPath);
- //澶囦唤
- Phone.UserCenter.HdlAutoBackupLogic.AddOrEditorFile(oldFile);
- //Save();
- }
- catch (Exception ex)
- {
- System.Console.WriteLine("绉诲姩鍥剧墖寮傚父 " + ex.Message);
- }
- }
-
- #endregion
-
- #region 鈼� 娣诲姞璁惧________________________
-
- /// <summary>
- /// 娣诲姞璁惧
- /// </summary>
- /// <param name="deviceUIFilePath">Device UIF ile path.</param>
- public void AddDevice(string deviceUIFilePath)
- {
- if (string.IsNullOrEmpty(deviceUIFilePath))
- {
- return;
- }
- var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(deviceUIFilePath));
- var deviceUI = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceUI>(jsonInfo);
- if (null == deviceUI || null == deviceUI.CommonDevice)
- {
- //褰撳墠瀵硅薄鏁版嵁鏃犳晥
- return;
- }
- if (!DeviceUIFilePathList.Contains(deviceUIFilePath) && !DeviceUIList.Contains(deviceUI))
- {
- DeviceUIFilePathList.Add(deviceUIFilePath);
- DeviceUIList.Add(deviceUI);
- }
- //淇濆瓨鍒版湰鍦�
- Save();
- }
-
- /// <summary>
- /// 娣诲姞璁惧
- /// </summary>
- /// <param name="device">瑕佹坊鍔犵殑璁惧瀵硅薄</param>
- /// <param name="backUpUI">鏄惁瑕佽鐩朥I鏂囦欢</param>
- public void AddDevice(CommonDevice device, bool backUpUI = true)
- {
- if (device == null)
- {
- return;
- }
- //璁惧淇℃伅淇濆瓨鍒版湰鍦�
- device.Save();
-
- //娣诲姞鑷姩澶囦唤
- HdlAutoBackupLogic.AddOrEditorFile(device.FilePath);
-
- DeviceUI deviceUI = Common.LocalDevice.Current.GetDeviceUI(device);
- if (DeviceUIFilePathList.Contains(deviceUI.FileName) == false)
- {
- DeviceUIFilePathList.Add(deviceUI.FileName);
- DeviceUIList.Add(deviceUI);
- //淇濆瓨鍒版湰鍦�
- Save();
-
- //娣诲姞鑷姩澶囦唤
- HdlAutoBackupLogic.AddOrEditorFile(FileName);
- }
- }
-
- #endregion
-
- #region 鈼� 鍒犻櫎璁惧_________________________
-
- /// <summary>
- /// 鍒犻櫎鍔熻兘-璁惧
- /// </summary>
- /// <param name="deviceUIFilePath">Device UIF ile path.</param>
- public void DeleteDevice(string deviceUIFilePath)
- {
- if (deviceUIFilePath == null) return;
- if (DeviceUIFilePathList.Contains(deviceUIFilePath) && Global.IsExistsByHomeId(deviceUIFilePath))
- {
- DeviceUIFilePathList.Remove(deviceUIFilePath);
- DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUIFilePath);
- HdlAutoBackupLogic.DeleteFile(deviceUIFilePath);
- Save();
- }
- }
-
- /// <summary>
- /// 鍒犻櫎璁惧
- /// </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)
- {
- if (device == null)
- {
- return;
- }
- DeviceUI deviceUI = new DeviceUI();
- deviceUI.DeviceAddr = device.DeviceAddr;
- deviceUI.DeviceEpoint = device.DeviceEpoint;
-
- //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿锛屽洜涓哄畠鍒犵殑涓嶄竴瀹氭槸褰撳墠鎴块棿
- 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);
- }
- }
-
- #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瀵硅薄锛屽鏋滀笉瀛樺湪鍒欐柊寤�
- /// </summary>
- /// <returns>The device user interface.</returns>
- /// <param name="device">璁惧瀵硅薄</param>
- public DeviceUI GetDeviceUI(CommonDevice device)
- {
- return Common.LocalDevice.Current.GetDeviceUI(device);
- }
-
- /// <summary>
- /// 閲嶆柊鑾峰彇-鎵�鏈夋埧闂寸殑鎵�鏈夎澶囩被鍨�
- /// </summary>
- public static void GetAllRoomDeviceTypeList()
- {
- AllRoomDeviceTypeList.Clear();
- foreach (var deviceUI in AllRoomDeviceUIList)
- {
- if (deviceUI == null || deviceUI.CommonDevice == null)
- {
- continue;
- }
- if (!AllRoomDeviceTypeList.Contains(deviceUI.CommonDevice.Type))
- {
- AllRoomDeviceTypeList.Add(deviceUI.CommonDevice.Type);
- }
- }
- }
-
- #endregion
-
- #region 鈼� 娣诲姞鍦烘櫙_________________________
-
- /// <summary>
- /// 娣诲姞鍦烘櫙 0澶辫触 1鎴愬姛 -1宸茬粡瀛樺湪
- /// </summary>
- /// <returns>The scene.</returns>
- /// <param name="sceneName">Scene name.</param>
- /// <param name="sceneIconPath">鑳屾櫙鍥剧墖锛屼笉鍖呭惈浣忓畢璺緞 濡傛灉iconPathType=1鎴栬��2 闇�瑕佹嫾鎺ヤ綇瀹� 鍙樻垚 浣忓畢/sceneIconPath</param>
- /// <param name="commons">Commons.</param>
- /// <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)
- {
- 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)
- {
- //娣诲姞鏂版垚鍛�
- var addSceneMemberData = new ZigBee.Device.Scene.AddSceneMemberData
- {
- DeviceAddr = common.DeviceAddr,
- Type = common.Type,
- Epoint = common.Epoint,
- ScenesId = getSceneIdData.NewScenesId,
- TaskList = common.TaskList,
- DelayTime = common.DelayTime,
- ElseScenesId = common.ElseScenesId
- };
- //common.ScenesId = getSceneIdData.NewScenesId;
- //娣诲姞鏂版垚鍛� 杩斿洖缁撴灉
- var addSceneMemberResponseAllData = await ZigBee.Device.Scene.AddSceneMemberAsync(addSceneMemberData);
- if (addSceneMemberResponseAllData == null || addSceneMemberResponseAllData.addSceneMemberResponseData == null)
- {
- continue;
- }
- var addSceneMemberResponseData = addSceneMemberResponseAllData.addSceneMemberResponseData;
- if (addSceneMemberResponseData == null && addSceneMemberResponseData.Result != 1)
- {
- result = false;
- }
- }
- //鍔犲叆鎴愬姛
- if (result)
- {
- //iconPathType=0 鐩存帴浼犲�硷紝 iconPathType=1鍜宨conPathType=2闇�瑕佹嫾鎺ヤ綇瀹呰矾寰�
- var fullPath = sceneIconPath;
- if (iconPathType == 1 || iconPathType == 2)
- {
- Common.Room.CurrentRoom.MoveBackGroundIamageFileToDirectory(sceneIconPath, $"{Config.Instance.FullPath}/{sceneIconPath}");
- fullPath = $"{Config.Instance.FullPath}/{sceneIconPath}";
- }
- var sceneUI = new SceneUI
- {
- Name = sceneName,
- Id = getSceneIdData.NewScenesId,
- IconPath = fullPath,
- IconPathType = iconPathType,
- AddSceneMemberDataList= commons
- };
- SceneUIList.Add(sceneUI);
- SceneUIFilePathList.Add(sceneUI.FileName);
- sceneUI.Save();
- Save();
- HdlAutoBackupLogic.AddOrEditorFile(sceneUI.FileName);
- return 1;
- }
- return 0;
- }
-
- /// <summary>
- /// 娣诲姞鍦烘櫙
- /// </summary>
- /// <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();
- Save();
- }
-
- #endregion
-
- #region 鈼� 淇敼鍦烘櫙________________________
-
- /// <summary>
- /// 淇敼鍦烘櫙璁惧 0澶辫触 1鎴愬姛
- /// </summary>
- /// <returns>The scene.</returns>
- /// <param name="sceneUI">Scene user interface.</param>
- /// <param name="sceneRemoveMemberData">Scene remove member data.</param>
- /// <param name="addCommons">Add commons.</param>
- public async System.Threading.Tasks.Task<int> ModifyScene(SceneUI sceneUI, Scene.SceneRemoveMemberData sceneRemoveMemberData, List<Scene.AddSceneMemberData> addCommons)
- {
- if (AllRoomSceneUIList.Find(s => s.Name == sceneUI.Name) == null)
- {
- return 0;
- }
-
- bool result = true;
- //绉婚櫎鎴愬憳 杩斿洖缁撴灉
- var removeSceneMemberResponseAllData = await ZigBee.Device.Scene.RemoveSceneMemberAsync(sceneRemoveMemberData);
- if (removeSceneMemberResponseAllData == null || removeSceneMemberResponseAllData.removeSceneMemberResponseData == null)
- {
- return 0;
- }
- var removeSceneMemberResponseData = removeSceneMemberResponseAllData.removeSceneMemberResponseData;
- if (removeSceneMemberResponseData == null)
- {
- return 0;
- }
- if (removeSceneMemberResponseData.Result != 0)
- {
- result = false;
- }
- //娣诲姞
- foreach (var addCommon in addCommons)
- {
- //娣诲姞鏂版垚鍛�
- var addSceneMemberData = new ZigBee.Device.Scene.AddSceneMemberData
- {
- DeviceAddr = addCommon.DeviceAddr,
- Type = addCommon.Type,
- Epoint = addCommon.Epoint,
- ScenesId = sceneUI.Id,
- TaskList = addCommon.TaskList,
- DelayTime = addCommon.DelayTime,
- ElseScenesId = addCommon.ElseScenesId
- };
- //娣诲姞鏂版垚鍛� 杩斿洖缁撴灉
- var addSceneMemberResponseAllData = await ZigBee.Device.Scene.AddSceneMemberAsync(addSceneMemberData);
- if (addSceneMemberResponseAllData == null || addSceneMemberResponseAllData.addSceneMemberResponseData == null)
- {
- result = false;
- System.Console.WriteLine("娣诲姞鍦烘櫙澶辫触");
- continue;
- }
- var addSceneMemberResponseData = addSceneMemberResponseAllData.addSceneMemberResponseData;
- if (addSceneMemberResponseData == null && addSceneMemberResponseData.Result != 1)
- {
- result = false;
- }
- }
- //鍔犲叆鎴愬姛
- if (result)
- {
- sceneUI.AddSceneMemberDataList = addCommons;
- sceneUI.Save();
- return 1;
- }
- return 0;
- }
-
- #endregion
-
- #region 鈼� 鍒犻櫎鍦烘櫙________________________
-
- /// <summary>
- /// 绉婚櫎鍦烘櫙--璇ヤ粎杩涜浜嗗鏈湴鍦烘櫙鏁版嵁鐨勫垹闄�
- /// </summary>
- /// <param name="sceneUI">Scene user interface.</param>
- public void RemoveScene(SceneUI sceneUI)
- {
- if(Global.IsExistsByHomeId(sceneUI.FileName)==false)
- {
- return;
- }
- SceneUIList.Remove(sceneUI);
- SceneUIFilePathList.Remove(sceneUI.FileName);
- Save();
- Global.DeleteFilebyHomeId(sceneUI.FileName);
- HdlAutoBackupLogic.DeleteFile(sceneUI.FileName);
- HdlAutoBackupLogic.AddOrEditorFile(FileName);
- }
-
- #endregion
-
- #region 鈼� 鑾峰彇鍦烘櫙________________________
-
- /// <summary>
- /// 閫氳繃鍦烘櫙id鑾峰彇鍦烘櫙
- /// </summary>
- /// <returns>The scene UIB y scene identifier.</returns>
- /// <param name="sceneId">Scene identifier.</param>
- public SceneUI GetSceneUIBySceneId(int sceneId)
- {
- foreach (var r in Lists)
- {
- foreach (var sceneUI in r.SceneUIList)
- {
- if (sceneUI.Id == sceneId)
- {
- return sceneUI;
- }
- }
- }
- return null;
- }
-
- #endregion
-
- #region 鈼� 鍒锋柊鍦烘櫙_________________________
-
- /// <summary>
- /// 鍒锋柊鎴块棿鐨勫満鏅垪琛�
- /// </summary>
- public async System.Threading.Tasks.Task<bool> RefreshSceneUIList()
- {
- return false;
- //System.Console.WriteLine($"寮�濮嬭姹傜綉鍏冲満鏅�****{DateTime.Now.ToString("yyMMdd hhmmss fff")}*****");
- //bool result = true;
- //var sceneList = await ZigBee.Device.Scene.GetSceneListAsync();
- //System.Console.WriteLine($"缁撴潫璇锋眰缃戝叧鍦烘櫙****{DateTime.Now.ToString("yyMMdd hhmmss fff")}*****");
- //if (sceneList == null)
- //{
- // return false;
- //}
- //List<int> sceneIDList = new List<int> { };
- //System.Console.WriteLine($"寮�濮嬫湰鍦板満鏅�****{DateTime.Now.ToString("yyMMdd hhmmss fff")}*****");
- //foreach (var scene in sceneList)
- //{
- // if (scene == null)
- // {
- // continue;
- // }
- // sceneIDList.Add(scene.ScenesId);
- //}
- //foreach(var r in Lists)
- //{
- // if(r.SceneUIList==null || r.SceneUIList.Count==0)
- // {
- // continue;
- // }
- // foreach(var rScene in r.SceneUIList)
- // {
- // if(rScene==null)
- // {
- // continue;
- // }
- // //var scene = sceneList.Find((obj) => rScene.ScenesId == obj.ScenesId);
- // if(sceneIDList.Contains(rScene.ScenesId)==false)
- // {
- // var removeResult = r.SceneUIList.Remove(rScene);
- // r.Save();
- // if (removeResult == false)
- // {
- // result = false;
- // }
- // }
- // }
- //}
- //System.Console.WriteLine($"缁撴潫鏈湴鍦烘櫙****{DateTime.Now.ToString("yyMMdd hhmmss fff")}*****");
- //return result;
- }
-
- #endregion
-
- #region 鈼� 淇濆瓨____________________________
-
- /// <summary>
- /// 淇濆瓨
- /// </summary>
- /// <param name="autoBackup">鏄惁鑷姩澶囦唤锛岄粯璁rue</param>
- public void Save(bool autoBackup = true)
- {
- //淇濆瓨鎴块棿淇℃伅
- Global.WriteFileByBytesByHomeId(FileName, System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
- if (autoBackup == true)
- {
- HdlAutoBackupLogic.AddOrEditorFile(FileName);
- }
- }
-
- #endregion
-
- #region 鈼� 鍏嬮殕鎴块棿瀵硅薄_____________________
+ #region 鈻� 淇濆瓨_______________________________
/// <summary>
- /// 鍏嬮殕鎴块棿瀵硅薄
+ /// 淇濆瓨
/// </summary>
- /// <returns></returns>
- public Room CloneRoomClass()
+ /// <param name="autoBackup">鏄惁鑷姩澶囦唤锛岄粯璁rue</param>
+ public void Save(bool autoBackup = true)
{
- var newRoom = new Room();
- //鍏嬮殕灞炴��
- newRoom.Id = this.Id;
- newRoom.Name = this.Name;
- newRoom.BackgroundImage = this.BackgroundImage;
- newRoom.BackgroundImageType = this.BackgroundImageType;
-
- return newRoom;
+ //淇濆瓨鎴块棿淇℃伅
+ Global.WriteFileByBytesByHomeId(FileName, Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(this)));
+ if (autoBackup == true)
+ {
+ HdlAutoBackupLogic.AddOrEditorFile(FileName);
+ }
}
#endregion
--
Gitblit v1.8.0