| | |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using Shared.Phone.Device.Category; |
| | | using Shared.Phone.UserCenter; |
| | | |
| | | namespace Shared.Common |
| | |
| | | /// 标识当前场景是否是分享的场景
|
| | | /// </summary>
|
| | | public bool IsSharedScene = false; |
| | | /// <summary> |
| | | /// 是否收藏 |
| | | /// </summary> |
| | | public bool IsCollected = false; |
| | | ///// <summary> |
| | | ///// 是否收藏 |
| | | ///// </summary> |
| | | //public bool IsCollected = false; |
| | | |
| | | /// <summary> |
| | | /// 延时执行时间--整个场景延时(不是延时场景里面的执行目标) |
| | |
| | | /// 场景执行目标
|
| | | /// </summary>
|
| | | public List<ZigBee.Device.Scene.AddSceneMemberData> AddSceneMemberDataList = new List<ZigBee.Device.Scene.AddSceneMemberData> { }; |
| | | ///// <summary> |
| | | ///// RoomId |
| | | ///// </summary> |
| | | //public string RoomId = string.Empty; |
| | | |
| | | #endregion |
| | | |
| | |
| | | |
| | | #endregion |
| | | |
| | | #region ◆ 收藏____________________________ |
| | | #region ◆ 通过id获取场景区域_________________ |
| | | |
| | | /// <summary> |
| | | /// collect |
| | | /// GetZone |
| | | /// </summary> |
| | | /// <param name="collected"></param> |
| | | /// <param name="autoBackup"></param> |
| | | public void Collect(bool collected, bool autoBackup = true) |
| | | /// <returns></returns> |
| | | public string GetZone() |
| | | { |
| | | IsCollected = collected; |
| | | Save(autoBackup); |
| | | var room = Room.CurrentRoom.GetRoomBySceneId(Id); |
| | | if(room==null) |
| | | { |
| | | return null; |
| | | } |
| | | var floorName = Shared.Common.Config.Instance.Home.GetFloorNameById(room.FloorId); |
| | | if (floorName == null) |
| | | { |
| | | return room.Name; |
| | | } |
| | | return $"{floorName},{room.Name}"; |
| | | } |
| | | |
| | | #endregion |
| | | |
| | | #region ◆ 编辑场景_________________________ |
| | | /// <summary> |
| | | /// 编辑场景 |
| | | /// </summary> |
| | | /// <param name="sceneUI">sceneUI</param> |
| | | /// <param name="room">Room.</param> |
| | | public static void EditScene(SceneUI sceneUI, Room room) |
| | | { |
| | | Application.RunOnMainThread(async () => |
| | | { |
| | | try |
| | | { |
| | | var targetList = new List<SceneTargetDeviceUI> { }; |
| | | CommonPage.Loading.Start(); |
| | | //从网关中反序列化出对应的房间设备 |
| | | var sceneDeviceList = await ZigBee.Device.Scene.GetSceneDeviceListAsync(sceneUI.Id); |
| | | if (sceneDeviceList == null) |
| | | { |
| | | CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine); |
| | | return; |
| | | } |
| | | |
| | | if (Shared.Common.Room.AllRoomDeviceUIList.Count == 0) |
| | | { |
| | | |
| | | if (Shared.Common.Room.AllRoomDeviceUIList.Count == 0) |
| | | { |
| | | CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ThisSceneHaveNoDevice); |
| | | } |
| | | //return; |
| | | } |
| | | if (sceneDeviceList.getSceneDeviceListInfo != null) |
| | | { |
| | | var deviceList = sceneDeviceList.getSceneDeviceListInfo.DeviceList; |
| | | |
| | | if (deviceList != null && Room.AllRoomDeviceUIList.Count != 0) |
| | | { |
| | | foreach (var sceneDev in deviceList) |
| | | { |
| | | if (sceneDev.Type == 0) |
| | | { |
| | | var dev = Room.AllRoomDeviceUIList.Find((obj) => obj.DeviceEpoint == sceneDev.Epoint && obj.DeviceAddr == sceneDev.DeviceAddr); |
| | | if(dev!=null) |
| | | { |
| | | var sceneTargetDevice = new SceneTargetDeviceUI { |
| | | Type = 0, |
| | | DeviceUI = dev, |
| | | TaskList = sceneDev.TaskList, |
| | | DelayTimeSerialNumber= deviceList.IndexOf(sceneDev) + 1 |
| | | }; |
| | | |
| | | targetList.Add(sceneTargetDevice); |
| | | } |
| | | } |
| | | else if (sceneDev.Type == 1) |
| | | { |
| | | var localScene = Room.AllRoomSceneUIList.Find((obj) => obj.Id == sceneDev.ElseScenesId); |
| | | if (localScene != null) |
| | | { |
| | | var sceneTargetDeviceScene = new SceneTargetDeviceUI { |
| | | Type = 1, |
| | | ElseScenesId = sceneDev.ElseScenesId, |
| | | SceneName = localScene.Name, |
| | | SceneUI = localScene, |
| | | DelayTimeSerialNumber = deviceList.IndexOf(sceneDev) + 1 |
| | | }; |
| | | targetList.Add(sceneTargetDeviceScene); |
| | | } |
| | | } |
| | | else |
| | | { |
| | | var sceneTargetDeviceScene = new SceneTargetDeviceUI |
| | | { |
| | | Type = 2, |
| | | DelayTime = sceneDev.DelayTime, |
| | | DelayTimeSerialNumber = deviceList.IndexOf(sceneDev)+1 |
| | | }; |
| | | targetList.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; |
| | | scene.isModify = true; |
| | | scene.modifyRoom = room; |
| | | scene.modifySceneUI = sceneUI; |
| | | scene.modifySceneTargetDevicesList = targetList; |
| | | scene.Show(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | System.Console.WriteLine($"编辑场景出错---{ex.Message}"); |
| | | } |
| | | finally |
| | | { |
| | | CommonPage.Loading.Hide(); |
| | | } |
| | | }); |
| | | } |
| | | #endregion |
| | | |
| | | #region ◆ 保存____________________________ |
| | | |
| | | /// <summary> |