gxc
2019-12-13 eb424d24e39bab4a245725f35deab3f234ea0f13
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
old mode 100755 new mode 100644
@@ -4,6 +4,9 @@
using Shared.Phone.Device.AC;
using ZigBee.Device;
using Shared.Phone.Device.CommonForm;
using Shared.Phone.UserCenter.DoorLock;
using System.Timers;
using Shared.Phone.Device.DeviceLogic;
namespace Shared.Phone.UserView
{
@@ -72,11 +75,19 @@
        private readonly int sleepSpan = 300;
        private FrameLayout itemView=new FrameLayout();
        private FrameLayout itemView = new FrameLayout();
        /// <summary>
        /// floorBtn
        /// </summary>
        private Button floorBtn;
        /// <summary>
        /// timeDic
        /// </summary>
        private Dictionary<string, Timer> timerDic = new Dictionary<string, Timer> { };
        /// <summary>
        /// sceneScrolView
        /// </summary>
        private VerticalScrolViewLayout sceneScrolView ;
        #endregion
        #region ◆ 接口____________________________
@@ -170,8 +181,8 @@
                                                    return;
                                                }
                                                airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                                (rowFL.GetChildren(0) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
                                                (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                (rowFL.GetChildren(0) as FunctionMainView).IsSelected = airSwitch.OnOffStatus == 1;
                                                (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
                                                //记录回复时间
                                                airSwitch.LastDateTime = DateTime.Now;
                                            }
@@ -250,6 +261,15 @@
                                                ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4099:
                                                var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                                var modeStr = value.Substring(value.Length - 5, 5);
                                                for (int j = 0; j < modeStr.Length; j++)
                                                {
                                                    ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
                                                }
                                                break;
                                        }
                                        (rowFL.GetChildren(0) as FunctionMainView).IsSelected = ac.currentSystemMode != 0;
                                        (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
@@ -319,7 +339,7 @@
                                        {
                                            case 0:
                                                //此属性表明当前亮度程度
                                                dimmableLight.Level = attriButeList[0].AttriButeData ;
                                                dimmableLight.Level = attriButeList[0].AttriButeData;
                                                dimmableLight.LastDateTime = DateTime.Now;
                                                (rowFL.GetChildren(0) as FunctionMainView).IsSelected = true;
                                                (rowFL.GetChildren(0) as FunctionMainView).StatuButton.Text = deviceUI.GetDeviceStatu();
@@ -392,7 +412,7 @@
            #region topview
            var topFrameLayout = new FrameLayout()
            {
                Y=Application.GetRealHeight(60),
                Y = Application.GetRealHeight(60),
                Height = Application.GetRealHeight(127),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
            };
@@ -406,19 +426,25 @@
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Floor.png"
            };
            topFrameLayout.AddChidren(floor);
            if (Config.Instance.Home.FloorDics.Count > 0)
            {
                topFrameLayout.AddChidren(floor);
            }
            floorBtn = new Button
            {
                X=floor.Right,
                Width=Application.GetRealWidth(500),
                Height=Application.GetRealHeight(100),
                X = floor.Right,
                Width = Application.GetRealWidth(500),
                Height = Application.GetRealHeight(100),
                Gravity = Gravity.CenterVertical,
                TextAlignment =TextAlignment.CenterLeft,
                TextColor=ZigbeeColor.Current.GXCTextColor,
                Text=Config.Instance.Home.GetCurrentFloorName
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = ZigbeeColor.Current.GXCTextColor,
                Text = Config.Instance.Home.GetCurrentFloorName
            };
            topFrameLayout.AddChidren(floorBtn);
            if (Config.Instance.Home.FloorDics.Count > 0)
            {
                topFrameLayout.AddChidren(floorBtn);
            }
            var messageBtn = new Button()
            {
@@ -427,24 +453,25 @@
                Height = Application.GetMinRealAverage(69),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Message.png",
                SelectedImagePath="Item/MessageSelected.png"
                SelectedImagePath = "Item/MessageSelected.png"
            };
            topFrameLayout.AddChidren(messageBtn);
            var residecneName = new Button()
            {
                X=Application.GetRealWidth(CommonFormResouce.X_Left),
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Y = Application.GetRealHeight(161),
                Width = Application.GetRealWidth(700),
                Height = Application.GetRealHeight(95),
                TextAlignment = TextAlignment.CenterLeft,
                Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull),
                TextSize = 24,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                IsBold=true
            };
            if(Config.Instance.Home.IsOthreShare)
            if (Config.Instance.Home.IsOthreShare)
            {
                residecneName.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){Config.Instance.Home.Name}";
                residecneName.Text = $"{Config.Instance.Home.Name}";
            }
            AddChidren(residecneName);
@@ -456,7 +483,7 @@
                var tempHomeBtn = send as Button;
                if (Config.Instance.HomeFilePathList.Count == 0)
                {
                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.OK));
                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.Confrim));
                    alert.Show();
                    alert.ResultEventHandler += (senderHouse, eHouse) =>
                    {
@@ -483,7 +510,7 @@
                        Y = Application.GetRealHeight(248),
                        Width = Application.GetMinRealAverage(449),
                        Height = Application.GetMinRealAverage(478),
                        UnSelectedImagePath = "Item/SelectHouse"
                        UnSelectedImagePath = "Item/SelectHouse.png"
                    };
                    closeBGview.AddChidren(bg);
@@ -491,8 +518,8 @@
                    {
                        X = Application.GetRealWidth(35),
                        Y = Application.GetRealHeight(271),
                        Height = Application.GetRealHeight(449),
                        Width = Application.GetRealWidth(440),
                        Height = Application.GetMinRealAverage(449),
                        Width = Application.GetMinRealAverage(440),
                        Radius = CommonPage.BigFormRadius,
                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                    };
@@ -512,7 +539,7 @@
                    var scrolView = new VerticalScrolViewLayout()
                    {
                        Y = changeHomeBtn.Bottom,
                        Height = Application.GetMinRealAverage(305-10)
                        Height = Application.GetMinRealAverage(305 - 10)
                    };
                    changeHomeFL.AddChidren(scrolView);
@@ -532,7 +559,7 @@
                        scrolView.AddChidren(rowView);
                        var pointBtn = new Device.CommonForm.SelectedStatuButton()
                        {
                            X=Application.GetRealWidth(80),
                            X = Application.GetRealWidth(80),
                            Width = Application.GetMinRealAverage(80),
                            Height = Application.GetMinRealAverage(80),
                            Gravity = Gravity.CenterVertical,
@@ -551,9 +578,9 @@
                            SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
                            IsSelected = home.Id == Config.Instance.Home.Id
                        };
                        if(home.IsOthreShare)
                        if (home.IsOthreShare)
                        {
                            nameBtn.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){home.Name}";
                            nameBtn.Text = $"{home.Name}";
                        }
                        rowView.AddChidren(nameBtn);
@@ -569,9 +596,9 @@
                            nameBtn.IsSelected = true;
                            residecneName.Text = home.Name;
                            if(home.IsOthreShare)
                            if (home.IsOthreShare)
                            {
                                nameBtn.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){home.Name}";
                                nameBtn.Text = $"{home.Name}";
                            }
                            clickCheckBtn = pointBtn;
                            clickNameBtn = nameBtn;
@@ -590,7 +617,7 @@
                            residecneName.Text = home.Name;
                            if (home.IsOthreShare)
                            {
                                residecneName.Text = nameBtn.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){home.Name}";
                                residecneName.Text = nameBtn.Text = $"{home.Name}";
                            }
                        }
                        else
@@ -604,136 +631,48 @@
            //消息
            messageBtn.MouseUpEventHandler += (send, e) =>
            {
                var roomList = new Shared.Phone.Device.Room.RoomManagement();
                HomePage.Instance.AddChidren(roomList);
                HomePage.Instance.PageIndex += 1;
                roomList.Show();
            };
            #endregion
            if(CanBindGateway()==false)
            if (CanBindGateway() == false)
            {
                var roomPageView = new PageLayout()
                var roomPageView = new HorizontalPages()
                {
                    Y = Application.GetRealHeight(302),
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonPage.XLeft * 2),
                    Height = Application.GetMinRealAverage(roomPageView_Height),
                    Radius = CommonPage.BigFormRadius,
                    Gravity = Gravity.CenterHorizontal,
                    IsShowPoint = false
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth),
                    Height = Application.GetRealHeight(478),
                };
                AddChidren(roomPageView);
                //突出边距
                roomPageView.TCBJ = Application.GetRealWidth(112);
                //两个page之间的间距
                roomPageView.JMBJ = Application.GetRealWidth(69);
                //当前房间
                if (Shared.Common.Room.CanInitAllRoom == true)
                //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
                var rList = Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom();
                Room.CurrentRoom = rList[0];
                foreach (var room in rList)
                {
                    //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
                    Room.CurrentRoom = Room.Lists[0];
                    foreach (var room in Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
                    var roomView = new Device.CommonForm.RoomView(0, 0);
                    roomPageView.AddChidren(roomView);
                    roomView.Init(room);
                    roomView.action += () =>
                    {
                        var roomBackView = new FrameLayout()
                        {
                            BackgroundImagePath = room.BackgroundImage
                        };
                        roomPageView.AddChidren(roomBackView);
                        var roomBG = new Button()
                        {
                            UnSelectedImagePath = "Room/HomeBG.png",
                        };
                        roomBackView.AddChidren(roomBG);
                        var roomName = new Button()
                        {
                            X = Application.GetRealWidth(20),
                            Y = Application.GetRealHeight(20),
                            Width = Application.GetRealWidth(500),
                            Height = Application.GetRealHeight(80),
                            Text = room.Name,
                            TextAlignment = TextAlignment.CenterLeft,
                            TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                            TextSize = 18,
                        };
                        roomBackView.AddChidren(roomName);
                        var roomListBtn = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = roomPageView.Width - Application.GetRealWidth(100 + 20),
                            Y = Application.GetRealHeight(20),
                            Width = Application.GetMinRealAverage(100),
                            Height = Application.GetMinRealAverage(100),
                            UnSelectedImagePath = "Item/List.png",
                            SelectedImagePath = "Item/ListSelected.png"
                        };
                        roomBackView.AddChidren(roomListBtn);
                        roomListBtn.MouseUpEventHandler += (send, e) =>
                        {
                            //var roomList = new Device.Room.RoomManagement();
                            //HomePage.Instance.AddChidren(roomList);
                            //HomePage.Instance.PageIndex += 1;
                            //roomList.Show();
                            //roomList.action += () =>
                            //{
                            //    Show();
                            //};
                            if(room.IsLove)
                            {
                                return;
                            }
                            var editRoom = new Device.Room.EditRoom();
                            HomePage.Instance.AddChidren(editRoom);
                            HomePage.Instance.PageIndex += 1;
                            editRoom.Show(room);
                            editRoom.action += () =>
                            {
                                Show();
                            };
                        };
                    }
                }
                else
                {
                    Room.CurrentRoom = Room.Lists[0];
                    var roomBackView = new FrameLayout()
                    {
                        BackgroundImagePath = "Room/r0.png"
                        Show();
                    };
                    roomPageView.AddChidren(roomBackView);
                    var roomBG = new Button()
                    {
                        UnSelectedImagePath = "Room/HomeBG.png",
                    };
                    roomBackView.AddChidren(roomBG);
                    var roomName = new Button()
                    {
                        X = Application.GetRealWidth(20),
                        Y = Application.GetRealHeight(20),
                        Width = Application.GetRealWidth(500),
                        Height = Application.GetRealHeight(80),
                        Text = Language.StringByID(R.MyInternationalizationString.Favorite),
                        TextAlignment = TextAlignment.CenterLeft,
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        TextSize = 18,
                    };
                    roomBackView.AddChidren(roomName);
                    var roomListBtn = new Button()
                    {
                        X = roomPageView.Width - Application.GetRealWidth(100 + 20),
                        Y = Application.GetRealHeight(20),
                        Width = Application.GetMinRealAverage(100),
                        Height = Application.GetMinRealAverage(100),
                        UnSelectedImagePath = "Item/List.png"
                    };
                    roomBackView.AddChidren(roomListBtn);
                }
                var functionSceneView = new FrameLayout()
                {
                    Y = Application.GetRealHeight(861),
                    Width=Application.GetRealWidth(832),
                    Width = Application.GetRealWidth(832),
                    Height = Application.GetRealHeight(167),
                    Gravity=Gravity.CenterHorizontal,
                    BackgroundImagePath="Item/SceneFunctionBG.png"
                    Gravity = Gravity.CenterHorizontal,
                    BackgroundImagePath = "Item/SceneFunctionBG.png"
                };
                AddChidren(functionSceneView);
@@ -747,7 +686,9 @@
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    TextID = R.MyInternationalizationString.Scence,
                    IsSelected = false
                    IsSelected = true,
                    TextSize=16,
                    IsBold=true
                };
                functionSceneView.AddChidren(sceneBtn);
@@ -761,7 +702,8 @@
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    TextID = R.MyInternationalizationString.Function,
                    IsSelected = false
                    IsSelected = false,
                    TextSize=14
                };
                functionSceneView.AddChidren(functionBtn);
@@ -771,7 +713,7 @@
                    Y = functionSceneView.Bottom,
                    Height = Application.GetRealHeight(750),
                    Gravity = Gravity.CenterHorizontal,
                    BackgroundColor=ZigbeeColor.Current.GXCGrayBackgroundColor
                    BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
                };
                AddChidren(functionSceneBodyView);
@@ -780,6 +722,10 @@
                {
                    sceneBtn.IsSelected = false;
                    functionBtn.IsSelected = true;
                    sceneBtn.TextSize = 14;
                    sceneBtn.IsBold = false;
                    functionBtn.TextSize = 16;
                    functionBtn.IsBold = true;
                    RefreshBodyView();
                };
                //选择场景分栏
@@ -787,6 +733,10 @@
                {
                    functionBtn.IsSelected = false;
                    sceneBtn.IsSelected = true;
                    sceneBtn.TextSize = 16;
                    sceneBtn.IsBold = true;
                    functionBtn.TextSize = 14;
                    functionBtn.IsBold = false;
                    RefreshBodyView();
                };
@@ -795,7 +745,7 @@
                roomPageView.PageChange += (sender, e) =>
                {
                    //切换当前房间
                    Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.Lists[roomPageView.PageIndex];
                    Room.CurrentRoom = rList[roomPageView.PageIndex];
                    RefreshBodyView();
                };
            }
@@ -803,7 +753,7 @@
            {
                ShowNoGatewayTip();
            }
        }
        #endregion
@@ -814,10 +764,6 @@
        /// </summary>
        public void RefreshBodyView()
        {
            if (Room.CanInitAllRoom == false)
            {
                return;
            }
            functionSceneBodyView.RemoveAll();
            if (functionBtn.IsSelected)
            {
@@ -834,14 +780,15 @@
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="mouseEventArgs"></param>
        public void SelectFloor(object sender,MouseEventArgs mouseEventArgs)
        public void SelectFloor(object sender, MouseEventArgs mouseEventArgs)
        {
            var floorFL = new Phone.Device.Category.SelectFloor();
            AddChidren(floorFL);
            floorFL.Init(35, 153);
            floorFL.FloorAction = (floorName) =>
            floorFL.changeFloor = true;
            floorFL.FloorAction = (floorId) =>
            {
                floorBtn.Text = floorName;
                floorBtn.Text = Config.Instance.Home.GetFloorNameById(floorId);
                Show();
            };
        }
@@ -945,7 +892,7 @@
        private void GoToAddGateWay(object sender, MouseEventArgs mouseEventArgs)
        {
            var selectNewGateWayForm = new UserCenter.GatewayAdd.NewGateWayMenuSelectForm { };
            selectNewGateWayForm.AddForm();
            selectNewGateWayForm.AddForm(selectNewGateWayForm);
        }
        #endregion
@@ -969,11 +916,11 @@
            var noFunctionTip = new Button()
            {
                Y=noFunction.Bottom,
                Y = noFunction.Bottom,
                Height = Application.GetRealHeight(200),
                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}","\r\n"),
                Text = Language.StringByID(R.MyInternationalizationString.NoFunction_Tip).Replace("{\\r\\n}", "\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                IsMoreLines=true
                IsMoreLines = true
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
        }
@@ -997,9 +944,9 @@
            else
            {
                deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { };
                functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout);
               for(int i=0;i<deviceList.Count;i++)
                for (int i = 0; i < deviceList.Count; i++)
                {
                    int t = i % 2;
                    int tt = i / 2;
@@ -1021,22 +968,6 @@
                        deviceVerticalScrolViewLayout.AddChidren(itemView);
                    }
                    //删除设备
                    EventHandler<MouseEventArgs> delEvent = (sender, e) =>
                    {
                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                        alert.Show();
                        alert.ResultEventHandler += (send1, e1) =>
                        {
                            if (e1)
                            {
                                Room.CurrentRoom.DeleteDevice(device.FileName);
                                    //RefreshBodyView();
                                    deviceVerticalScrolViewLayout.RemoveViewByTag((sender as Button).Tag);
                            }
                        };
                    };
                    //收藏
                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                    {
@@ -1071,14 +1002,14 @@
                            //发送读取状态命令
                            ReadStatus(rollerShade, () =>
                            {
                                rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
                            {
                                rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
@@ -1101,7 +1032,7 @@
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
@@ -1127,7 +1058,7 @@
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
@@ -1150,6 +1081,7 @@
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var rollerShadeControl = new Phone.Device.Curtain.RollerShadeControl();
                            UserView.HomePage.Instance.AddChidren(rollerShadeControl);
                            UserView.HomePage.Instance.PageIndex += 1;
@@ -1175,27 +1107,25 @@
                            //发送读取状态命令
                            ReadStatus(light, () =>
                            {
                                light.ReadOnOffStatus();
                                light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                            {
                                light.ReadOnOffStatus();
                                light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx,yy);
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = light.OnOffStatus==1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom,device.FileName));
                        lightView.IsSelected = light.OnOffStatus == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
@@ -1266,6 +1196,7 @@
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关)
                            {
                                var lightControl = new Phone.Device.Light.OnOffControl();
@@ -1309,8 +1240,7 @@
                            //发送读取状态命令
                            ReadStatus(airSwitch, () =>
                            {
                                airSwitch.ReadOnOffStatus();
                                airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
@@ -1318,8 +1248,7 @@
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                airSwitch.ReadOnOffStatus();
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
@@ -1392,6 +1321,7 @@
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var lightControl = new Phone.Device.Light.AirSwitchControl();
                            UserView.HomePage.Instance.AddChidren(lightControl);
                            UserView.HomePage.Instance.PageIndex += 1;
@@ -1416,14 +1346,7 @@
                            //发送读取状态命令
                            ReadStatus(ac, () =>
                            {
                                ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ac.ReadLocalTemperature();
                                ac.ReadCoolingSetpoint();
                                ac.ReadHeatingSetpoint();
                                ac.ReadAutoSetpoint();
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                ac.ReadSystemFansSwingMode();
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            });
                        }
                        else
@@ -1431,14 +1354,7 @@
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                ac.ReadLocalTemperature();
                                ac.ReadCoolingSetpoint();
                                ac.ReadHeatingSetpoint();
                                ac.ReadAutoSetpoint();
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                ac.ReadSystemFansSwingMode();
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
@@ -1509,6 +1425,7 @@
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var lightControl = new Phone.Device.AC.ACControl();
                            UserView.HomePage.Instance.AddChidren(lightControl);
                            UserView.HomePage.Instance.PageIndex += 1;
@@ -1532,8 +1449,7 @@
                            //发送读取状态命令
                            ReadStatus(dimmableLight, () =>
                            {
                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                dimmableLight.ReadOnOffStatus();
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
@@ -1541,8 +1457,7 @@
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                dimmableLight.ReadOnOffStatus();
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            }
                        }
@@ -1624,17 +1539,56 @@
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var dimmableLightControl = new Phone.Device.Light.DimmableLightControl();
                            UserView.HomePage.Instance.AddChidren(dimmableLightControl);
                            UserView.HomePage.Instance.PageIndex += 1;
                            UserView.HomePage.Instance.ScrollEnabled = false;
                            //dimmableLightControl.action = RefreshBodyView;
                            dimmableLightControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == DeviceType.OnOffSwitch)
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DoorLock)
                    {
                        //门锁
                        var dimmableLight = device.CommonDevice as DoorLock;
                        //补上非远程
                        if (dimmableLight.Gateway == null)
                        {
                            continue;
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = dimmableLight.IsOnline == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        lightView.CanControl(false);
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
                        {
                            lightView.CollectButton.IsSelected = false;
                        }
                        else
                        {
                            lightView.CollectButton.IsSelected = true;
                        }
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            var userDoorLockPage = new UserDoorLockPage(Room.CurrentRoom, device);
                            HomePage.Instance.AddChidren(userDoorLockPage);
                            HomePage.Instance.PageIndex += 1;
                            userDoorLockPage.Show();
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else
                    {
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
@@ -1642,9 +1596,20 @@
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        //lightView.SetStatu(true);
                        lightView.IsSelected = true;
                        lightView.CanControl(false);
                        lightView.IsSelected = device.CommonDevice.IsOnline == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
                        {
                            lightView.CollectButton.IsSelected = false;
                        }
                        else
                        {
                            lightView.CollectButton.IsSelected = true;
                        }
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                }
            }
@@ -1671,11 +1636,11 @@
            functionSceneBodyView.AddChidren(noScene);
            var noScenceTip = new Button()
            {
                Y=noScene.Bottom,
                Y = noScene.Bottom,
                Height = Application.GetRealHeight(200),
                Text =Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}","\r\n"),
                Text = Language.StringByID(R.MyInternationalizationString.NoScene_Tip).Replace("{\\r\\n}", "\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                IsMoreLines=true
                IsMoreLines = true
            };
            functionSceneBodyView.AddChidren(noScenceTip);
        }
@@ -1697,12 +1662,12 @@
            }
            else
            {
                var sceneScrolView = new VerticalScrolViewLayout { };
                sceneScrolView = new VerticalScrolViewLayout { };
                functionSceneBodyView.AddChidren(sceneScrolView);
                for(int i=0;i<sceneList.Count;i++)
                for (int i = 0; i < sceneList.Count; i++)
                {
                    var scene = sceneList[i];
                    int xx = 43 + i % 2 * (20 + 487);
                    int xx = 33 + i % 2 * (40 + 487);
                    int yy = 14;
                    if (scene == null)
                    {
@@ -1721,108 +1686,73 @@
                    var sceneView = new SceneMainView(xx, yy);
                    itemView.AddChidren(sceneView);
                    sceneView.Init();
                    sceneView.SetSceneNameText(scene.Name);
                    sceneView.SetIcon($"SceneIcon/{i}.png");
                    sceneView.SetCollect(Common.Room.CurrentRoom.GetLoveRoom().SceneUIFilePathList.Contains(scene.FileName));
                    if (scene.SceneDelayTime == 0)
                    {
                        sceneView.SetTimeImage();
                    }
                    else
                    {
                        sceneView.SetTimeText(scene.SceneDelayTime.ToString());
                    }
                    sceneView.TimeButton.MouseUpEventHandler += (sender, e) =>
                    {
                        var timeSelect = new SelectTime();
                        CommonPage.Instance.AddChidren(timeSelect);
                        timeSelect.TempTime = scene.DelayTime;
                        timeSelect.Init();
                        timeSelect.TimeAction = (t) =>
                        {
                            scene.SceneDelayTime = t;
                            if(t>0)
                            {
                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(scene.SceneDelayTime));
                            }
                            else
                            {
                                sceneView.SetTimeImage();
                            }
                        };
                    };
                    //调用场景
                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
                    {
                            //1成功 0失败
                            //后面补上相关提示
                            // Error参数含义
                            //<para>1:网关无法解析命令数据。</para>
                            //<para>2:协调器正在升级或备份/恢复数据
                            //<para>3:操作设备/组/场景不存在</para>
                            //<para>4:其他错误</para>
                            //<para>5:数据传输错误(在某次客户端向网关发送数据的过程中,网关在合理时间范围内接收客户端数据不完整导致该错误发生。如客户端向网关一次发送100个字节的数据,但网关等待接收了一秒只接收了80个字节。发生该错误,网关将主动关闭客户端连接)</para>
                            var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
                        if (sceneOpenAllData == null || sceneOpenAllData.sceneOpenData == null)
                        {
                            return;
                        }
                        if (sceneOpenAllData.sceneOpenData.Result == 0)
                        {
                            if (sceneOpenAllData.errorResponData == null)
                            {
                                return;
                            }
                            CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.ControlSceneFail);
                        }
                    };
                    //收藏
                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                    {
                        (sender as Button).IsSelected = !(sender as Button).IsSelected;
                        if ((sender as Button).IsSelected)
                        {
                            //scene.IsCollected = true;
                            Room.CurrentRoom.GetLoveRoom().AddScene(scene);
                        }
                        else
                        {
                            //scene.IsCollected = false;
                            Room.CurrentRoom.GetLoveRoom().RemoveScene(scene);
                        }
                        scene.Save();
                        //if ((sender as Button).IsSelected)
                        //{
                        //    scene.Collect(false);
                        //    (sender as Button).IsSelected = false;
                        //}
                        //else
                        //{
                        //    scene.Collect(true);
                        //    (sender as Button).IsSelected = true;
                        //}
                        //scene.Save();
                        //if (Room.CurrentRoom.IsLove)
                        //{
                        //    RefreshBodyView();
                        //}
                    };
                    sceneView.CollectButton.MouseUpEventHandler += collectionEvent;
                    sceneView.MouseUpEventHandler += sceneUpHandler;
                    sceneView.SceneIcon.MouseUpEventHandler+= sceneUpHandler;
                    sceneView.SceneNameButton.MouseUpEventHandler += sceneUpHandler;
                    sceneView.Init(scene);
                }
                GetDelayScene(sceneScrolView);
            }
        }
        /// <summary>
        /// GetDelayScene
        /// </summary>
        /// <param name="scrolViewLayout"></param>
        private void GetDelayScene(VerticalScrolViewLayout scrolViewLayout)
        {
            new System.Threading.Thread(async () =>
            {
                var catDelaySceneResponseAllData = await Scene.CatDelaySceneAsync();
                if (catDelaySceneResponseAllData == null)
                {
                    return;
                }
                var catDelaySceneResponseData = catDelaySceneResponseAllData.catDelaySceneResponseData;
                if (catDelaySceneResponseData == null || catDelaySceneResponseData.DelayScenesList.Count == 0)
                {
                    return;
                }
                var delayList = catDelaySceneResponseData.DelayScenesList;
                Application.RunOnMainThread(() =>
                {
                    for (int i = 0; scrolViewLayout != null && i < scrolViewLayout.ChildrenCount; i++)
                    {
                        var iView = scrolViewLayout.GetChildren(i) as FrameLayout;
                        for (int j = 0; iView != null && j < iView.ChildrenCount; j++)
                        {
                            var sceneView = iView.GetChildren(j) as SceneMainView;
                            foreach (var delayScenesListResponseInfo in delayList)
                            {
                                if (delayScenesListResponseInfo.ScenesId == sceneView.scene.Id)
                                {
                                    var times = delayScenesListResponseInfo.RemainTime;
                                    sceneView.scene.RemainTime = times;
                                    new System.Threading.Thread(() =>
                                    {
                                        while (times > 0)
                                        {
                                            System.Threading.Thread.Sleep(1000);
                                            Application.RunOnMainThread(() =>
                                            {
                                                sceneView.SetTimeText(CommonFormResouce.GetTimeString(times));
                                            });
                                            times -= 1;
                                        }
                                        Application.RunOnMainThread(() =>
                                        {
                                            sceneView.SetTimeImage();
                                        });
                                    })
                                    { IsBackground = true }.Start();
                                    break;
                                }
                            }
                        }
                    }
                });
            })
            { IsBackground = true }.Start();
        }
        #endregion