黄学彪
2020-03-23 cc0d80c7d86c6d0167269b3408c4b30c24ce84e9
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
@@ -10,19 +10,8 @@
namespace Shared.Phone.UserCenter.DeviceBind
{
    public class AddScenePage : BindCommonLayout, ZigBee.Common.IStatus
    public class AddScenePage : BindCommonLayout
    {
        /// <summary>
        /// 按键模式接收
        /// </summary>
        /// <param name="common">Common.</param>
        public void Changed(CommonDevice common)
        {
            Shared.Application.RunOnMainThread(() =>
            {
            });
        }
        /// 构造函数
        /// </summary>
        /// <param name="doorLock"></param>
@@ -32,22 +21,48 @@
            gwCurScenesList = gwScenesList;
        }
        #region ◆ 变量申明__________________________
        #region  变量申明
        /// <summary>
        /// 当前按键
        /// </summary>
        ZigBee.Device.Panel currentKey;
        //显示被绑定设备或场景的view
        /// <summary>
        /// 显示被绑定设备或场景的view
        /// </summary>
        VerticalScrolViewLayout midVerticalScrolViewLayout;
        /// <summary>
        /// 显示房间的view
        /// </summary>
        HorizontalScrolViewLayout btnHorizontalScrolViewLayout;
        /// <summary>
        /// 按键配置的目标列表
        /// </summary>
        List<CommonDevice> targetList = new List<CommonDevice>();//临时目标列表
        List<Room> roomList = new List<Room>();//本地房间列表
        List<CommonDevice> targetList = new List<CommonDevice>();
        /// <summary>
        /// 本地房间列表
        /// </summary>
        List<Room> roomList = new List<Room>();
        /// <summary>
        /// 当绑定表变化后的回调
        /// </summary>
        public Action<List<BindListResponseObj>> action;
        /// <summary>
        /// 保存完成按钮
        /// </summary>
        Button btnFinifh;
        /// <summary>
        /// 楼层文本
        /// </summary>
        Button btnFloorText;
        Dictionary<string, string> dicFloor;//楼层列表
        /// <summary>
        /// 楼层列表
        /// </summary>
        Dictionary<string, string> dicFloor;
        List<SceneUI> currentKeyAllRoomSceneList = new List<SceneUI>();
        public List<ScenesListInfo> gwCurScenesList = new List<ScenesListInfo>();//网关中的场景列表
        /// <summary>
        /// 网关中的场景列表
        /// </summary>
        public List<ScenesListInfo> gwCurScenesList = new List<ScenesListInfo>();
        #endregion
        /// <summary>
@@ -108,6 +123,9 @@
            MidFrameLayoutContent(btnFloorText);
        }
        /// <summary>
        /// 中部布局
        /// </summary>
        async void MidFrameLayoutContent(Button btnFloorText)
        {
            #region UI
@@ -154,14 +172,15 @@
            #region 数据处理  
            //获取楼层
            dicFloor = Common.Room.CurrentRoom.GetFloorSortList();
            dicFloor = HdlRoomLogic.Current.GetFloorSortList();
            currentKey.currentSelectFloorId = BindInfo.GetCurrentSelectFloorId();
            btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName();
            btnFloorText.Text = BindInfo.GetCurrentSelectFloorIdName();
            var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
            if (Common.Config.Instance.Home.FloorDics.Count == 0)
            {
                // 获取没有楼层房间
                foreach (var room in Shared.Common.Room.Lists)
                foreach (var room in listAllRoom)
                {
                    if (string.IsNullOrEmpty(room.FloorId))
                    {
@@ -172,7 +191,7 @@
            else
            {
                // 获取楼层对应对房间
                foreach (var room in Shared.Common.Room.Lists)
                foreach (var room in listAllRoom)
                {
                    if (room.FloorId == currentKey.currentSelectFloorId)
                    {
@@ -205,9 +224,8 @@
            Shared.Common.Room curRoom = roomList[0];
            int index = 0;
            RefreshRoomList(curRoom, ref index);
            //RefreshSceneList(roomList[index]);
            if (curRoom.SceneUIList.Count == 0)
            if (curRoom.ListSceneId.Count == 0)
            {
                btnFinifh.Enable = false;
                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
@@ -451,7 +469,7 @@
                }
                //如果房间中没有场景,则不显示
                if (room.SceneUIList.Count == 0)
                if (room.ListSceneId.Count == 0)
                {
                    continue;
                }
@@ -521,7 +539,7 @@
                    }
                    curRoom = room;
                    currentKey.RoomId = room.Id;
                    if (curRoom.SceneUIList.Count == 0)
                    if (curRoom.ListSceneId.Count == 0)
                    {
                        btnFinifh.Enable = false;
                        btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
@@ -552,11 +570,14 @@
            RefreshSceneList(curRoom);
        }
        //按键绑定场景表显示
        /// <summary>
        /// 按键绑定场景表显示
        /// </summary>
        /// <param name="curRoom"></param>
        void RefreshSceneList(Shared.Common.Room curRoom)
        {
            midVerticalScrolViewLayout.RemoveAll();
            if (curRoom.SceneUIList.Count == 0)
            if (curRoom.ListSceneId.Count == 0)
            {
                return;
            }
@@ -620,7 +641,7 @@
                };
                rowLayout.AddChidren(line2);
                if (curIndex == curRoom.SceneUIList.Count - 1)
                if (curIndex == curRoom.ListSceneId.Count - 1)
                {
                    line2.Visible = false;
                }
@@ -722,7 +743,9 @@
            }
        }
        // 侧边导航栏
        /// <summary>
        /// 楼层选择的侧边导航栏
        /// </summary>
        void SideslipFramelayout()
        {
            var dialog = new Dialog
@@ -835,10 +858,11 @@
                        btnMethodText.IsSelected = true;
                        oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                        oldbuttonText.IsBold = true;
                    }
                    //获取楼层对应的房间
                    foreach (var room in Shared.Common.Room.Lists)
                    }
                    //获取楼层对应的房间
                    var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
                    foreach (var room in listAllRoom)
                    {
                        if (room.FloorId == currentKey.currentSelectFloorId)
                        {
@@ -877,12 +901,16 @@
            }
        }
        //当前按键所有显示房间的所有场景处理
        /// <summary>
        /// 当前按键所有显示房间的所有场景处理
        /// </summary>
        /// <returns></returns>
        List<SceneUI> GetALlDispalyRoomSceneList()
        {
            currentKeyAllRoomSceneList.Clear();
            // 获取所有房间
            foreach (var room in Shared.Common.Room.Lists)
            currentKeyAllRoomSceneList.Clear();
            // 获取所有房间
            var listAllRoom = HdlRoomLogic.Current.GetAllListRooms();
            foreach (var room in listAllRoom)
            {
                //如果房间为喜爱,则不显示
                if (room.IsLove == true)
@@ -890,43 +918,45 @@
                    continue;
                }
                //如果房间中没有场景,则不显示
                if (room.SceneUIList.Count == 0)
                if (room.ListSceneId.Count == 0)
                {
                    continue;
                }
                foreach (var scene in room.SceneUIList)
                {
                foreach (var sceneId in room.ListSceneId)
                {
                    var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
                    if (scene == null)
                    {
                        continue;
                    }
                    currentKeyAllRoomSceneList.Add(scene);
                }
            }
            return currentKeyAllRoomSceneList;
        }
        //获取网关中存在的本地场景列表
        /// <summary>
        /// 获取网关中存在的本地场景列表
        /// </summary>
        /// <param name="curRoom"></param>
        /// <returns></returns>
        List<SceneUI> GetMatchSceneUIList(Shared.Common.Room curRoom)
        {
            var tempSceneUIList = new List<SceneUI>();
            foreach (var scene in curRoom.SceneUIList)
            foreach (var sceneId in curRoom.ListSceneId)
            {
                var gwSc = gwCurScenesList.Find(obj => (obj.ScenesId == scene.Id));
                var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
                if (scene == null)
                {
                    continue;
                }
                var gwSc = gwCurScenesList.Find(obj => (obj.ScenesId == sceneId));
                if (gwSc != null)
                {
                    tempSceneUIList.Add(scene);
                }
            }
            return tempSceneUIList;
        }
        public void DeviceInfoChange(CommonDevice common, string typeTag)
        {
        }
        public void ChangedILogicStatus(ZigBee.Device.Logic logic)
        {
        }
        public void ChangedISceneStatus(Scene scene)
        {
        }
    }
}