From 1f4cec0e3b571e7541f0c7f3a5ea302ed586d9fb Mon Sep 17 00:00:00 2001 From: WJC <wjc@hdlchina.com.cn> Date: 星期四, 24 十月 2019 16:47:06 +0800 Subject: [PATCH] 2019-10-24-5 --- ZigbeeApp/Shared/Common/Room.cs | 2542 ++++++++++++++++++++++++++++++---------------------------- 1 files changed, 1,312 insertions(+), 1,230 deletions(-) diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs old mode 100644 new mode 100755 index c168e50..363128b --- a/ZigbeeApp/Shared/Common/Room.cs +++ b/ZigbeeApp/Shared/Common/Room.cs @@ -7,1335 +7,1417 @@ namespace Shared.Common { - /// <summary> - /// 鎴块棿瀵硅薄 - /// </summary> - [System.Serializable] - public class Room - { - #region 鈼� 鍙橀噺____________________________ + /// <summary> + /// 鎴块棿瀵硅薄 + /// </summary> + [System.Serializable] + public class Room + { + #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> - /// 妤煎眰Id - /// 鏂板鏃朵娇鐢℅uid - /// </summary> - public string FloorId = "Floor1"; - /// <summary> - /// 妤煎眰鍚嶇О - /// </summary> - public string FloorName - { - get - { - return GetFloorNameById(FloorId); - } - } - /// <summary> - /// 鎴块棿鍚� - /// </summary> - public string Name = string.Empty; + /// <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> + /// 妤煎眰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; + /// <summary> + /// 鎴块棿鑳屾櫙鍥� + /// </summary> + public string BackgroundImage = string.Empty; - /// <summary> - /// 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱 - /// </summary> - public int BackgroundImageType = 0; + /// <summary> + /// 鍥剧墖鏉ユ簮 0--鏈湴鍥惧簱 1--鎷嶇収 2--绯荤粺鍥惧簱 + /// </summary> + public int BackgroundImageType = 0; - /// <summary> - /// 妤煎眰--澶囩敤 - /// </summary> - public Dictionary<string, string> FloorList = new Dictionary<string, string> { }; + /// <summary> + /// 妤煎眰--澶囩敤 + /// </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> + public string TemperatrueDevice = string.Empty; + /// <summary> + /// 婀垮害浼犳劅鍣�(璁惧涓婚敭) + /// </summary> + public string HumidityDevice = string.Empty; - /// <summary> - /// 褰撳墠閫夋嫨鐨勬埧闂� - /// </summary> - public static Room CurrentRoom; + /// <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> + [Newtonsoft.Json.JsonIgnore] + public List<DeviceUI> DeviceUIList = new List<DeviceUI> { }; + /// <summary> + ///璁惧鏂囦欢璺緞鍒楄〃 + /// </summary> + public readonly List<string> DeviceUIFilePathList = new List<string>(); - /// <summary> - /// 鍠滅埍鎴块棿id - /// </summary> - public const string LoveRoomId = "Favorite"; + /// <summary> + /// 鍠滅埍鎴块棿id + /// </summary> + public const string LoveRoomId= "Favorite"; - /// <summary> - /// 鏄惁鏄粯璁ゅ枩鐖辨埧闂� - /// </summary> - /// <value><c>true</c> if is love; otherwise, <c>false</c>.</value> - [Newtonsoft.Json.JsonIgnore] - public bool IsLove - { - get - { - return Id == LoveRoomId; - } - } + /// <summary> + /// 鏄惁鏄粯璁ゅ枩鐖辨埧闂� + /// </summary> + /// <value><c>true</c> if is love; otherwise, <c>false</c>.</value> + [Newtonsoft.Json.JsonIgnore] + public bool IsLove + { + get + { + return Id == LoveRoomId; + } + } - /// <summary> - /// 鏄惁鏄垎浜繃鏉ョ殑鎴块棿 - /// 娉細鍒嗕韩杩囨潵鐨勬埧闂翠笉鑳藉垹闄わ紝涓嶈兘缂栬緫璇ユ埧闂达紝涓嶈兘瀵硅澶囷紙鍔熻兘锛夈�佸満鏅繘琛屽鍒犳敼 - /// </summary> - public bool IsSharedRoom = false; + /// <summary> + /// 鏄惁鏄垎浜繃鏉ョ殑鎴块棿 + /// 娉細鍒嗕韩杩囨潵鐨勬埧闂翠笉鑳藉垹闄わ紝涓嶈兘缂栬緫璇ユ埧闂达紝涓嶈兘瀵硅澶囷紙鍔熻兘锛夈�佸満鏅繘琛屽鍒犳敼 + /// </summary> + public bool IsSharedRoom = false; - /// <summary> - /// 鏄惁鍙互鍒锋柊鎴块棿鏁版嵁浜� - /// 闇�瑕佺瓑鍒濆鍖栨湰鍦拌澶囨暟鎹悗鍦ㄥ彲浠ュ垵濮嬪寲鎴块棿鏁版嵁 - /// </summary> - public static bool CanInitAllRoom; + /// <summary> + /// 鏄惁鍙互鍒锋柊鎴块棿鏁版嵁浜� + /// 闇�瑕佺瓑鍒濆鍖栨湰鍦拌澶囨暟鎹悗鍦ㄥ彲浠ュ垵濮嬪寲鎴块棿鏁版嵁 + /// </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> { }; - } - return GetLoveRoom().DeviceUIFilePathList; - } - } + /// <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> { }; + } + 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> { }; + /// <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> + /// <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> + /// 鎵�鏈夌殑鎴块棿淇℃伅 + /// </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> { }; + /// <summary> + /// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶� + /// 璇峰厛璋冪敤 GetAllRoomDeviceUIList()鏂规硶 + /// </summary> + /// <value>All room device UIL ist.</value> + [Newtonsoft.Json.JsonIgnore] + public static List<DeviceUI> AllRoomDeviceUIList = new List<DeviceUI> { }; - #endregion + #endregion - #region 鈼� 鏋勯�犳柟娉昣_______________________ + #region 鈼� 鏋勯�犳柟娉昣_______________________ - /// <summary> - /// 鏋勯�犳柟娉� - /// </summary> - static Room() - { - InitAllRoom(); - } + /// <summary> + /// 鏋勯�犳柟娉� + /// </summary> + static Room() + { + InitAllRoom(); + } - #endregion + #endregion - #region 鈼� 鍒濆鍖朹_________________________ + #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 = LoveRoomId }; - 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); + /// <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 = LoveRoomId }; + 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); - } - } - } + 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(); + /// <summary> + /// 浠庢湰鍦伴噸鏂板姞杞藉叏閮ㄧ殑鎴块棿 + /// </summary> + public static void RefreshAllRoomByLocation() + { + Lists.Clear(); + var homeTemp = Config.Instance.Home; + homeTemp.RoomFilePathList.Clear(); + + var listFile = Global.FileListByHomeId(); + + //鎴戠殑鍠滅埍鐨勬埧闂村繀椤昏鍦ㄧ0浣嶆墠琛� + string fRoom = "Room_Favorite.json"; + if (listFile.Contains(fRoom) == true) + { + listFile.Remove(fRoom); + homeTemp.AddRoomListFilePath(fRoom); + } + + foreach (string fileName in listFile) + { + if (fileName.StartsWith("Room_")) + { + homeTemp.AddRoomListFilePath(fileName); + } + } + homeTemp.Save(false); + CanInitAllRoom = true; + InitAllRoom(); + } - var listFile = Global.FileListByHomeId(); + #endregion - //鎴戠殑鍠滅埍鐨勬埧闂村繀椤昏鍦ㄧ0浣嶆墠琛� - string fRoom = "Room_Favorite.json"; - if (listFile.Contains(fRoom) == true) - { - listFile.Remove(fRoom); - homeTemp.AddRoomListFilePath(fRoom); - } + #region 鈼� 娣诲姞鎴块棿_________________________ - foreach (string fileName in listFile) - { - if (fileName.StartsWith("Room_")) - { - homeTemp.AddRoomListFilePath(fileName); - } - } - homeTemp.Save(false); - CanInitAllRoom = true; - InitAllRoom(); - } + /// <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 + #endregion - #region 鈼� 娣诲姞鎴块棿_________________________ + #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; - } + /// <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 + #endregion - #region 鈼� 鍒犻櫎鎴块棿_________________________ + #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; - } + /// <summary> + /// 鑾峰彇鍠滅埍鎴块棿 + /// </summary> + /// <returns></returns> + public Room GetLoveRoom() + { + return CurrentRoom.GetRoomById(LoveRoomId); + } - #endregion + /// <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)); - #region 鈼� 鑾峰彇鎴块棿________________________ + if (null == nowRoom) + { + System.Console.WriteLine("鎴块棿鏂囦欢璺緞涓嶅锛屾枃浠惰矾寰勪负锛�" + roomFilePath); + return null; + } - /// <summary> - /// 鑾峰彇鍠滅埍鎴块棿 - /// </summary> - /// <returns></returns> - public static Room GetLoveRoom() - { - return CurrentRoom.GetRoomById(LoveRoomId); - } + 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) + { + beforeRoom.DeviceUIList.Add(Common.LocalDevice.Current.GetDeviceUI(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); + } + } + } - /// <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)); + return beforeRoom; + } - if (null == nowRoom) - { - System.Console.WriteLine("鎴块棿鏂囦欢璺緞涓嶅锛屾枃浠惰矾寰勪负锛�" + roomFilePath); - return null; - } + //璁惧锛坉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; + } + } - 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) - { - beforeRoom.DeviceUIList.Add(Common.LocalDevice.Current.GetDeviceUI(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); - } - } - } + /// <summary> + /// 鏍规嵁鎴块棿Id锛岃幏鍙栨埧闂村璞� + /// </summary> + /// <returns>The room by name.</returns> + /// <param name="roomId">鎴块棿ID</param> + public Room GetRoomById(string roomId) + { + return Lists.Find((obj) => obj.Id == roomId); + } - return beforeRoom; - } + /// <summary> + /// 鏍规嵁鎴块棿鍚嶅瓧锛岃幏鍙栨埧闂村璞� + /// </summary> + /// <returns>The room by name.</returns> + /// <param name="roomName">鎴块棿鍚�</param> + public Room GetRoomByName(string roomName) + { + return Lists.Find((obj) => obj.Name == roomName); + } - //璁惧锛坉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>鎴块棿鍚�</returns> + /// <param name="device">璁惧瀵硅薄</param> + public string GetRoomNameByDevice(CommonDevice device) + { + var room = this.GetRoomByDevice(device); + if (room == null) + { + //鏈垎閰嶅尯鍩� + return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); + } + if (Config.Instance.Home.FloorDics.ContainsKey(room.FloorId) == true) + { + //(妤煎眰+鎴块棿鍚�) + return Config.Instance.Home.FloorDics[room.FloorId] + " " + room.Name; + } + return room.Name; + } - /// <summary> - /// 鏍规嵁鎴块棿Id锛岃幏鍙栨埧闂村璞� - /// </summary> - /// <returns>The room by name.</returns> - /// <param name="roomId">鎴块棿ID</param> - public Room GetRoomById(string roomId) - { - return Lists.Find((obj) => obj.Id == roomId); - } + /// <summary> + /// 鑾峰彇璁惧鎵�鍦ㄧ殑鎴块棿 + /// </summary> + /// <returns>The room by device.</returns> + /// <param name="device">璁惧瀵硅薄</param> + public Room GetRoomByDevice(CommonDevice device) + { + var deviceUI = new DeviceUI { }; + deviceUI.DeviceAddr = device.DeviceAddr; + deviceUI.DeviceEpoint = device.DeviceEpoint; - /// <summary> - /// 鏍规嵁璁惧鑾峰彇鎴块棿鍚嶅瓧(妤煎眰+鎴块棿鍚�) - /// </summary> - /// <returns>鎴块棿鍚�</returns> - /// <param name="device">璁惧瀵硅薄</param> - public string GetRoomNameByDevice(CommonDevice device) - { - var room = this.GetRoomByDevice(device); - if (room == null) - { - //鏈垎閰嶅尯鍩� - return Language.StringByID(R.MyInternationalizationString.uDeviceNotAssignedRoom); - } - if (Config.Instance.Home.FloorDics.ContainsKey(room.FloorId) == true) - { - //(妤煎眰+鎴块棿鍚�) - return Config.Instance.Home.FloorDics[room.FloorId] + " " + room.Name; - } - return room.Name; - } + return Lists.Find((obj) => obj.DeviceUIFilePathList.Contains(deviceUI.FileName)); + } - /// <summary> - /// 鑾峰彇璁惧鎵�鍦ㄧ殑鎴块棿 - /// </summary> - /// <returns>The room by device.</returns> - /// <param name="device">璁惧瀵硅薄</param> - public Room GetRoomByDevice(CommonDevice device) - { - var deviceUI = new DeviceUI { }; - deviceUI.DeviceAddr = device.DeviceAddr; - deviceUI.DeviceEpoint = device.DeviceEpoint; + /// <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; + } - return Lists.Find((obj) => obj.DeviceUIFilePathList.Contains(deviceUI.FileName)); - } + /// <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; + } - /// <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> + /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂� + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public List<Room> GetRoomsByFloorId(string id) + { + 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> - /// 閫氳繃鍦烘櫙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; - } + /// <summary> + /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂�(鎷兼帴浜嗐�愬父鐢ㄣ�戝湪绗竴浣�) + /// </summary> + /// <param name="id"></param> + /// <returns></returns> + public List<Room> GetRoomsByFloorIdAppendLoveRoom(string id) + { + var r= Lists.FindAll((obj) => obj.FloorId == id); + r.Insert(0, GetLoveRoom()); + return r; + } + /// <summary> + /// 鑾峰彇褰撳墠妤煎眰鐨勬埧闂�(鎷兼帴浜嗐�愬父鐢ㄣ�戝湪绗竴浣�) + /// </summary> + /// <returns></returns> + public List<Room> GetRoomsByCurrentFloorIdAppendLoveRoom() + { + var r = Lists.FindAll((obj) => obj.FloorId == Config.Instance.Home.CurrentFloorId); + r.Insert(0, GetLoveRoom()); + return r; + } - #endregion + #endregion - #region 鈼� 鎴块棿鏂规硶________________________ + #region 鈼� 鎴块棿鏂规硶________________________ - /// <summary> - /// 璁惧鐨勬埧闂村彉鏇� - /// </summary> - /// <param name="device">璁惧瀵硅薄</param> - /// <param name="roomId">鏂版埧闂碔d</param> - public void ChangedRoom(CommonDevice device, string roomId) - { - //鎴块棿鏄惁淇敼 - if (this.IsRoomChanged(device, roomId) == false) - { - return; - } - //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧 - this.DeleteDevice(device); + /// <summary> + /// 璁惧鐨勬埧闂村彉鏇� + /// </summary> + /// <param name="device">璁惧瀵硅薄</param> + /// <param name="roomId">鏂版埧闂碔d</param> + public void ChangedRoom(CommonDevice device, string roomId) + { + //鎴块棿鏄惁淇敼 + if (this.IsRoomChanged(device, roomId) == false) + { + return; + } + //浠庡師鏉ョ殑鎴块棿绉婚櫎璁惧 + this.DeleteDevice(device); - //娣诲姞鍒版柊鐨勬埧闂� - var room = this.GetRoomById(roomId); - if (room != null) - { - room.AddDevice(device); - } - } + //娣诲姞鍒版柊鐨勬埧闂� + var room = this.GetRoomById(roomId); + if (room != null) + { + room.AddDevice(device); + } + } + + /// <summary> + /// 鎴块棿鍚嶅瓧鏄惁鏈変慨鏀� + /// </summary> + /// <param name="device">璁惧瀵硅薄</param> + /// <param name="roomId">鏂版埧闂碔d</param> + /// <returns></returns> + public bool IsRoomChanged(CommonDevice device, string roomId) + { + var room = this.GetRoomByDevice(device); + if (room == null || room.Id != roomId) + { + return true; + } + return false; + } - /// <summary> - /// 鎴块棿鍚嶅瓧鏄惁鏈変慨鏀� - /// </summary> - /// <param name="device">璁惧瀵硅薄</param> - /// <param name="roomId">鏂版埧闂碔d</param> - /// <returns></returns> - public bool IsRoomChanged(CommonDevice device, string roomId) - { - var room = this.GetRoomByDevice(device); - if (room == null || room.Id != roomId) - { - return true; - } - return false; - } + #endregion - #endregion + #region 鈼� 鏇存柊鎴块棿_________________________ - #region 鈼� 鏇存柊鎴块棿_________________________ + /// <summary> + /// Updates the memorry. + /// </summary> + /// <param name="roomFilePath">Room file path.</param> + public static void UpdateMemorry(string roomFilePath) + { + GetRoomByFilePath(roomFilePath); + } - /// <summary> - /// Updates the memorry. - /// </summary> - /// <param name="roomFilePath">Room file path.</param> - public static void UpdateMemorry(string roomFilePath) - { - GetRoomByFilePath(roomFilePath); - } + #endregion - #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]); + } - #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); + } + } - /// <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 - #endregion + #region 鈼� 娣诲姞璁惧________________________ - #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="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> + public void AddDevice(CommonDevice device) + { + if (device == null) + { + return; + } + //璁惧淇℃伅淇濆瓨鍒版湰鍦� + device.Save(); - /// <summary> - /// 娣诲姞璁惧 - /// </summary> - /// <param name="device">瑕佹坊鍔犵殑璁惧瀵硅薄</param> - public void AddDevice(CommonDevice device) - { - if (device == null) - { - return; - } - //璁惧淇℃伅淇濆瓨鍒版湰鍦� - device.Save(); + //娣诲姞鑷姩澶囦唤 + HdlAutoBackupLogic.AddOrEditorFile(device.FilePath); - //娣诲姞鑷姩澶囦唤 - 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(); - 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> - public void DeleteDevice(CommonDevice device) - { - if (device == null) - { - return; - } - DeviceUI deviceUI = new DeviceUI(); - deviceUI.DeviceAddr = device.DeviceAddr; - deviceUI.DeviceEpoint = device.DeviceEpoint; - - //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿 - var room = this.GetRoomByDevice(device); - if (room == null) - { - return; - } - //绉婚櫎缂撳瓨 - if (room.DeviceUIFilePathList.Contains(deviceUI.FileName) == false) - { - return; - } - room.DeviceUIFilePathList.Remove(deviceUI.FileName); - - room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUI.FileName); - 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瀵硅薄锛屽鏋滀笉瀛樺湪鍒欐柊寤� - /// </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); - } - } - } - - /// <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); - } - if (listDevice.Count == 0) - { - return listDevice; - } - return Common.LocalDevice.Current.SortDevice(listDevice); - } - - #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> - /// 鏄惁鏄敹钘忚澶� - /// </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 鈼� 淇敼鍦烘櫙________________________ - - /// <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; - } + //娣诲姞鑷姩澶囦唤 + HdlAutoBackupLogic.AddOrEditorFile(FileName); + } + } - 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 - #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(); + } + } - #region 鈼� 鍒犻櫎鍦烘櫙________________________ + /// <summary> + /// 鍒犻櫎璁惧 + /// </summary> + /// <param name="device">瑕佸垹闄ょ殑璁惧瀵硅薄</param> + public void DeleteDevice(CommonDevice device) + { + if (device == null) + { + return; + } + DeviceUI deviceUI = new DeviceUI(); + deviceUI.DeviceAddr = device.DeviceAddr; + deviceUI.DeviceEpoint = device.DeviceEpoint; - /// <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); - } + //鏍规嵁璁惧锛岃幏鍙栨墍鍦ㄧ殑鎴块棿 + var room = this.GetRoomByDevice(device); + if (room == null) + { + return; + } + //绉婚櫎缂撳瓨 + if (room.DeviceUIFilePathList.Contains(deviceUI.FileName) == false) + { + return; + } + room.DeviceUIFilePathList.Remove(deviceUI.FileName); + + room.DeviceUIList.RemoveAll((obj) => obj.FileName == deviceUI.FileName); + room.Save(); + //鏇存敼鑷姩澶囦唤 + HdlAutoBackupLogic.AddOrEditorFile(room.FileName); + } - #endregion + #endregion - #region 鈼� 鑾峰彇鍦烘櫙________________________ + #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; - } + /// <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); + } + } + } + } - #endregion + /// <summary> + /// 鏍规嵁璁惧鑾峰彇瀹冪殑UI瀵硅薄锛屽鏋滀笉瀛樺湪鍒欐柊寤� + /// </summary> + /// <returns>The device user interface.</returns> + /// <param name="device">璁惧瀵硅薄</param> + public DeviceUI GetDeviceUI(CommonDevice device) + { + return Common.LocalDevice.Current.GetDeviceUI(device); + } - #region 鈼� 鍒锋柊鍦烘櫙_________________________ + /// <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); + } + } + } - /// <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; - } + /// <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); + } + if (listDevice.Count == 0) + { + return listDevice; + } + return Common.LocalDevice.Current.SortDevice(listDevice); + } - #endregion + /// <summary> + /// 鑾峰彇鎴块棿璁惧绫诲瀷 + /// </summary> + /// <param name="room"></param> + /// <returns></returns> + public static List<DeviceType> GetdeviceTypes(Room room) + { + List<DeviceType> typeList = new List<DeviceType> { }; + foreach (var deviceUI in room.DeviceUIList) + { + if (deviceUI == null || deviceUI.CommonDevice == null) + { + continue; + } + if (!typeList.Contains(deviceUI.CommonDevice.Type)) + { + typeList.Add(deviceUI.CommonDevice.Type); + } + } + return typeList; + } - #region 鈼� 淇濆瓨____________________________ + /// <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="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 + #endregion - #region 鈼� 妤煎眰鍜屾埧闂撮『搴忕浉鍏砡______________ + #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); - } + /// <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; + } + } - var listRoomSort = new List<string>(); - if (dicAllSort.ContainsKey(i_floorKeys) == true) - { - listRoomSort = dicAllSort[i_floorKeys]; - } - else - { - dicAllSort[i_floorKeys] = listRoomSort; - } + 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; + } - 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; - } + /// <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(); + } - var listSortRoom = new List<Room>(); - for (int i = 0; i < listRoomSort.Count; i++) - { - if (dicRoom.ContainsKey(listRoomSort[i]) == true) - { - listSortRoom.Add(dicRoom[listRoomSort[i]]); - } - } + #endregion - //淇濆瓨椤哄簭 - UserCenterLogic.SaveFileContent(fullName, dicAllSort); - return listSortRoom; - } + #region 鈼� 璁惧鏄惁鏀惰棌______________________ - /// <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); - } + /// <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 - //淇濆瓨椤哄簭 - dicAllSort[i_floorKeys] = listSort; - UserCenterLogic.SaveFileContent(fullName, dicAllSort); - dicAllSort.Clear(); - } + #region 鈼� 淇敼鍦烘櫙________________________ - /// <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); - } - } + /// <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; + } - 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]]; - } - } + 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; + } - //淇濆瓨椤哄簭 - UserCenterLogic.SaveFileContent(fullName, listFloorSort); - return dic; - } + #endregion - /// <summary> - /// 淇濆瓨妤煎眰鐨勯『搴� - /// </summary> - /// <param name="listSort">妤煎眰鐨勪富閿�</param> - public void SaveFloorSort(List<string> listSort) - { - string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile); - //淇濆瓨椤哄簭 - UserCenterLogic.SaveFileContent(fullName, listSort); - } + #region 鈼� 鍒犻櫎鍦烘櫙________________________ - #endregion + /// <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); + } - #region 鈼� 鍏嬮殕鎴块棿瀵硅薄_____________________ + #endregion - /// <summary> - /// 鍏嬮殕鎴块棿瀵硅薄 - /// </summary> - /// <returns></returns> - public Room CloneRoomClass() - { - 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; + #region 鈼� 鑾峰彇鍦烘櫙________________________ - return newRoom; - } + /// <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 + #endregion - #region 鈼� 妤煎眰___________________________ + #region 鈼� 鍒锋柊鍦烘櫙_________________________ - /// <summary> - /// 鑾峰彇妤煎眰鍚嶇О - /// </summary> - /// <param name="floorId"></param> - /// <returns></returns> - public string GetFloorNameById(string floorId) - { - if (Config.Instance.Home.FloorDics.Count == 0) - { - return null; - } + /// <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; + } - foreach (var floor in Config.Instance.Home.FloorDics) - { - if (floorId == floor.Key) - { - return floor.Value; - } - } - return null; - } + #endregion - #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 鈼� 妤煎眰鍜屾埧闂撮『搴忕浉鍏砡______________ + + /// <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> + /// 鍏嬮殕鎴块棿瀵硅薄 + /// </summary> + /// <returns></returns> + public Room CloneRoomClass() + { + 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; + + return newRoom; + } + + #endregion + + } } -- Gitblit v1.8.0