黄学彪
2020-12-17 9f326f4000847e6167d8166fa2f6a66f53cb3734
ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorTargetSelectForm.cs
@@ -22,7 +22,7 @@
        /// <summary>
        /// 桌布控件
        /// </summary>
        private FrameLayout frameTable = null;
        private NormalFrameLayout frameTable = null;
        /// <summary>
        /// 房间对象
        /// </summary>
@@ -66,23 +66,51 @@
            var frameBack = new FrameLayout();
            frameBack.Height = Application.GetRealHeight(204);
            bodyFrameLayout.AddChidren(frameBack);
            var scrolContr = new HorizontalScrolViewLayout();
            scrolContr.Gravity = Gravity.CenterVertical;
            scrolContr.Height = frameBack.Height;
            frameBack.AddChidren(scrolContr);
            //桌布控件
            this.frameTable = new FrameLayout();
            this.frameTable = new NormalFrameLayout();
            frameTable.Y = frameBack.Bottom;
            frameTable.Height = bodyFrameLayout.Height - frameBack.Height;
            bodyFrameLayout.AddChidren(frameTable);
            //其他
            var tempRoom = new Common.Room();
            tempRoom.Name = Language.StringByID(R.MyInternationalizationString.uOther);
            foreach (var mainKeys in this.listEsixtDevice)
            {
                var device = HdlDeviceCommonLogic.Current.GetDevice(mainKeys);
                if (device == null)
                {
                    continue;
                }
                //这个手机弄弄,那个手机弄弄的情况下,
                //采用后备操作 -> 新建一个临时房间对象出来
                if (HdlRoomLogic.Current.GetRoomByDevice(device) == null)
                {
                    tempRoom.ListDevice.Add(HdlDeviceCommonLogic.Current.GetDeviceMainKeys(device));
                }
            }
            HdlThreadLogic.Current.RunMainInThread(() =>
            {
                if (dicRoom.ContainsKey(nowSelectFloorId) == true && dicRoom[nowSelectFloorId].Count > 0)
                {
                    //初始化房间控件
                    this.InitRoomControl(scrolContr, dicRoom[nowSelectFloorId]);
                    var listRoom = new List<Common.Room>();
                    listRoom.AddRange(dicRoom[nowSelectFloorId]);
                    if (tempRoom.ListDevice.Count > 0)
                    {
                        //显示新建的临时房间对象
                        listRoom.Add(tempRoom);
                    }
                    var roomContr = new RoomDeviceGroupMenuControl(listRoom);
                    frameBack.AddChidren(roomContr);
                    roomContr.SelectRoomEvent += (myRoom) =>
                    {
                        //初始化设备行
                        this.InitDeviceControl(myRoom);
                    };
                    roomContr.InitControl();
                    //确定按钮
                    var btnOk = new BottomClickButton();
@@ -95,6 +123,11 @@
                        //界面关闭
                        this.CloseForm();
                    };
                    //查看模板时,不允许编辑
                    if (Common.Config.Instance.Home.IsShowTemplate == true)
                    {
                        btnOk.CanClick = false;
                    }
                }
                else
                {
@@ -114,7 +147,8 @@
        private void InitTopRightMenuControl()
        {
            //房间分组
            foreach (var room in Common.Room.Lists)
            var listRoom = HdlRoomLogic.Current.GetAllListRooms();
            foreach (var room in listRoom)
            {
                //检测该房间能否显示
                if (this.CheckCanShowRow(room) == false)
@@ -134,11 +168,22 @@
            }
            //获取楼层
            var dicFloor = Common.Room.CurrentRoom.GetFloorSortList();
            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
            if (dicFloor.Count == 0)
            {
                return;
            }
            int indexTemp = 1;
            foreach (var floorId in dicRoom.Keys)
            {
                if (dicFloor.ContainsKey(floorId) == false)
                {
                    //这是多台手机瞎搞之后出现的后备补救措施
                    dicFloor[floorId] = Language.StringByID(R.MyInternationalizationString.uOther) + indexTemp;
                    indexTemp++;
                }
            }
            var btnIconContr = new MostRightIconControl(69, 69);
            btnIconContr.UnSelectedImagePath = "Item/Drop_Down.png";
            topFrameLayout.AddChidren(btnIconContr);
@@ -161,7 +206,7 @@
            btnIconContr.ButtonClickEvent += (sender, e) =>
            {
                //楼层菜单
                var contr = new TopRightMenuControl(dicFloor.Count, 449, Language.StringByID(R.MyInternationalizationString.SelectFloor));
                var contr = new TopRightMenuControl(dicFloor.Count, 2, Language.StringByID(R.MyInternationalizationString.SelectFloor));
                foreach (var floorId in dicFloor.Keys)
                {
                    contr.AddRowMenu(dicFloor[floorId], "Floor/Floor.png", "Floor/FloorSelected.png", () =>
@@ -175,88 +220,6 @@
                }
            };
        }
        #endregion
        #region ■ 初始化房间控件_____________________
        /// <summary>
        /// 初始化房间控件
        /// </summary>
        /// <param name="scrolContr">容器</param>
        /// <param name="listRoom">房间列表</param>
        private void InitRoomControl(HorizontalScrolViewLayout scrolContr, List<Common.Room> listRoom)
        {
            string oldRoomId = listRoom[0].Id;
            FrameLayoutControl oldFrameBack = null;
            NormalViewControl oldBtnText = null;
            //弄个空的进去占位置
            var frameTemp = new FrameLayout();
            frameTemp.Height = scrolContr.Height;
            frameTemp.Width = ControlCommonResourse.XXLeft / 2;
            scrolContr.AddChidren(frameTemp);
            for (int i = 0; i < listRoom.Count; i++)
            {
                var room = listRoom[i];
                //带图片的
                var frameBack = new FrameLayoutControl();
                frameBack.UseClickStatu = false;
                frameBack.Gravity = Gravity.Center;
                frameBack.Height = Application.GetRealHeight(159);
                frameBack.Width = Application.GetRealWidth(255);
                if (i == 0)
                {
                    frameBack.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
                    oldFrameBack = frameBack;
                }
                else
                {
                    frameBack.BackgroundImagePath = "Item/RoomIconBackground.png";
                }
                scrolContr.AddChidren(frameBack);
                //文字
                var btnText = new NormalViewControl(frameBack.Width - (int)(frameBack.Height * 0.47), frameBack.Height, false);
                btnText.Gravity = Gravity.CenterHorizontal;
                btnText.Text = room.Name;
                btnText.TextSize = 12;
                btnText.TextAlignment = TextAlignment.Center;
                if (i == 0)
                {
                    btnText.TextColor = UserCenterColor.Current.White;
                    oldBtnText = btnText;
                }
                else
                {
                    btnText.TextColor = UserCenterColor.Current.TextGrayColor1;
                }
                frameBack.AddChidren(btnText, ChidrenBindMode.BindEventOnly);
                frameBack.ButtonClickEvent += (sender, e) =>
                {
                    if (oldRoomId == room.Id)
                    {
                        //同一个东西
                        return;
                    }
                    oldRoomId = room.Id;
                    //状态变更
                    frameBack.BackgroundImagePath = "Item/RoomIconBackgroundSelected.png";
                    btnText.TextColor = UserCenterColor.Current.White;
                    oldFrameBack.BackgroundImagePath = "Item/RoomIconBackground.png";
                    oldBtnText.TextColor = UserCenterColor.Current.TextGrayColor1;
                    oldFrameBack = frameBack;
                    oldBtnText = btnText;
                    //初始化设备行
                    this.InitDeviceControl(room);
                };
            }
            //初始化设备行
            this.InitDeviceControl(listRoom[0]);
        }
        #endregion
        #region ■ 初始化设备控件_____________________
@@ -282,9 +245,9 @@
            frameTable.AddChidren(listView);
            var listDevice = new List<ZigBee.Device.CommonDevice>();
            foreach (var deviceUi in room.DeviceUIList)
            foreach (var deviceKeys in room.ListDevice)
            {
                var device = deviceUi.CommonDevice;
                var device = HdlDeviceCommonLogic.Current.GetDevice(deviceKeys);
                //检测设备
                if (this.CheckCanShowDevice(device) == true)
                {
@@ -295,15 +258,15 @@
            for (int i = 0; i < listDevice.Count; i++)
            {
                var device = listDevice[i];
                string mainKey = Common.LocalDevice.Current.GetDeviceMainKeys(device);
                string mainKey = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(device);
                var rowDevice = new FrameRowControl(listView.rowSpace / 2);
                listView.AddChidren(rowDevice);
                //图标
                var btnIcon = rowDevice.AddLeftIcon(81);
                Common.LocalDevice.Current.SetDeviceIconToControl(btnIcon, device);
                HdlDeviceCommonLogic.Current.SetDeviceIconToControl(btnIcon, device);
                //设备名称
                var btnName = rowDevice.AddLeftCaption(Common.LocalDevice.Current.GetDeviceEpointName(device), 600);
                var btnName = rowDevice.AddLeftCaption(HdlDeviceCommonLogic.Current.GetDeviceEpointName(device), 700);
                btnName.TextSize = 15;
                //选择
                var btnSelect = rowDevice.AddMostRightEmptyIcon(58, 58);
@@ -330,6 +293,11 @@
                        listEsixtDevice.Remove(mainKey);
                    }
                };
                //查看模板时,不允许编辑
                if (Common.Config.Instance.Home.IsShowTemplate == true)
                {
                    rowDevice.CanClick = false;
                }
            }
            listDevice = null;
            //调整控件真实高度
@@ -357,7 +325,7 @@
        /// <returns></returns>
        private bool CheckCanShowRow(Common.Room room)
        {
            if (room.DeviceUIList.Count == 0)
            if (room.ListDevice.Count == 0)
            {
                return false;
            }
@@ -365,10 +333,11 @@
            {
                return false;
            }
            foreach (var deviceUi in room.DeviceUIList)
            foreach (var deviceKeys in room.ListDevice)
            {
                //检测该设备能否显示
                if (this.CheckCanShowDevice(deviceUi.CommonDevice) == false)
                var device = HdlDeviceCommonLogic.Current.GetDevice(deviceKeys);
                if (this.CheckCanShowDevice(device) == false)
                {
                    continue;
                }
@@ -391,7 +360,7 @@
                return false;
            }
            //如果是传感器,或者是没有开关簇的话(这里判断的是输入簇)
            if ((device.Type == ZigBee.Device.DeviceType.IASZone) || Common.LocalDevice.Current.InDeviceIsCanOnOff(device) == false)
            if ((device.Type == ZigBee.Device.DeviceType.IASZone) || HdlDeviceCommonLogic.Current.InDeviceIsCanOnOff(device) == false)
            {
                return false;
            }