using System; using System.Collections.Generic; using Shared.Phone.Device.Category; namespace Shared.Common { /// /// 在分类场景中使用,展示要加上房间的名称 /// [System.Serializable] public class SceneRoomUI { /// /// 场景信息 /// public SceneUI sceneUI; /// /// 房间 /// public Room room; /// /// 所有的场景和房间信息 /// public static void GetAllSceneRoomUIList() { //选择场景--所有房间的所有场景 AllSceneRoomUIList.Clear(); List sceneIdList = new List { }; foreach (var r in Shared.Common.Room.Lists) { if (r.SceneUIList.Count == 0) { continue; } foreach (var scene in r.SceneUIList) { if (scene == null) { continue; } if(!sceneIdList.Contains(scene.Id)) { var sceneRoomUI = new SceneRoomUI { sceneUI = scene, room = r }; sceneIdList.Add(scene.Id); AllSceneRoomUIList.Add(sceneRoomUI); } } } } /// /// 所有的场景和房间信息 -请先调用 GetAllSceneRoomUIList /// [Newtonsoft.Json.JsonIgnore] public static List AllSceneRoomUIList = new List { }; /// /// 编辑场景 /// /// sceneUI /// Room. public static void EditScene(SceneUI sceneUI,Room room) { Application.RunOnMainThread(async () => { try { CommonPage.Loading.Start(); //从网关中反序列化出对应的房间设备 var sceneDeviceList = await ZigBee.Device.Scene.GetSceneDeviceListAsync(sceneUI.Id); if (sceneDeviceList == null) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine); //CommonPage.Instance.FailureToServer(); return; } if (Shared.Common.Room.AllRoomDeviceUIList.Count == 0) { Shared.Common.Room.GetAllRoomDeviceUIList(); if (Shared.Common.Room.AllRoomDeviceUIList.Count == 0) { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ThisSceneHaveNoDevice); } //return; } if (sceneDeviceList.getSceneDeviceListInfo != null) { var deviceList = sceneDeviceList.getSceneDeviceListInfo.DeviceList; //CategoryAddScene.sceneTargetDevicesList?.Clear(); //累加延时 int AddedDelayTime = 0; if (deviceList != null && Shared.Common.Room.AllRoomDeviceUIList.Count != 0) { foreach (var sceneDev in deviceList) { if (sceneDev.Type == 0) { foreach (var dev in Shared.Common.Room.AllRoomDeviceUIList) { if (dev == null || dev.CommonDevice == null) { continue; } if (dev.CommonDevice.DeviceAddr == sceneDev.DeviceAddr && dev.CommonDevice.DeviceEpoint == sceneDev.Epoint) { if (sceneDev.DelayTime - AddedDelayTime > 0) { var sceneTargetDeviceTime = new SceneTargetDeviceUI { Type = 1, DelayTime = sceneDev.DelayTime - AddedDelayTime }; //CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceTime); //CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceTime); var sceneTargetDevice = new SceneTargetDeviceUI { Type = 0, DeviceUI = dev, TaskList = sceneDev.TaskList }; //CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDevice); //CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDevice); AddedDelayTime = sceneDev.DelayTime; } else { var sceneTargetDevice = new SceneTargetDeviceUI { Type = 0, DeviceUI = dev, TaskList = sceneDev.TaskList }; //CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDevice); //CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDevice); } } } } else if (sceneDev.Type == 1) { string localSceneName = string.Empty; var localScene = SceneRoomUI.AllSceneRoomUIList.Find((obj) => obj.sceneUI.Id == sceneDev.ElseScenesId); if (localScene != null) { localSceneName = localScene.sceneUI.Name; } if (sceneDev.DelayTime - AddedDelayTime > 0) { var sceneTargetDeviceTime = new SceneTargetDeviceUI { Type = 1, DelayTime = sceneDev.DelayTime - AddedDelayTime }; //CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceTime); //CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceTime); var sceneTargetDeviceScene = new SceneTargetDeviceUI { Type = 2, ElseScenesId = sceneDev.ElseScenesId, SceneName = localSceneName }; //CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceScene); //CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceScene); AddedDelayTime = sceneDev.DelayTime; } else { var sceneTargetDeviceScene = new SceneTargetDeviceUI { Type = 2, ElseScenesId = sceneDev.ElseScenesId, SceneName = localSceneName }; //CategoryAddScene.sceneTargetDevicesList.Add(sceneTargetDeviceScene); //CategoryAddScene.beforeSceneTargetDevicesList.Add(sceneTargetDeviceScene); } } } } } else { CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.FailedPleaseTryAgain); } var scene = new CategoryAddScene(); Phone.UserView.HomePage.Instance.AddChidren(scene); Phone.UserView.HomePage.Instance.PageIndex += 1; //CategoryAddScene.SceneText = sceneUI.Name; //scene.curRoom = room; //CategoryAddScene.ModifySceneUI = sceneUI; //CategoryAddScene.Modify = true; //CategoryAddScene.ImagePath = sceneUI.IconPath; scene.Show(); } catch (Exception ex) { System.Console.WriteLine($"编辑场景出错---{ex.Message}"); } finally { CommonPage.Loading.Hide(); } }); } } }