| | |
| | | [Newtonsoft.Json.JsonIgnore] |
| | | public static List<SceneRoomUI> AllSceneRoomUIList = new List<SceneRoomUI> { }; |
| | | |
| | | /// <summary> |
| | | /// 编辑场景 |
| | | /// </summary> |
| | | /// <param name="sceneUI">sceneUI</param> |
| | | /// <param name="room">Room.</param> |
| | | 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(); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | } |
| | | } |