HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-28 8b4d79ca03495e522a1953e04ca17527f33c853a
ZigbeeApp/Shared/Common/SceneUI.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using Shared.Phone.Device.Category;
using Shared.Phone.UserCenter;
namespace Shared.Common
@@ -61,10 +62,10 @@
        /// 标识当前场景是否是分享的场景
        /// </summary>
        public bool IsSharedScene = false;
        /// <summary>
        /// 是否收藏
        /// </summary>
        public bool IsCollected = false;
        ///// <summary>
        ///// 是否收藏
        ///// </summary>
        //public bool IsCollected = false;
        /// <summary>
        /// 延时执行时间--整个场景延时(不是延时场景里面的执行目标)
@@ -77,6 +78,10 @@
        /// 场景执行目标
        /// </summary>
        public List<ZigBee.Device.Scene.AddSceneMemberData> AddSceneMemberDataList = new List<ZigBee.Device.Scene.AddSceneMemberData> { };
        ///// <summary>
        ///// RoomId
        ///// </summary>
        //public string RoomId = string.Empty;
        #endregion
@@ -93,21 +98,136 @@
        #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>