using Shared.Common;
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter
{
///
/// 房间的逻辑
///
public class HdlRoomLogic
{
#region ■ 变量声明___________________________
///
/// 房间的逻辑
///
private static HdlRoomLogic m_Current = null;
///
/// 房间的逻辑
///
public static HdlRoomLogic Current
{
get
{
if (m_Current == null)
{
m_Current = new HdlRoomLogic();
}
return m_Current;
}
}
///
/// 当前主页选择的房间对象
///
public Room NowMainPageRoom = null;
///
/// 当前分类选择的房间对象
///
public Room NowCategoryRoom = null;
///
/// 所有的房间信息
///
private Dictionary dicRooms = new Dictionary();
#endregion
#region ■ 初始化_____________________________
///
/// 初始化房间信息
/// 从文件中全部读取所有的房间数据到内存
///
public void InitAllRoom()
{
this.NowMainPageRoom = null;
this.NowCategoryRoom = null;
//清空本地缓存
this.dicRooms.Clear();
//检测我的喜爱这个房间对象
this.CheckLoveRoom();
foreach (var roomId in Config.Instance.Home.ListRooms)
{
//从文件里面获取房间对象
var room = this.GetRoomByFilePath($"Room_{roomId}.json");
if (room != null)
{
this.dicRooms[room.Id] = (room);
}
}
//设置当前楼层的ID
Config.Instance.Home.SetCurrentFloorId();
//顺便刷新场景
HdlSceneLogic.Current.ReFreshByLocal();
//刷新房间视图列表
this.RefreshRoomListView();
}
///
/// 从本地重新加载全部的房间
///
public void RefreshAllRoomByLocation()
{
var homeTemp = Config.Instance.Home;
homeTemp.ListRooms.Clear();
var listFile = Global.FileListByHomeId();
//我的喜爱的房间必须要在第0位才行
string fRoom = "Room_Favorite.json";
if (listFile.Contains(fRoom) == true)
{
listFile.Remove(fRoom);
homeTemp.ListRooms.Add("Favorite");
}
var listRoomFile = new List();
foreach (string fileName in listFile)
{
if (fileName.StartsWith("Room_"))
{
string roomId = fileName.Replace("Room_", string.Empty).Replace(".json", string.Empty);
homeTemp.ListRooms.Add(roomId);
listRoomFile.Add(fileName);
}
}
//检测楼层数据的合法性
if (UserCenterResourse.UserInfo.AuthorityNo == 3)
{
this.CheckMemberFloorData(listRoomFile);
}
else
{
this.CheckAdminFloorData(listRoomFile);
}
homeTemp.Save(false);
InitAllRoom();
}
///
/// 刷新房间视图列表
///
public void RefreshRoomListView()
{
Application.RunOnMainThread(() =>
{
MainPage.ListRoomViewFrom.Instance?.RefreshListRoom();
});
}
///
/// 检测楼层数据的合法性
///
///
private void CheckAdminFloorData(List listRoomFile)
{
//没有楼层,则无需处理
if (Config.Instance.Home.FloorDics.Count == 0) { return; }
//主人或者管理员的话,就检测是否存在未分配楼层的房间
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(valueData);
//检测多个手机来回创建,然后又删除之后,楼层数据不能保证100%同步的问题
if (roomTemp.FloorId != string.Empty && Config.Instance.Home.FloorDics.ContainsKey(roomTemp.FloorId) == false)
{
//未知楼层
Config.Instance.Home.FloorDics[roomTemp.FloorId] = Language.StringByID(R.MyInternationalizationString.uUnKnownFloor);
}
}
catch (Exception ex) { HdlLogLogic.Current.WriteLog(ex); }
}
}
///
/// 检测楼层数据的合法性
///
///
private void CheckMemberFloorData(List listRoomFile)
{
//没有楼层,则无需处理
if (Config.Instance.Home.FloorDics.Count == 0) { return; }
//成员的话,就检测是否存在没有房间的楼层
var listEsixtFloor = new List();
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(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();
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 ■ 添加房间___________________________
///
/// 增加房间
///
/// Room.
/// 是否刷新房间视图列表界面
public void AddRoom(Room room, bool refreshRoomView = true)
{
if (Global.IsExistsByHomeId(room.FileName) == true
|| Config.Instance.Home.ListRooms.Contains(room.Id) == true)
{
return;
}
//添加到缓存
this.dicRooms[room.Id] = room;
//把房间ID添加到住宅
Config.Instance.Home.AddRoomId(room.Id);
//生成文件
room.Save();
//备份
HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
if (refreshRoomView == true)
{
//刷新房间视图列表
this.RefreshRoomListView();
}
}
#endregion
#region ■ 删除房间___________________________
///
/// 删除房间
///
/// 房间ID
///
public void RemoveRoom(string roomId)
{
//根据房间Id,获取房间对象
var room = this.GetRoomById(roomId);
if (room == null)
{
return;
}
//删除来自拍照或者系统图库的房间背景图片
if (room.BackgroundImageType == 1 || room.BackgroundImageType == 2)
{
//删除掉原来的自定义图片
if (Global.IsExistsByHomeId(room.BackgroundImage) == true)
{
Global.DeleteFilebyHomeId(room.BackgroundImage);
//删除备份
HdlAutoBackupLogic.DeleteFile(room.BackgroundImage);
}
}
//我的喜爱
var loveRoom = this.GetLoveRoom();
if (loveRoom != null)
{
//移除我的喜爱里面的设备
for (int i = 0; i < room.ListDevice.Count; i++)
{
loveRoom.ListDevice.Remove(room.ListDevice[i]);
}
//移除我的喜爱里面的场景
for (int i = 0; i < room.ListSceneId.Count; i++)
{
loveRoom.ListSceneId.Remove(room.ListSceneId[i]);
}
loveRoom.Save(false);
}
Config.Instance.Home.RemoveRoomId(roomId);
this.dicRooms.Remove(roomId);
string roomFilePath = room.FileName;
if (Global.IsExistsByHomeId(roomFilePath) == true)
{
//删除文件
Global.DeleteFilebyHomeId(roomFilePath);
}
HdlAutoBackupLogic.DeleteFile(roomFilePath);
//根据房间ID,移除指定的真实物理设备的所属房间记录
Common.LocalDevice.Current.DeleteRealDeviceByRoomId(roomId);
//刷新房间视图列表
this.RefreshRoomListView();
}
#endregion
#region ■ 获取房间___________________________
///
/// 获取喜爱房间
///
///
public Room GetLoveRoom()
{
//检测我的喜爱这个房间对象
this.CheckLoveRoom();
return this.dicRooms["Favorite"];
}
///
/// 通过路径获取房间
///
/// The room by file path.
/// Room file path.
private Room GetRoomByFilePath(string roomFilePath)
{
try
{
var roomFile = Global.ReadFileByHomeId(roomFilePath);
var nowRoom = Newtonsoft.Json.JsonConvert.DeserializeObject(Encoding.UTF8.GetString(roomFile));
return nowRoom;
}
catch (Exception ex)
{
HdlLogLogic.Current.WriteLog(ex);
return null;
}
}
///
/// 根据房间Id,获取房间对象
///
/// The room by name.
/// 房间ID
public Room GetRoomById(string roomId)
{
if (this.dicRooms.ContainsKey(roomId) == false)
{
return null;
}
return this.dicRooms[roomId];
}
///
/// 根据设备获取房间名字(楼层+房间名)
///
/// 房间名
/// 设备对象
public string GetRoomNameByDevice(CommonDevice device)
{
var room = this.GetRoomByDevice(device);
return this.GetFloorRoomName(room);
}
///
/// 获取房间名字(楼层+房间名)
///
/// 房间名
/// 房间对象
public string GetFloorRoomName(Room room)
{
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;
}
///
/// 获取设备所在的房间(没有设置有房间则返回null)
///
/// The room by device.
/// 设备对象
public Room GetRoomByDevice(CommonDevice device)
{
string mainKeys = LocalDevice.Current.GetDeviceMainKeys(device);
foreach (var room in this.dicRooms.Values)
{
if (room.IsLove == true)
{
//喜爱房间不处理
continue;
}
if (room.ListDevice.Contains(mainKeys) == true)
{
return room;
}
}
return null;
}
///
/// 通过场景id获取房间名
///
/// The room name by scene identifier.
/// Scene identifier.
public string GetRoomNameBySceneId(int sceneId)
{
var room = GetRoomBySceneId(sceneId);
if (room == null)
{
return null;
}
return room.Name;
}
///
/// 通过场景id获取房间对象
///
/// The room by scene identifier.
/// Scene identifier.
public Room GetRoomBySceneId(int sceneId)
{
foreach (var room in this.dicRooms.Values)
{
if (room.IsLove == true)
{
//喜爱房间不处理
continue;
}
if (room.ListSceneId.Contains(sceneId) == true)
{
return room;
}
}
return null;
}
///
/// 获取当前楼层的房间
///
///
///
public List GetRoomsByFloorId(string id)
{
var listRoom = new List();
if (Config.Instance.Home.FloorDics.Count == 0)
{
//没有楼层
foreach (var room in this.dicRooms.Values)
{
listRoom.Add(room);
}
}
else
{
foreach (var room in this.dicRooms.Values)
{
if (room.FloorId == id)
{
listRoom.Add(room);
}
}
}
return listRoom;
}
///
/// 获取全部的房间
///
///
public List GetAllListRooms()
{
var listRoom = new List();
foreach (var room in this.dicRooms.Values)
{
listRoom.Add(room);
}
return listRoom;
}
///
/// 获取当前楼层的房间名称
///
///
///
public List GetRoomNamesByFloorId(string id)
{
var listName = new List();
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;
}
///
/// 获取当前楼层的房间(拼接了【常用】在第一位)
///
///
///
public List GetRoomsByFloorIdAppendLoveRoom(string id)
{
var listRoom = new List();
if (Config.Instance.Home.FloorDics.Count == 0)
{
//没有楼层
foreach (var room in this.dicRooms.Values)
{
if (room.IsLove == false)
{
listRoom.Add(room);
}
}
}
else
{
foreach (var room in this.dicRooms.Values)
{
if (room.FloorId == id && room.IsLove == false)
{
listRoom.Add(room);
}
}
}
listRoom.Insert(0, GetLoveRoom());
return listRoom;
}
///
/// 获取当前楼层的房间(拼接了【常用】在第一位)
///
///
public List GetRoomsByCurrentFloorIdAppendLoveRoom()
{
return this.GetRoomsByFloorIdAppendLoveRoom(Config.Instance.Home.CurrentFloorId);
}
#endregion
#region ■ 房间方法___________________________
///
/// 设备的房间变更
///
/// 设备对象
/// 新房间Id
/// 是否修改真实物理设备的房间,不出意外,这个值默认为true即可
public void ChangedRoom(CommonDevice device, string roomId, bool saveRealRoom = true)
{
//选择的是未分配
if (roomId == string.Empty)
{
//从原来的房间移除设备
this.DeleteDevice(device);
//移除我的喜爱
this.DeleteLoveDevice(device);
//设备改变房间的话,主页需要重新刷新
UserView.UserPage.Instance.RefreshForm = true;
return;
}
//房间是否修改
if (this.IsRoomChanged(device, roomId) == false)
{
return;
}
//从原来的房间移除设备,这里不删除真实设备的房间
this.DeleteDevice(device, false);
//添加到新的房间
var room = this.GetRoomById(roomId);
if (room != null)
{
this.AddDevice(room, device, saveRealRoom);
}
//设备改变房间的话,主页需要重新刷新
UserView.UserPage.Instance.RefreshForm = true;
}
///
/// 房间名字是否有修改
///
/// 设备对象
/// 新房间Id
///
public bool IsRoomChanged(CommonDevice device, string roomId)
{
var room = this.GetRoomByDevice(device);
if (room == null || room.Id != roomId)
{
return true;
}
return false;
}
///
/// 获取房间所在区域
/// 楼层,房间名
///
///
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
#region ■ 添加设备___________________________
///
/// 添加设备
///
/// 房间对象
/// 要添加的设备对象
/// 是否修改真实物理设备的房间,不出意外,这个值默认为true即可
public void AddDevice(Room i_room, CommonDevice device, bool saveRealRoom)
{
if (device == null)
{
return;
}
//设备信息保存到本地
device.Save();
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
if (i_room.ListDevice.Contains(mainkeys) == false)
{
//保存到本地
i_room.ListDevice.Add(mainkeys);
i_room.Save();
if (i_room.IsLove == false && saveRealRoom == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1)
{
//如果只有一个回路,则修改真实物理设备的房间
LocalDevice.Current.SaveRealDeviceRoomId(new List() { device }, i_room.Id, false);
}
}
}
///
/// 添加喜爱设备
///
/// 要添加的设备对象
public void AddLoveDevice(CommonDevice device)
{
if (device == null)
{
return;
}
//我的喜爱
var loveRoom = this.GetLoveRoom();
if (loveRoom != null)
{
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
if (loveRoom.ListDevice.Contains(mainkeys) == false)
{
//保存到本地
loveRoom.ListDevice.Add(mainkeys);
loveRoom.Save();
}
}
}
#endregion
#region ■ 删除设备___________________________
///
/// 删除设备(这个函数不删除我的喜爱)
///
/// 要删除的设备对象
/// 是否删除真实物理设备的房间
public void DeleteDevice(CommonDevice device, bool deleteReal = true)
{
if (device == null)
{
return;
}
//如果它只有一个回路
if (deleteReal == true && LocalDevice.Current.GetDevicesCountByMac(device.DeviceAddr) == 1)
{
//删除掉它的真实物理设备的所在位置
LocalDevice.Current.DeleteRealDeviceFromRoom(device);
}
//根据设备,获取所在的房间
var room = this.GetRoomByDevice(device);
if (room == null)
{
return;
}
//移除缓存
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
room.ListDevice.Remove(mainkeys);
room.Save();
//更改自动备份
HdlAutoBackupLogic.AddOrEditorFile(room.FileName);
//递归:删除掉以前的旧数据导致的多个房间的问题
this.DeleteDevice(device, deleteReal);
}
///
/// 删除我的喜爱的设备
///
/// 要删除的设备对象
public void DeleteLoveDevice(CommonDevice device)
{
if (device == null)
{
return;
}
//我的喜爱
var loveRoom = this.GetLoveRoom();
if (loveRoom != null)
{
//移除缓存
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
loveRoom.ListDevice.Remove(mainkeys);
loveRoom.Save();
//更改自动备份
HdlAutoBackupLogic.AddOrEditorFile(loveRoom.FileName);
}
}
#endregion
#region ■ 获取设备___________________________
///
/// 获取当前房间下的全部设备
///
///
public List GetRoomListDevice(Room i_room)
{
var dicSort = new Dictionary>();
foreach (var mainKeys in i_room.ListDevice)
{
var device = LocalDevice.Current.GetDevice(mainKeys);
if (device != null)
{
if (dicSort.ContainsKey(device.DeviceAddr) == false)
{
dicSort[device.DeviceAddr] = new List();
}
dicSort[device.DeviceAddr].Add(device.DeviceEpoint);
}
}
var listDevice = new List();
foreach (var strMac in dicSort.Keys)
{
var listEpont = dicSort[strMac];
//排序
listEpont.Sort();
for (int i = 0; i < listEpont.Count; i++)
{
var device = LocalDevice.Current.GetDevice(strMac, listEpont[i]);
listDevice.Add(device);
}
}
return listDevice;
}
///
/// 获取房间设备类型
///
///
///
public List GetDeviceTypes(Room i_room)
{
var typeList = new List();
foreach (var mainKeys in i_room.ListDevice)
{
var device = LocalDevice.Current.GetDevice(mainKeys);
if (device != null)
{
typeList.Add(device.Type);
}
}
return typeList;
}
///
/// 获取该类型的设备
///
///
///
///
public List GetRoomListDevice(Room room, DeviceType deviceType)
{
List typeList = new List();
foreach (var mainKeys in room.ListDevice)
{
var device = LocalDevice.Current.GetDevice(mainKeys);
if (device != null && device.Type == deviceType)
{
typeList.Add(device);
}
}
return typeList;
}
///
/// 获取未分配区域设备
///
///
public List GetUnalloctedDevice()
{
var listDevice = new List();
//已经存在的设备
var listEsxit = new HashSet();
foreach (var room in this.dicRooms.Values)
{
if (room.IsLove == true)
{
//不包含收藏房间
continue;
}
foreach (string mainkeys in room.ListDevice)
{
if (listEsxit.Contains(mainkeys) == false)
{
listEsxit.Add(mainkeys);
}
}
}
//所有设备
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)
{
listDevice.Add(device);
}
}
return listDevice;
}
///
/// 获取全部房间全部的设备
///
///
public List GetAllRoomListDevice()
{
var listDevice = new List();
foreach (var room in this.dicRooms.Values)
{
if (room.IsSharedRoom || room.IsLove)
{
continue;
}
listDevice.AddRange(this.GetRoomListDevice(room));
}
return listDevice;
}
#endregion
#region ■ 设备是否收藏_______________________
///
/// 是否是收藏设备
///
///
///
public bool IsCollectInRoom(CommonDevice device)
{
string mainkeys = LocalDevice.Current.GetDeviceMainKeys(device);
//喜爱房间
var room = this.GetLoveRoom();
return room.ListDevice.Contains(mainkeys);
}
///
/// 是否是收藏设备
///
///
///
public bool IsCollectInRoom(SceneUI scene)
{
//喜爱房间
var room = this.GetLoveRoom();
return room.ListSceneId.Contains(scene.Id);
}
#endregion
#region ■ 楼层和房间顺序相关_________________
///
/// 根据楼层的主键获取排序后的房间列表(支持无楼层模式,不获取收藏房间)
///
/// 楼层的主键
/// 分享的房间是否也获取
///
public List GetFloorSortRoom(string i_floorKeys, bool getShard = true)
{
if (i_floorKeys == null)
{
i_floorKeys = string.Empty;
}
Dictionary> dicAllSort = new Dictionary>();
//读取房间顺序
string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile);
var strData = UserCenterLogic.LoadFileContent(fullName);
if (strData != null)
{
dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject>>(strData);
}
var listRoomSort = new List();
if (dicAllSort.ContainsKey(i_floorKeys) == true)
{
listRoomSort = dicAllSort[i_floorKeys];
}
else
{
dicAllSort[i_floorKeys] = listRoomSort;
}
var dicRoom = new Dictionary();
foreach (var room in this.dicRooms.Values)
{
if (room.FloorId != i_floorKeys && i_floorKeys != string.Empty)
{
//不是同一个楼层
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;
}
var listSortRoom = new List();
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;
}
///
/// 保存房间的顺序
///
/// 楼层主键
/// 房间顺序(房间的主键)
public void SaveRoomSort(string i_floorKeys, List listSort)
{
Dictionary> dicAllSort = new Dictionary>();
//读取房间顺序
string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.RoomSortFile);
var strData = UserCenterLogic.LoadFileContent(fullName);
if (strData != null)
{
dicAllSort = Newtonsoft.Json.JsonConvert.DeserializeObject>>(strData);
}
//保存顺序
dicAllSort[i_floorKeys] = listSort;
UserCenterLogic.SaveFileContent(fullName, dicAllSort);
dicAllSort.Clear();
}
///
/// 获取排序后的楼层
///
///
public Dictionary GetFloorSortList()
{
//读取楼层顺序
var listFloorSort = new List();
string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile);
var strData = UserCenterLogic.LoadFileContent(fullName);
if (strData != null)
{
listFloorSort = Newtonsoft.Json.JsonConvert.DeserializeObject>(strData);
}
foreach (string keys in Common.Config.Instance.Home.FloorDics.Keys)
{
if (listFloorSort.Contains(keys) == false)
{
//新添加的楼层
listFloorSort.Add(keys);
}
}
var dic = new Dictionary();
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;
}
///
/// 保存楼层的顺序
///
/// 楼层的主键
public void SaveFloorSort(List listSort)
{
string fullName = UserCenterLogic.CombinePath(DirNameResourse.LocalMemoryDirectory, DirNameResourse.FloorSortFile);
//保存顺序
UserCenterLogic.SaveFileContent(fullName, listSort);
}
#endregion
#region ■ 克隆房间对象_______________________
///
/// 克隆房间对象
///
///
public Room CloneRoomClass(Room i_room)
{
var newRoom = new Room();
//克隆属性
newRoom.Id = i_room.Id;
newRoom.FloorId = i_room.FloorId;
newRoom.TemperatrueDevice = i_room.TemperatrueDevice;
newRoom.Temperatrue = i_room.Temperatrue;
newRoom.HumidityDevice = i_room.HumidityDevice;
newRoom.Humidity = i_room.Humidity;
newRoom.Name = i_room.Name;
newRoom.BackgroundImage = i_room.BackgroundImage;
newRoom.BackgroundImageType = i_room.BackgroundImageType;
return newRoom;
}
#endregion
#region ■ 一般方法___________________________
///
/// 检测我的喜爱这个房间对象
///
private void CheckLoveRoom()
{
if (Config.Instance.Home.ListRooms.Contains("Favorite") == false)
{
//默认添加喜爱的房间--禁止修改房间名
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;
}
}
#endregion
}
}