| | |
| | | this.dicRooms.Clear();
|
| | | //检测我的喜爱这个房间对象
|
| | | this.CheckLoveRoom();
|
| | | |
| | | foreach (var roomId in Config.Instance.Home.ListRooms)
|
| | |
|
| | | var listFile = HdlFileLogic.Current.GetRootPathListFile();
|
| | | foreach (var fileName in listFile)
|
| | | {
|
| | | //从文件里面获取房间对象
|
| | | var room = this.GetRoomByFilePath($"Room_{roomId}.json");
|
| | | if (room != null)
|
| | | if (fileName.StartsWith("Room_") == true)
|
| | | {
|
| | | this.dicRooms[room.Id] = (room);
|
| | | //从文件里面获取房间对象
|
| | | var room = this.GetRoomByFilePath(fileName);
|
| | | if (room != null)
|
| | | {
|
| | | this.dicRooms[room.Id] = (room);
|
| | | }
|
| | | }
|
| | | }
|
| | | //设置当前楼层的ID
|
| | | Config.Instance.Home.SetCurrentFloorId();
|
| | | //顺便刷新场景
|
| | | HdlSceneLogic.Current.ReFreshByLocal();
|
| | | //刷新房间视图列表
|
| | |
| | | /// </summary>
|
| | | public void RefreshAllRoomByLocation()
|
| | | {
|
| | | var homeTemp = Config.Instance.Home;
|
| | | homeTemp.ListRooms.Clear();
|
| | |
|
| | | var listFile = Global.FileListByHomeId();
|
| | | var listFile = HdlFileLogic.Current.GetRootPathListFile();
|
| | |
|
| | | //我的喜爱的房间必须要在第0位才行
|
| | | string fRoom = "Room_Favorite.json";
|
| | | if (listFile.Contains(fRoom) == true)
|
| | | {
|
| | | listFile.Remove(fRoom);
|
| | | homeTemp.ListRooms.Add("Favorite");
|
| | | }
|
| | |
|
| | | var listRoomFile = new List<string>();
|
| | |
| | | if (fileName.StartsWith("Room_"))
|
| | | {
|
| | | string roomId = fileName.Replace("Room_", string.Empty).Replace(".json", string.Empty);
|
| | | homeTemp.ListRooms.Add(roomId);
|
| | | listRoomFile.Add(fileName);
|
| | | }
|
| | | }
|
| | |
| | | this.CheckAdminFloorData(listRoomFile);
|
| | | }
|
| | |
|
| | | homeTemp.Save(false);
|
| | | InitAllRoom();
|
| | | this.InitAllRoom();
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | {
|
| | | Application.RunOnMainThread(() =>
|
| | | {
|
| | | MainPage.ListRoomViewFrom.Instance?.RefreshListRoom();
|
| | | MainPage.LeftListRoomViewFrom.Instance?.RefreshListRoom();
|
| | | });
|
| | | }
|
| | |
|
| | |
| | | /// <param name="rorefreshRoomViewom">是否刷新房间视图列表界面</param>
|
| | | public void AddRoom(Room room, bool refreshRoomView = true)
|
| | | {
|
| | | if (Global.IsExistsByHomeId(room.FileName) == true
|
| | | || Config.Instance.Home.ListRooms.Contains(room.Id) == true)
|
| | | if (Global.IsExistsByHomeId(room.FileName) == true)
|
| | | {
|
| | | return;
|
| | | }
|
| | | //添加到缓存
|
| | | this.dicRooms[room.Id] = room;
|
| | | //把房间ID添加到住宅
|
| | | Config.Instance.Home.AddRoomId(room.Id);
|
| | | //生成文件
|
| | | room.Save();
|
| | | //备份
|
| | |
| | | /// 删除房间
|
| | | /// </summary>
|
| | | /// <param name="roomId">房间ID</param>
|
| | | /// <param name="refreshLeftView">是否刷新左滑界面(此变量目前是给删除全部房间用的)</param>
|
| | | /// <returns></returns>
|
| | | public void RemoveRoom(string roomId)
|
| | | public void RemoveRoom(string roomId, bool refreshLeftView = true)
|
| | | {
|
| | | if (this.NowMainPageRoom != null && this.NowMainPageRoom.Id == roomId)
|
| | | {
|
| | | //当删除的是主页的房间的时候
|
| | | this.NowMainPageRoom = this.GetLoveRoom();
|
| | | }
|
| | | if (this.NowCategoryRoom != null && this.NowCategoryRoom.Id == roomId)
|
| | | {
|
| | | //当删除的是分类的房间的时候
|
| | | this.NowCategoryRoom = this.GetLoveRoom();
|
| | | }
|
| | |
|
| | | //根据房间Id,获取房间对象
|
| | | var room = this.GetRoomById(roomId);
|
| | | if (room == null)
|
| | |
| | | }
|
| | | loveRoom.Save(false);
|
| | | }
|
| | |
|
| | | Config.Instance.Home.RemoveRoomId(roomId);
|
| | | this.dicRooms.Remove(roomId);
|
| | |
|
| | | string roomFilePath = room.FileName;
|
| | |
| | |
|
| | | //根据房间ID,移除指定的真实物理设备的所属房间记录
|
| | | Common.LocalDevice.Current.DeleteRealDeviceByRoomId(roomId);
|
| | | if (refreshLeftView == true)
|
| | | {
|
| | | //HdlAutoBackupLogic.DeleteFile(roomFilePath);
|
| | | //刷新房间视图列表
|
| | | this.RefreshRoomListView();
|
| | | }
|
| | | }
|
| | |
|
| | | //刷新房间视图列表
|
| | | this.RefreshRoomListView();
|
| | | /// <summary>
|
| | | /// 删除全部的房间
|
| | | /// </summary>
|
| | | public void DeleteAllRoom()
|
| | | {
|
| | | var listRoomId = new List<string>();
|
| | | foreach (var room in this.dicRooms.Values)
|
| | | {
|
| | | if (room.IsLove == false)
|
| | | {
|
| | | listRoomId.Add(room.Id);
|
| | | }
|
| | | }
|
| | | foreach (var roomId in listRoomId)
|
| | | {
|
| | | this.RemoveRoom(roomId, false);
|
| | | }
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | public string GetRoomNameByDevice(CommonDevice device)
|
| | | {
|
| | | var room = this.GetRoomByDevice(device);
|
| | | return this.GetFloorRoomName(room);
|
| | | return this.GetRoomName(room);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | /// </summary>
|
| | | /// <returns>房间名</returns>
|
| | | /// <param name="room">房间对象</param>
|
| | | public string GetFloorRoomName(Room room)
|
| | | public string GetRoomName(Room room)
|
| | | {
|
| | | if (room == null)
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | return listRoom;
|
| | | return this.SortRoom(listRoom);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | {
|
| | | listRoom.Add(room);
|
| | | }
|
| | | return listRoom;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取当前楼层的房间名称
|
| | | /// </summary>
|
| | | /// <param name="id"></param>
|
| | | /// <returns></returns>
|
| | | public List<string> GetRoomNamesByFloorId(string id)
|
| | | {
|
| | | var listName = new List<string>();
|
| | | if (Config.Instance.Home.FloorDics.Count == 0)
|
| | | {
|
| | | //没有楼层
|
| | | foreach (var room in this.dicRooms.Values)
|
| | | {
|
| | | listName.Add(room.Name);
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | foreach (var room in this.dicRooms.Values)
|
| | | {
|
| | | if (room.FloorId == id)
|
| | | {
|
| | | listName.Add(room.Name);
|
| | | }
|
| | | }
|
| | | }
|
| | | return listName;
|
| | | return this.SortRoom(listRoom);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | }
|
| | | }
|
| | | }
|
| | | listRoom = this.SortRoom(listRoom);
|
| | |
|
| | | listRoom.Insert(0, GetLoveRoom());
|
| | | return listRoom;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取当前楼层的房间(拼接了【常用】在第一位)
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | public List<Room> GetRoomsByCurrentFloorIdAppendLoveRoom()
|
| | | {
|
| | | return this.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId);
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | //移除我的喜爱
|
| | | this.DeleteLoveDevice(device);
|
| | | //设备改变房间的话,主页需要重新刷新
|
| | | UserView.UserPage.Instance.RefreshForm = true;
|
| | | UserView.UserPage.Instance.RefreshAllForm = true;
|
| | | return;
|
| | | }
|
| | | //房间是否修改
|
| | |
| | | this.AddDevice(room, device, saveRealRoom);
|
| | | }
|
| | | //设备改变房间的话,主页需要重新刷新
|
| | | UserView.UserPage.Instance.RefreshForm = true;
|
| | | UserView.UserPage.Instance.RefreshAllForm = true;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 获取房间所在区域
|
| | | /// 楼层,房间名
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | public string GetZoneName(Room i_room)
|
| | | {
|
| | | if (string.IsNullOrEmpty(i_room.FloorId))
|
| | | {
|
| | | return i_room.Name;
|
| | | }
|
| | | var floorName = HdlResidenceLogic.Current.GetFloorNameById(i_room.FloorId);
|
| | | if (floorName == null)
|
| | | {
|
| | | return i_room.Name;
|
| | | }
|
| | | return $"{floorName},{i_room.Name}";
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | //保存到本地
|
| | | loveRoom.ListDevice.Add(mainkeys);
|
| | | loveRoom.Save();
|
| | | //添加收藏设备时,需要刷新主页
|
| | | UserView.UserPage.Instance.RefreshAllForm = true;
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | loveRoom.Save();
|
| | | //更改自动备份
|
| | | HdlAutoBackupLogic.AddOrEditorFile(loveRoom.FileName);
|
| | | //添加收藏设备时,需要刷新主页
|
| | | UserView.UserPage.Instance.RefreshAllForm = true;
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | {
|
| | | i_floorKeys = string.Empty;
|
| | | }
|
| | | 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>();
|
| | | var listRoom = new List<Room>();
|
| | | foreach (var room in this.dicRooms.Values)
|
| | | {
|
| | | if (room.FloorId != i_floorKeys && i_floorKeys != string.Empty)
|
| | | if (room.FloorId != i_floorKeys && i_floorKeys != string.Empty
|
| | | || room.IsLove == true)
|
| | | {
|
| | | //不是同一个楼层
|
| | | //不是同一个楼层,不要我的喜爱
|
| | | continue;
|
| | | }
|
| | | if (room.IsLove == true)
|
| | | {
|
| | | //不要我的喜爱
|
| | | continue;
|
| | | }
|
| | | if (listRoomSort.Contains(room.Id) == false)
|
| | | {
|
| | | //新添加的房间
|
| | | listRoomSort.Add(room.Id);
|
| | | }
|
| | | if (getShard == false && room.IsSharedRoom == true)
|
| | | {
|
| | | //不要分享的房间
|
| | | continue;
|
| | | }
|
| | | dicRoom[room.Id] = room;
|
| | | listRoom.Add(room);
|
| | | }
|
| | |
|
| | | var listSortRoom = new List<Room>();
|
| | | for (int i = 0; i < listRoomSort.Count; i++)
|
| | | {
|
| | | if (dicRoom.ContainsKey(listRoomSort[i]) == true)
|
| | | {
|
| | | listSortRoom.Add(dicRoom[listRoomSort[i]]);
|
| | | }
|
| | | }
|
| | |
|
| | | //保存顺序
|
| | | UserCenterLogic.SaveFileContent(fullName, dicAllSort);
|
| | | return listSortRoom;
|
| | | return this.SortRoom(listRoom);
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 保存房间的顺序
|
| | | /// 排序房间对象
|
| | | /// </summary>
|
| | | /// <param name="i_floorKeys">楼层主键</param>
|
| | | /// <param name="listSort">房间顺序(房间的主键)</param>
|
| | | public void SaveRoomSort(string i_floorKeys, List<string> listSort)
|
| | | /// <param name="listRoom"></param>
|
| | | /// <returns></returns>
|
| | | public List<Room> SortRoom(List<Room> listRoom)
|
| | | {
|
| | | Dictionary<string, List<string>> dicAllSort = new Dictionary<string, List<string>>();
|
| | | //读取房间顺序
|
| | | string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile);
|
| | | var strData = UserCenterLogic.LoadFileContent(fullName);
|
| | | if (strData != null)
|
| | | //从一堆文字中,获取这一堆文字里面数字字符串的最长长度
|
| | | var listName = new List<string>();
|
| | | foreach (var room in listRoom)
|
| | | {
|
| | | dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject<Dictionary<string, List<string>>>(strData);
|
| | | listName.Add(room.Name);
|
| | | }
|
| | | int numberLength = this.GetNumberMaxLength(listName);
|
| | |
|
| | | //保存顺序
|
| | | dicAllSort[i_floorKeys] = listSort;
|
| | | UserCenterLogic.SaveFileContent(fullName, dicAllSort);
|
| | | dicAllSort.Clear();
|
| | | var listSort = new List<string[]>();
|
| | | foreach (var room in listRoom)
|
| | | {
|
| | | var strArry = new string[2];
|
| | | strArry[0] = room.Id;
|
| | | strArry[1] = string.Empty;
|
| | |
|
| | | string value = string.Empty;
|
| | | foreach (var c in room.Name)
|
| | | {
|
| | | if (char.IsNumber(c) == true)
|
| | | {
|
| | | //数字
|
| | | value += c.ToString();
|
| | | continue;
|
| | | }
|
| | | else if (value != string.Empty)
|
| | | {
|
| | | //如果房间名字带有数字的话,则左边加零,因为这里有个排序的问题
|
| | | strArry[1] += value.PadLeft(numberLength, '0');
|
| | | value = string.Empty;
|
| | | }
|
| | | strArry[1] += c.ToString();
|
| | | }
|
| | | if (value != string.Empty)
|
| | | {
|
| | | //以数字结尾的话
|
| | | strArry[1] += value.PadLeft(numberLength, '0');
|
| | | }
|
| | | listSort.Add(strArry);
|
| | | }
|
| | | //排序
|
| | | listSort.Sort((obj1, obj2) =>
|
| | | {
|
| | | if (obj1[1].CompareTo(obj2[1]) > 0)
|
| | | {
|
| | | return 1;
|
| | | }
|
| | | return -1;
|
| | | });
|
| | | var listSortRoom = new List<Room>();
|
| | | foreach (var strArry in listSort)
|
| | | {
|
| | | var room = this.GetRoomById(strArry[0]);
|
| | | listSortRoom.Add(room);
|
| | | }
|
| | | return listSortRoom;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | |
| | | /// <returns></returns>
|
| | | public Dictionary<string, string> GetFloorSortList()
|
| | | {
|
| | | //读取楼层顺序
|
| | | var listFloorSort = new List<string>();
|
| | | string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile);
|
| | | var strData = UserCenterLogic.LoadFileContent(fullName);
|
| | | if (strData != null)
|
| | | //没有楼层
|
| | | if (Config.Instance.Home.FloorDics.Count == 0)
|
| | | {
|
| | | listFloorSort = Newtonsoft.Json.JsonConvert.DeserializeObject<List<string>>(strData);
|
| | | return new Dictionary<string, string>();
|
| | | }
|
| | | foreach (string keys in Common.Config.Instance.Home.FloorDics.Keys)
|
| | | //从一堆文字中,获取这一堆文字里面数字字符串的最长长度
|
| | | var listName = new List<string>();
|
| | | foreach (var floorName in Config.Instance.Home.FloorDics.Values)
|
| | | {
|
| | | if (listFloorSort.Contains(keys) == false)
|
| | | {
|
| | | //新添加的楼层
|
| | | listFloorSort.Add(keys);
|
| | | }
|
| | | listName.Add(floorName);
|
| | | }
|
| | | int numberLength = this.GetNumberMaxLength(listName);
|
| | |
|
| | | var listSort = new List<string[]>();
|
| | | foreach (var floorId in Config.Instance.Home.FloorDics.Keys)
|
| | | {
|
| | | var strArry = new string[2];
|
| | | strArry[0] = floorId;
|
| | | strArry[1] = string.Empty;
|
| | |
|
| | | string value = string.Empty;
|
| | | string floorName = Config.Instance.Home.FloorDics[floorId];
|
| | | foreach (var c in floorName)
|
| | | {
|
| | | if (char.IsNumber(c) == true)
|
| | | {
|
| | | //数字
|
| | | value += c.ToString();
|
| | | continue;
|
| | | }
|
| | | else if (value != string.Empty)
|
| | | {
|
| | | //如果房间名字带有数字的话,则左边加零,因为这里有个排序的问题
|
| | | strArry[1] += value.PadLeft(numberLength, '0');
|
| | | value = string.Empty;
|
| | | }
|
| | | strArry[1] += c.ToString();
|
| | | }
|
| | | if (value != string.Empty)
|
| | | {
|
| | | //以数字结尾的话
|
| | | strArry[1] += value.PadLeft(numberLength, '0');
|
| | | }
|
| | | listSort.Add(strArry);
|
| | | }
|
| | | //楼层排序
|
| | | listSort.Sort((obj1, obj2) =>
|
| | | {
|
| | | if (obj1[1].CompareTo(obj2[1]) > 0)
|
| | | {
|
| | | return 1;
|
| | | }
|
| | | return -1;
|
| | | });
|
| | | var dic = new Dictionary<string, string>();
|
| | | for (int i = 0; i < listFloorSort.Count; i++)
|
| | | foreach (var strArry in listSort)
|
| | | {
|
| | | if (Config.Instance.Home.FloorDics.ContainsKey(listFloorSort[i]) == true)
|
| | | {
|
| | | dic[listFloorSort[i]] = Config.Instance.Home.FloorDics[listFloorSort[i]];
|
| | | }
|
| | | dic[strArry[0]] = Config.Instance.Home.FloorDics[strArry[0]];
|
| | | }
|
| | |
|
| | | //保存顺序
|
| | | UserCenterLogic.SaveFileContent(fullName, listFloorSort);
|
| | | return dic;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 保存楼层的顺序
|
| | | /// </summary>
|
| | | /// <param name="listSort">楼层的主键</param>
|
| | | public void SaveFloorSort(List<string> listSort)
|
| | | {
|
| | | string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile);
|
| | | //保存顺序
|
| | | UserCenterLogic.SaveFileContent(fullName, listSort);
|
| | | }
|
| | |
|
| | | #endregion
|
| | |
| | | #region ■ 一般方法___________________________
|
| | |
|
| | | /// <summary>
|
| | | /// 获取房间总数
|
| | | /// </summary>
|
| | | /// <returns></returns>
|
| | | public int GetRoomCount()
|
| | | {
|
| | | return this.dicRooms.Count;
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 检测我的喜爱这个房间对象
|
| | | /// </summary>
|
| | | private void CheckLoveRoom()
|
| | | {
|
| | | if (Config.Instance.Home.ListRooms.Contains("Favorite") == false)
|
| | | if (this.dicRooms.ContainsKey("Favorite") == true)
|
| | | {
|
| | | return;
|
| | | }
|
| | | //读取本地我的喜爱文件
|
| | | string favoriteFile = System.IO.Path.Combine(Common.Config.Instance.FullPath, "Room_Favorite.json");
|
| | | var fileContent = HdlFileLogic.Current.ReadFileTextContent(favoriteFile);
|
| | | if (fileContent != null)
|
| | | {
|
| | | var love = Newtonsoft.Json.JsonConvert.DeserializeObject<Room>(fileContent);
|
| | | this.dicRooms["Favorite"] = love;
|
| | | }
|
| | | else
|
| | | {
|
| | | //默认添加喜爱的房间--禁止修改房间名
|
| | | var love = new Room { Name = Language.StringByID(R.MyInternationalizationString.Favorite), BackgroundImage = "RoomIcon/0.jpg", Id = "Favorite" };
|
| | | love.Save(false);
|
| | | //添加到house 房间路径列表
|
| | | var currentHome = Config.Instance.Home;
|
| | | currentHome.ListRooms.Insert(0, love.Id);
|
| | | currentHome.Save(false);
|
| | |
|
| | | this.dicRooms["Favorite"] = love;
|
| | | }
|
| | | }
|
| | |
|
| | | /// <summary>
|
| | | /// 从一堆文字中,获取这一堆文字里面数字字符串的最长长度
|
| | | /// </summary>
|
| | | /// <param name="listText"></param>
|
| | | /// <returns></returns>
|
| | | private int GetNumberMaxLength(List<string> listText)
|
| | | {
|
| | | int maxLength = 0;
|
| | | foreach (var text in listText)
|
| | | {
|
| | | string value = string.Empty;
|
| | | foreach (var c in text)
|
| | | {
|
| | | if (char.IsNumber(c) == true)
|
| | | {
|
| | | //数字
|
| | | value += c.ToString();
|
| | | continue;
|
| | | }
|
| | | else if (value != string.Empty)
|
| | | {
|
| | | //判断数字长度
|
| | | if (maxLength <= value.Length)
|
| | | {
|
| | | maxLength = value.Length;
|
| | | }
|
| | | value = string.Empty;
|
| | | }
|
| | | }
|
| | | //判断数字长度
|
| | | if (maxLength <= value.Length)
|
| | | {
|
| | | maxLength = value.Length;
|
| | | }
|
| | | }
|
| | | return maxLength;
|
| | | }
|
| | |
|
| | | #endregion
|
| | | }
|
| | | }
|