From 52005ed57f3f7bc796fdd1a878e4f298a126f1e8 Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期二, 29 十月 2019 16:48:47 +0800
Subject: [PATCH] 2019.10.29-3
---
ZigbeeApp/Shared/Common/Room.cs | 225 +++++++++++++++++++++++++++++++++++---------------------
1 files changed, 140 insertions(+), 85 deletions(-)
diff --git a/ZigbeeApp/Shared/Common/Room.cs b/ZigbeeApp/Shared/Common/Room.cs
index 64e0190..23c861c 100644
--- a/ZigbeeApp/Shared/Common/Room.cs
+++ b/ZigbeeApp/Shared/Common/Room.cs
@@ -140,11 +140,28 @@
/// <summary>
/// 鎵�鏈夋埧闂寸殑鎵�鏈夎澶囩被鍨�
- /// 鍏堣皟鐢� GetAllRoomDeviceTypeList()
/// </summary>
/// <value>All room device type list.</value>
[Newtonsoft.Json.JsonIgnore]
- public static List<DeviceType> AllRoomDeviceTypeList = new List<DeviceType> { };
+ public static List<DeviceType> AllRoomDeviceTypeList
+ {
+ get
+ {
+ var typeList = new List<DeviceType> { };
+ foreach (var deviceUI in AllRoomDeviceUIList)
+ {
+ if (deviceUI == null || deviceUI.CommonDevice == null)
+ {
+ continue;
+ }
+ if (!typeList.Contains(deviceUI.CommonDevice.Type))
+ {
+ typeList.Add(deviceUI.CommonDevice.Type);
+ }
+ }
+ return typeList;
+ }
+ }
/// <summary>
/// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夊満鏅�
@@ -191,11 +208,41 @@
/// <summary>
/// 鑾峰彇鎵�鏈夋埧闂寸殑鎵�鏈夎澶�
- /// 璇峰厛璋冪敤 GetAllRoomDeviceUIList()鏂规硶
/// </summary>
/// <value>All room device UIL ist.</value>
[Newtonsoft.Json.JsonIgnore]
- public static List<DeviceUI> AllRoomDeviceUIList = new List<DeviceUI> { };
+ public static List<DeviceUI> AllRoomDeviceUIList
+ {
+ get
+ {
+ List<DeviceUI> deviceList = new List<DeviceUI>();
+ for (int i = 0; i < Lists.Count; i++)
+ {
+ var room = Lists[i];
+ if (room.IsSharedRoom)
+ {
+ continue;
+ }
+ if (room.DeviceUIList.Count == 0)
+ {
+ continue;
+ }
+ for (int j = 0; j < room.DeviceUIList.Count; j++)
+ {
+ var device = room.DeviceUIList[j];
+ if (device == null || device.CommonDevice == null)
+ {
+ continue;
+ }
+ if (deviceList.Find((obj) => obj.FileName == device.FileName) == null)
+ {
+ deviceList.Add(device);
+ }
+ }
+ }
+ return deviceList;
+ }
+ }
#endregion
@@ -349,7 +396,7 @@
/// 鑾峰彇鍠滅埍鎴块棿
/// </summary>
/// <returns></returns>
- public Room GetLoveRoom()
+ public Room GetLoveRoom()
{
return CurrentRoom.GetRoomById(LoveRoomId);
}
@@ -459,6 +506,10 @@
/// <param name="roomId">鎴块棿ID</param>
public Room GetRoomById(string roomId)
{
+ if (string.IsNullOrEmpty(roomId))
+ {
+ return null;
+ }
return Lists.Find((obj) => obj.Id == roomId);
}
@@ -710,8 +761,9 @@
public void AddDevice(string deviceUIFilePath)
{
if (string.IsNullOrEmpty(deviceUIFilePath))
- {
- return;
+
+ {
+ return;
}
var jsonInfo = Encoding.UTF8.GetString(Global.ReadFileByHomeId(deviceUIFilePath));
var deviceUI = Newtonsoft.Json.JsonConvert.DeserializeObject<DeviceUI>(jsonInfo);
@@ -815,39 +867,6 @@
#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>
@@ -855,25 +874,6 @@
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>
@@ -947,6 +947,36 @@
return typeList;
}
+ /// <summary>
+ /// 鑾峰彇璇ユゼ灞傜殑鍦烘櫙
+ /// </summary>
+ /// <param name="floorId"></param>
+ /// <returns></returns>
+ public List<SceneUI> GetSceneUIsByFloorId(string floorId)
+ {
+ var rooms = GetRoomsByFloorId(floorId);
+ if (rooms == null)
+ {
+ return null;
+ }
+ var sceneList = new List<SceneUI> { };
+ foreach (var r in rooms)
+ {
+ if (r.SceneUIList.Count == 0)
+ {
+ continue;
+ }
+ foreach (var sceneUI in r.SceneUIList)
+ {
+ if (sceneUI == null)
+ {
+ continue;
+ }
+ sceneList.Add(sceneUI);
+ }
+ }
+ return sceneList;
+ }
#endregion
@@ -962,25 +992,21 @@
/// <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)
+ var scenes = GetSceneUIsByFloorId(FloorId);
+ if(scenes!=null && scenes.Count>0)
{
- return -1;
+ if (scenes.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)
@@ -988,12 +1014,13 @@
//娣诲姞鏂版垚鍛�
var addSceneMemberData = new ZigBee.Device.Scene.AddSceneMemberData
{
- DeviceAddr = common.DeviceAddr,
Type = common.Type,
+ DeviceAddr = common.DeviceAddr,
Epoint = common.Epoint,
ScenesId = getSceneIdData.NewScenesId,
TaskList = common.TaskList,
DelayTime = common.DelayTime,
+ MemberNumber=common.MemberNumber,
ElseScenesId = common.ElseScenesId
};
//common.ScenesId = getSceneIdData.NewScenesId;
@@ -1043,17 +1070,30 @@
/// <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();
+ //var sceneUI = new SceneUI
+ //{
+ // Name = scene.Name,
+ // Id = scene.Id,
+ // IconPath = scene.IconPath,
+ // IconPathType = scene.IconPathType,
+ // AddSceneMemberDataList = scene.AddSceneMemberDataList
+ //};
+ SceneUIList.Add(scene);
+ SceneUIFilePathList.Add(scene.FileName);
+ scene.Save();
+ Save();
+ }
+
+ /// <summary>
+ /// 鍒犻櫎鍦烘櫙
+ /// </summary>
+ /// <param name="scene"></param>
+ public void DeleteScene(SceneUI scene)
+ {
+ //scene.IsCollected = false;
+ scene.Save();
+ SceneUIList.Remove(scene);
+ SceneUIFilePathList.Remove(scene.FileName);
Save();
}
@@ -1125,7 +1165,8 @@
ScenesId = sceneUI.Id,
TaskList = addCommon.TaskList,
DelayTime = addCommon.DelayTime,
- ElseScenesId = addCommon.ElseScenesId
+ ElseScenesId = addCommon.ElseScenesId,
+ MemberNumber=addCommon.MemberNumber
};
//娣诲姞鏂版垚鍛� 杩斿洖缁撴灉
var addSceneMemberResponseAllData = await ZigBee.Device.Scene.AddSceneMemberAsync(addSceneMemberData);
@@ -1196,7 +1237,21 @@
}
return null;
}
-
+ /// <summary>
+ /// 鑾峰彇璇ユゼ灞傛墍鏈夊満鏅�
+ /// </summary>
+ /// <param name="floorId"></param>
+ /// <returns></returns>
+ public List<SceneUI> GetSameFloorScenes(string floorId)
+ {
+ List<SceneUI> sceneUIs = new List<SceneUI> { };
+ var rooms= CurrentRoom.GetRoomsByFloorId(floorId);
+ foreach(var r in rooms)
+ {
+ sceneUIs.AddRange(r.SceneUIList);
+ }
+ return sceneUIs;
+ }
#endregion
#region 鈼� 鍒锋柊鍦烘櫙_________________________
@@ -1431,6 +1486,6 @@
}
#endregion
-
+
}
}
--
Gitblit v1.8.0