黄学彪
2020-02-21 bd46c57c77c276014db3192a4e2cc96e23c93202
ZigbeeApp/Shared/Phone/UserCenter/Device/Bind/AddScenePage.cs
@@ -26,26 +26,54 @@
        /// 构造函数
        /// </summary>
        /// <param name="doorLock"></param>
        public AddScenePage(ZigBee.Device.Panel key)
        public AddScenePage(ZigBee.Device.Panel key, List<ScenesListInfo> gwScenesList)
        {
            this.currentKey = key;
            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>();
        /// <summary>
        /// 网关中的场景列表
        /// </summary>
        public List<ScenesListInfo> gwCurScenesList = new List<ScenesListInfo>();
        #endregion
        /// <summary>
@@ -67,7 +95,6 @@
            var btnAddFrameLayout = new FrameLayout
            {
                X = Application.GetRealWidth(830),
                Width = Application.GetRealWidth(200),
            };
            this.titleFrameLayout.AddChidren(btnAddFrameLayout);
@@ -77,7 +104,8 @@
                X = Application.GetRealWidth(15),
                Text = Language.StringByID(R.MyInternationalizationString.FirstFloor),
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextSize = 15,
                TextSize = 14,
                IsBold = true,
                TextAlignment = TextAlignment.CenterRight,
            };
            btnAddFrameLayout.AddChidren(btnFloorText);
@@ -95,9 +123,20 @@
            {
                SideslipFramelayout();
            };
            if (Common.Config.Instance.Home.FloorDics.Count == 0)
            {
                btnAddFrameLayout.Width = 0;
            }
            else
            {
                btnAddFrameLayout.Width = Application.GetRealWidth(200);
            }
            MidFrameLayoutContent(btnFloorText);
        }
        /// <summary>
        /// 中部布局
        /// </summary>
        async void MidFrameLayoutContent(Button btnFloorText)
        {
            #region UI
@@ -136,6 +175,7 @@
                TextID = R.MyInternationalizationString.Save,
                BackgroundColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextColor = Shared.Common.ZigbeeColor.Current.XMWhite,
                IsBold = true,
                TextSize = 16,
            };
            bottomFrameLayout.AddChidren(btnFinifh);
@@ -194,7 +234,6 @@
            Shared.Common.Room curRoom = roomList[0];
            int index = 0;
            RefreshRoomList(curRoom, ref index);
            RefreshSceneList(roomList[index]);
            if (curRoom.SceneUIList.Count == 0)
            {
@@ -541,7 +580,10 @@
            RefreshSceneList(curRoom);
        }
        //按键绑定场景表显示
        /// <summary>
        /// 按键绑定场景表显示
        /// </summary>
        /// <param name="curRoom"></param>
        void RefreshSceneList(Shared.Common.Room curRoom)
        {
            midVerticalScrolViewLayout.RemoveAll();
@@ -551,7 +593,14 @@
            }
            Button oldScene = null;
            int curIndex = 0;
            foreach (var scene in curRoom.SceneUIList)
            var currentSceneUIList = GetMatchSceneUIList(curRoom);
            if (currentSceneUIList.Count == 0)
            {
                btnFinifh.Enable = false;
                btnFinifh.BackgroundColor = Shared.Common.ZigbeeColor.Current.XMUnSelect;
                return;
            }
            foreach (var scene in currentSceneUIList)
            {
                #region 绑定表UI显(无数据处理)
                var rowLayout = new FrameLayout()
@@ -567,16 +616,17 @@
                    Y = Application.GetMinRealAverage(46),
                    Width = Application.GetMinRealAverage(81),
                    Height = Application.GetMinRealAverage(81),
                    UnSelectedImagePath = "Scene/SceneIcon.png"
            };
                    UnSelectedImagePath = "Scene/SceneIcon.png",// scene.IconPath,
                };
                rowLayout.AddChidren(devicePic);
                var btnBindName = new Button()
                {
                    Width = Application.GetRealWidth(500 - 120),
                    Width = Application.GetRealWidth(790),
                    X = devicePic.Right + Application.GetRealWidth(20),
                    TextColor = Shared.Common.ZigbeeColor.Current.TextBlack,
                    TextAlignment = TextAlignment.CenterLeft,
                    TextSize = 15,
                };
                rowLayout.AddChidren(btnBindName);
@@ -703,7 +753,9 @@
            }
        }
        // 侧边导航栏
        /// <summary>
        /// 楼层选择的侧边导航栏
        /// </summary>
        void SideslipFramelayout()
        {
            var dialog = new Dialog
@@ -734,8 +786,9 @@
                Height = Application.GetRealHeight(58),
                X = Application.GetRealWidth(81),
                Y = Application.GetRealHeight(81),
                TextColor = Shared.Common.ZigbeeColor.Current.XMGray3,
                TextColor = Shared.Common.ZigbeeColor.Current.XMBlack,
                TextSize = 14,
                IsBold = true,
                TextAlignment = TextAlignment.CenterLeft,
                TextID = R.MyInternationalizationString.SelectFloor,
            };
@@ -786,6 +839,7 @@
                if (currentKey.currentSelectFloorId == floorId)
                {
                    btnAllMethod.IsSelected = true;
                    btnAllMethod.IsBold = true;
                    btnMethodText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                }
@@ -813,6 +867,7 @@
                        oldbuttonText = btnMethodText;
                        btnMethodText.IsSelected = true;
                        oldbuttonText.TextColor = Shared.Common.ZigbeeColor.Current.XMBlack;
                        oldbuttonText.IsBold = true;
                    }
                    //获取楼层对应的房间
@@ -855,7 +910,10 @@
            }
        }
        //当前按键所有显示房间的所有场景处理
        /// <summary>
        /// 当前按键所有显示房间的所有场景处理
        /// </summary>
        /// <returns></returns>
        List<SceneUI> GetALlDispalyRoomSceneList()
        {
            currentKeyAllRoomSceneList.Clear();
@@ -880,6 +938,24 @@
            }
            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)
            {
                var gwSc = gwCurScenesList.Find(obj => (obj.ScenesId == scene.Id));
                if (gwSc != null)
                {
                    tempSceneUIList.Add(scene);
                }
            }
            return tempSceneUIList;
        }
        public void DeviceInfoChange(CommonDevice common, string typeTag)
        {