| | |
| | | }
|
| | | }
|
| | | //检测楼层数据的合法性
|
| | | this.CheckFloorData(listRoomFile);
|
| | | if (UserCenterResourse.UserInfo.AuthorityNo == 3)
|
| | | {
|
| | | this.CheckMemberFloorData(listRoomFile);
|
| | | }
|
| | | else
|
| | | {
|
| | | this.CheckAdminFloorData(listRoomFile);
|
| | | }
|
| | |
|
| | | homeTemp.Save(false);
|
| | | InitAllRoom();
|
| | |
| | | /// 检测楼层数据的合法性
|
| | | /// </summary>
|
| | | /// <param name="listRoomFile"></param>
|
| | | private void CheckFloorData(List<string> listRoomFile)
|
| | | private void CheckAdminFloorData(List<string> listRoomFile)
|
| | | {
|
| | | //没有楼层,则无需处理
|
| | | if (Config.Instance.Home.FloorDics.Count == 0) { return; }
|
| | |
|
| | | //主人或者管理员的话,就检测是否存在未分配楼层的房间
|
| | | for (int i = 0; i < listRoomFile.Count; i++)
|
| | | {
|
| | | try
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 检测楼层数据的合法性
|
| | | /// </summary>
|
| | | /// <param name="listRoomFile"></param>
|
| | | private void CheckMemberFloorData(List<string> listRoomFile)
|
| | | {
|
| | | //没有楼层,则无需处理
|
| | | if (Config.Instance.Home.FloorDics.Count == 0) { return; }
|
| | |
|
| | | //成员的话,就检测是否存在没有房间的楼层
|
| | | var listEsixtFloor = new List<string>();
|
| | | for (int i = 0; i < listRoomFile.Count; i++)
|
| | | {
|
| | | try
|
| | | {
|
| | | var byteData = Global.ReadFileByHomeId(listRoomFile[i]);
|
| | | string valueData = System.Text.Encoding.UTF8.GetString(byteData);
|
| | | var roomTemp = Newtonsoft.Json.JsonConvert.DeserializeObject<Common.Room>(valueData);
|
| | | if (roomTemp.FloorId != string.Empty && listEsixtFloor.Contains(roomTemp.FloorId) == false)
|
| | | {
|
| | | //收集楼层
|
| | | listEsixtFloor.Add(roomTemp.FloorId);
|
| | | }
|
| | | }
|
| | | catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
|
| | | }
|
| | | var listDeleteId = new List<string>();
|
| | | foreach (var flootId in Config.Instance.Home.FloorDics.Keys)
|
| | | {
|
| | | if (listEsixtFloor.Contains(flootId) == false)
|
| | | {
|
| | | //如果这个id不存在于任何房间的话,收集它
|
| | | listDeleteId.Add(flootId);
|
| | | }
|
| | | }
|
| | | foreach (var deleteId in listDeleteId)
|
| | | {
|
| | | //删除这个id
|
| | | Config.Instance.Home.FloorDics.Remove(deleteId);
|
| | | }
|
| | | Config.Instance.Home.Save(false);
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
|
| | | #region ■ 添加房间___________________________
|
| | |
| | | /// 增加房间
|
| | | /// </summary>
|
| | | /// <param name="room">Room.</param>
|
| | | public void AddRoom(Room room)
|
| | | /// <param name="rorefreshRoomViewom">是否刷新房间视图列表界面</param>
|
| | | public void AddRoom(Room room, bool refreshRoomView = true)
|
| | | {
|
| | | if (Global.IsExistsByHomeId(room.FileName) == true
|
| | | || Config.Instance.Home.ListRooms.Contains(room.Id) == true)
|
| | |
| | | room.Save();
|
| | | //备份
|
| | | HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
|
| | | //刷新房间视图列表
|
| | | this.RefreshRoomListView();
|
| | | if (refreshRoomView == true)
|
| | | {
|
| | | //刷新房间视图列表
|
| | | this.RefreshRoomListView();
|
| | | }
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | /// </summary>
|
| | | /// <returns>房间名</returns>
|
| | | /// <param name="device">设备对象</param>
|
| | | /// <param name="append">在楼层和房间名字的中间添加的字符(仅限有楼层的时候有效)</param>
|
| | | public string GetRoomNameByDevice(CommonDevice device, string append = " ")
|
| | | public string GetRoomNameByDevice(CommonDevice device)
|
| | | {
|
| | | var room = this.GetRoomByDevice(device);
|
| | | return this.GetFloorRoomName(room);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取房间名字(楼层+房间名)
|
| | | /// </summary>
|
| | | /// <returns>房间名</returns>
|
| | | /// <param name="room">房间对象</param>
|
| | | public string GetFloorRoomName(Room room)
|
| | | {
|
| | | if (room == null)
|
| | | {
|
| | | //未分配区域
|
| | |
| | | if (Config.Instance.Home.FloorDics.ContainsKey(room.FloorId) == true)
|
| | | {
|
| | | //(楼层+房间名)
|
| | | return Config.Instance.Home.FloorDics[room.FloorId] + append + room.Name;
|
| | | return Config.Instance.Home.FloorDics[room.FloorId] + " " + room.Name;
|
| | | }
|
| | | return room.Name;
|
| | | }
|
| | |
| | | /// <param name="saveRealRoom">是否修改真实物理设备的房间,不出意外,这个值默认为true即可</param>
|
| | | public void ChangedRoom(CommonDevice device, string roomId, bool saveRealRoom = true)
|
| | | {
|
| | | //选择的是未分配
|
| | | if (roomId == string.Empty)
|
| | | {
|
| | | //从原来的房间移除设备
|
| | | this.DeleteDevice(device);
|
| | | return;
|
| | | }
|
| | | //房间是否修改
|
| | | if (this.IsRoomChanged(device, roomId) == false)
|
| | | {
|
| | |
| | | var listEsxit = new HashSet<string>();
|
| | | foreach (var room in this.dicRooms.Values)
|
| | | {
|
| | | if (room.IsLove == true)
|
| | | {
|
| | | //不包含收藏房间
|
| | | continue;
|
| | | }
|
| | | foreach (string mainkeys in room.ListDevice)
|
| | | {
|
| | | if (listEsxit.Contains(mainkeys) == false)
|
| | |
| | | var commonDeviceList = LocalDevice.Current.listAllDevice;
|
| | | foreach (var device in commonDeviceList)
|
| | | {
|
| | | //判断该设备能否显示在主页
|
| | | if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false)
|
| | | {
|
| | | continue;
|
| | | }
|
| | | string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
|
| | | if (listEsxit.Contains(mainkeys) == false)
|
| | | {
|
| | |
| | | /// <returns></returns>
|
| | | public List<Room> GetFloorSortRoom(string i_floorKeys, bool getShard = true)
|
| | | {
|
| | | if (i_floorKeys == null)
|
| | | {
|
| | | i_floorKeys = string.Empty;
|
| | | }
|
| | | Dictionary<string, List<string>> dicAllSort = new Dictionary<string, List<string>>();
|
| | | //读取房间顺序
|
| | | string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile);
|
| | |
| | | if (Config.Instance.Home.ListRooms.Contains("Favorite") == false)
|
| | | {
|
| | | //默认添加喜爱的房间--禁止修改房间名
|
| | | var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.JPG", Id = "Favorite" };
|
| | | var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.jpg", Id = "Favorite" };
|
| | | love.Save(false);
|
| | | //添加到house 房间路径列表
|
| | | var currentHome = Config.Instance.Home;
|