gxc
2019-12-20 eb9cf55fc8568cb2d4b4bfac9deb617ce766a7a5
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -223,7 +223,7 @@
                                            var attriButeList = ac.DeviceStatusReport.AttriBute;
                                            foreach(var attList in attriButeList)
                                            {
                                                var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High || attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                switch (attList.AttributeId)
                                                {
                                                    case 0:
@@ -419,7 +419,8 @@
                Gravity = Gravity.CenterVertical,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = ZigbeeColor.Current.GXCTextColor,
                Text = Config.Instance.Home.GetCurrentFloorName
                Text = Config.Instance.Home.GetCurrentFloorName,
                IsBold=true
            };
            if (Config.Instance.Home.FloorDics.Count > 0)
            {
@@ -924,682 +925,689 @@
            else
            {
                deviceVerticalScrolViewLayout = new VerticalScrolViewLayout { };
                functionSceneBodyView.AddChidren(deviceVerticalScrolViewLayout);
                for (int i = 0; i < deviceList.Count; i++)
                {
                    int t = i % 2;
                    int tt = i / 2;
                    int xx = 43 + i % 2 * (20 + 487);
                    int yy = 14;
                    var device = deviceList[i];
                    if (device == null || device.CommonDevice == null)
                    {
                        continue;
                    }
                    if (i % 2 == 0)
                    {
                        itemView = new FrameLayout()
                    //new System.Threading.Thread(() =>
                    //{
                        Application.RunOnMainThread(() =>
                        {
                            Height = Application.GetRealHeight(14 + 348),
                        };
                        deviceVerticalScrolViewLayout.AddChidren(itemView);
                    }
                    //收藏
                    EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                    {
                        if ((sender as Button).IsSelected)
                        {
                            Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
                            (sender as Button).IsSelected = false;
                        }
                        else
                        {
                            Shared.Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
                            (sender as Button).IsSelected = true;
                        }
                        if (Room.CurrentRoom.IsLove)
                        {
                            RefreshBodyView();
                        }
                    };
                    //////判断设备是否支持的属性 如开关等控制
                    if (device.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                    {
                        //窗帘 卷帘
                        var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice;
                        //不上非远程
                        if (rollerShade.Gateway == null)
                        {
                            continue;
                        }
                        if (rollerShade.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(rollerShade, () =>
                            try
                            {
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
                            {
                                ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        lightView.Tag = device;
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(rollerShade.DeviceEpointName);
                        //lightView.SetStatu(true);
                        lightView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                        lightView.SetCollect(true);
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                int t = i % 2;
                                int tt = i / 2;
                                int xx = 43 + i % 2 * (20 + 487);
                                int yy = 14;
                                if (i % 2 == 0)
                                {
                                    if (Parent == null)
                                    itemView = new FrameLayout()
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                        Height = Application.GetRealHeight(14 + 348),
                                    };
                                    deviceVerticalScrolViewLayout.AddChidren(itemView);
                                }
                                //收藏
                                EventHandler<MouseEventArgs> collectionEvent = (sender, e) =>
                                {
                                    if (Parent == null)
                                    if ((sender as Button).IsSelected)
                                    {
                                        return;
                                        Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
                                        (sender as Button).IsSelected = false;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    else
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                        Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
                                        (sender as Button).IsSelected = true;
                                    }
                                });
                            }
                        };
                                    if (Room.CurrentRoom.IsLove)
                                    {
                                        RefreshBodyView();
                                    }
                                };
                        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;
                            UserView.HomePage.Instance.ScrollEnabled = false;
                            //rollerShadeControl.action = RefreshBodyView;
                            rollerShadeControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
                    {
                        //开关灯
                        var light = device.CommonDevice as ToggleLight;
                        //补上非远程
                        if (light.Gateway == null)
                        {
                            continue;
                        }
                        if (light.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(light, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        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));
                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                        if (dev == null)
                        {
                            lightView.CollectButton.IsSelected = false;
                        }
                        else
                        {
                            lightView.CollectButton.IsSelected = true;
                        }
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                light.SwitchControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                if (device.CommonDevice.Type == DeviceType.WindowCoveringDevice)
                                {
                                    if (Parent == null)
                                    //窗帘 卷帘
                                    var rollerShade = (ZigBee.Device.Rollershade)device.CommonDevice;
                                    if (rollerShade.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (rollerShade.Gateway.IsVirtual)
                                            {
                                                ReadStatus(rollerShade, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - rollerShade.LastDateTime).TotalSeconds)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendCurtainStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var lightView = new FunctionMainView(xx, yy);
                                        lightView.Tag = device;
                                        itemView.AddChidren(lightView);
                                        lightView.Init();
                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        lightView.SetStatuText(device.GetDeviceStatu());
                                        lightView.SetDeviceName(rollerShade.DeviceEpointName);
                                        //lightView.SetStatu(true);
                                        lightView.IsSelected = rollerShade.WcdCurrentPositionLiftPercentage == 100;
                                        lightView.SetCollect(true);
                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(true));
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                (device.CommonDevice as Rollershade).CurtainUpDownStopControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(CommonFormResouce.GetSwitchStatu(false));
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        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;
                                            UserView.HomePage.Instance.ScrollEnabled = false;
                                            //rollerShadeControl.action = RefreshBodyView;
                                            rollerShadeControl.Show(device, Room.CurrentRoom);
                                        };
                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                light.SwitchControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.OnOffOutput)
                                {
                                    if (Parent == null)
                                    //开关灯
                                    var light = device.CommonDevice as ToggleLight;
                                    if (light.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (light.Gateway.IsVirtual)
                                            {
                                                ReadStatus(light, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var lightView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(lightView);
                                        lightView.Init();
                                        lightView.Tag = device;
                                        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));
                                        var dev = Room.LoveRoomDeviceUIFilePathList.Find((obj) => obj == device.FileName);
                                        if (dev == null)
                                        {
                                            lightView.CollectButton.IsSelected = false;
                                        }
                                        else
                                        {
                                            lightView.CollectButton.IsSelected = true;
                                        }
                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                light.SwitchControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                light.SwitchControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                                        {
                                            CommonPage.Instance.IsDrawerLockMode = true;
                                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关)
                                            {
                                                var lightControl = new Phone.Device.Light.OnOffControl();
                                                UserView.HomePage.Instance.AddChidren(lightControl);
                                                UserView.HomePage.Instance.PageIndex += 1;
                                                //lightControl.action = RefreshBodyView;
                                                lightControl.Show(device, Room.CurrentRoom);
                                            }
                                            else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A插座)
                                            {
                                                var lightControl = new Phone.Device.Light.PlugControl();
                                                UserView.HomePage.Instance.AddChidren(lightControl);
                                                UserView.HomePage.Instance.PageIndex += 1;
                                                //lightControl.action = RefreshBodyView;
                                                lightControl.Show(device, Room.CurrentRoom);
                                            }
                                            else
                                            {
                                                var lightControl = new Phone.Device.Light.LightControl();
                                                UserView.HomePage.Instance.AddChidren(lightControl);
                                                UserView.HomePage.Instance.PageIndex += 1;
                                                //lightControl.action = RefreshBodyView;
                                                lightControl.Show(device, Room.CurrentRoom);
                                            }
                                        };
                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                        };
                        lightView.CardBG.MouseUpEventHandler += (sender, e) =>
                        {
                            CommonPage.Instance.IsDrawerLockMode = true;
                            if (device.CommonDevice.DfunctionType == DeviceFunctionType.A开关)
                            {
                                var lightControl = new Phone.Device.Light.OnOffControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                //lightControl.action = RefreshBodyView;
                                lightControl.Show(device, Room.CurrentRoom);
                            }
                            else if (device.CommonDevice.DfunctionType == DeviceFunctionType.A插座)
                            {
                                var lightControl = new Phone.Device.Light.PlugControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                //lightControl.action = RefreshBodyView;
                                lightControl.Show(device, Room.CurrentRoom);
                            }
                            else
                            {
                                var lightControl = new Phone.Device.Light.LightControl();
                                UserView.HomePage.Instance.AddChidren(lightControl);
                                UserView.HomePage.Instance.PageIndex += 1;
                                //lightControl.action = RefreshBodyView;
                                lightControl.Show(device, Room.CurrentRoom);
                            }
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                    {
                        //空气开关
                        var airSwitch = device.CommonDevice as AirSwitch;
                        //补上非远程
                        if (airSwitch.Gateway == null)
                        {
                            continue;
                        }
                        if (airSwitch.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(airSwitch, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(airSwitch.DeviceEpointName);
                        //lightView.SetStatu(true);
                        lightView.IsSelected = airSwitch.OnOffStatus == 1;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                airSwitch.SwitchControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.AirSwitch)
                                {
                                    if (Parent == null)
                                    //空气开关
                                    var airSwitch = device.CommonDevice as AirSwitch;
                                    if (airSwitch.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (airSwitch.Gateway.IsVirtual)
                                            {
                                                ReadStatus(airSwitch, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var lightView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(lightView);
                                        lightView.Init();
                                        lightView.Tag = device;
                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        lightView.SetStatuText(device.GetDeviceStatu());
                                        lightView.SetDeviceName(airSwitch.DeviceEpointName);
                                        //lightView.SetStatu(true);
                                        lightView.IsSelected = airSwitch.OnOffStatus == 1;
                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                airSwitch.SwitchControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                airSwitch.SwitchControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        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;
                                            //lightControl.action = RefreshBodyView;
                                            lightControl.Show(device, Room.CurrentRoom);
                                        };
                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                airSwitch.SwitchControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.Thermostat)
                                {
                                    if (Parent == null)
                                    //恒温器-AC-空调
                                    var ac = device.CommonDevice as AC;
                                    if (ac.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (ac.Gateway.IsVirtual)
                                            {
                                                ReadStatus(ac, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var lightView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(lightView);
                                        lightView.Init();
                                        lightView.Tag = device;
                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        lightView.SetStatuText(device.GetDeviceStatu());
                                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                                        lightView.IsSelected = ac.currentSystemMode != 0;
                                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                ac.Open();
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                ac.Close();
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        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;
                                            //lightControl.action = RefreshBodyView;
                                            lightControl.Show(device, Room.CurrentRoom);
                                        };
                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                        };
                        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;
                            //lightControl.action = RefreshBodyView;
                            lightControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                    {
                        //恒温器-AC-空调
                        var ac = device.CommonDevice as AC;
                        //补上非远程
                        if (ac.Gateway == null)
                        {
                            continue;
                        }
                        if (ac.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(ac, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ReadDeviceAttributeLogic.Instance.SendACStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = ac.currentSystemMode != 0;
                        lightView.SetCollect(Room.CurrentRoom.IsCollectInRoom(Room.CurrentRoom, device.FileName));
                        lightView.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                ac.Open();
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.DimmableLight)
                                {
                                    if (Parent == null)
                                    //调光灯
                                    var dimmableLight = device.CommonDevice as DimmableLight;
                                    if (dimmableLight.Gateway != null)
                                    {
                                        return;
                                        new System.Threading.Thread(() =>
                                        {
                                            System.Threading.Thread.Sleep(100 * i);
                                            if (dimmableLight.Gateway.IsVirtual)
                                            {
                                                //发送读取状态命令
                                                ReadStatus(dimmableLight, () =>
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                                                });
                                            }
                                            else
                                            {
                                                //防止短时间内多次读取设备状态
                                                if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                                {
                                                    ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                                                }
                                            }
                                        })
                                        { IsBackground = true }.Start();
                                        var lightView = new FunctionMainView(xx, yy);
                                        itemView.AddChidren(lightView);
                                        lightView.Init();
                                        lightView.Tag = device;
                                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                        lightView.SetStatuText(device.GetDeviceStatu());
                                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                                        lightView.IsSelected = dimmableLight.OnOffStatus == 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.SwitchButton.MouseUpEventHandler += (sender, e) =>
                                        {
                                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                                            if ((sender as Button).IsSelected)
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                dimmableLight.SwitchControl(1);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                            else
                                            {
                                                zbGateway = device.CommonDevice.Gateway;
                                                sendedControlCommand = false;
                                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                                dimmableLight.SwitchControl(0);
                                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                                //控制延时回调
                                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                                {
                                                    if (Parent == null)
                                                    {
                                                        return;
                                                    }
                                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                                    if (sendedControlCommand == false)
                                                    {
                                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                                    }
                                                });
                                            }
                                        };
                                        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;
                                            //dimmableLightControl.action = RefreshBodyView;
                                            dimmableLightControl.Show(device, Room.CurrentRoom);
                                        };
                                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                            else
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                ac.Close();
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                }
                                else if (device.CommonDevice.Type == DeviceType.DoorLock)
                                {
                                    if (Parent == null)
                                    //门锁
                                    var dimmableLight = device.CommonDevice as DoorLock;
                                    var lightView = new FunctionMainView(xx, yy);
                                    itemView.AddChidren(lightView);
                                    lightView.Init();
                                    lightView.Tag = device;
                                    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)
                                    {
                                        return;
                                        lightView.CollectButton.IsSelected = false;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    else
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                        lightView.CollectButton.IsSelected = true;
                                    }
                                });
                            }
                        };
                        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;
                            //lightControl.action = RefreshBodyView;
                            lightControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    else if (device.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                    {
                        //调光灯
                        var dimmableLight = device.CommonDevice as DimmableLight;
                        //补上非远程
                        if (dimmableLight.Gateway == null)
                        {
                            continue;
                        }
                        if (dimmableLight.Gateway.IsVirtual)
                        {
                            //发送读取状态命令
                            ReadStatus(dimmableLight, () =>
                            {
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            });
                        }
                        else
                        {
                            //防止短时间内多次读取设备状态
                            if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                            {
                                ReadDeviceAttributeLogic.Instance.SendDimmableLightStatuComand(device.CommonDevice);
                            }
                        }
                        var lightView = new FunctionMainView(xx, yy);
                        itemView.AddChidren(lightView);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        lightView.IsSelected = dimmableLight.OnOffStatus == 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.SwitchButton.MouseUpEventHandler += (sender, e) =>
                        {
                            (sender as Button).IsSelected = !(sender as Button).IsSelected;
                            if ((sender as Button).IsSelected)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                dimmableLight.SwitchControl(1);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = true;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                    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
                                {
                                    if (Parent == null)
                                    var lightView = new FunctionMainView(xx, yy);
                                    itemView.AddChidren(lightView);
                                    lightView.Init();
                                    lightView.Tag = device;
                                    lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                                    lightView.SetStatuText(device.GetDeviceStatu());
                                    lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                                    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)
                                    {
                                        return;
                                        lightView.CollectButton.IsSelected = false;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    else
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                        lightView.CollectButton.IsSelected = true;
                                    }
                                });
                                    lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                                }
                            }
                            else
                            catch(Exception ex)
                            {
                                zbGateway = device.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, device.CommonDevice);
                                dimmableLight.SwitchControl(0);
                                ((sender as Button).Parent as FunctionMainView).SetStatuText(device.GetDeviceStatu());
                                ((sender as Button).Parent as FunctionMainView).IsSelected = false;
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            }
                        };
                        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;
                            //dimmableLightControl.action = RefreshBodyView;
                            dimmableLightControl.Show(device, Room.CurrentRoom);
                        };
                        lightView.CollectButton.MouseUpEventHandler += collectionEvent;
                    }
                    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.Tag = device;
                        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);
                        lightView.Init();
                        lightView.Tag = device;
                        lightView.SetDeviceImage(device.IconPath, device.OnlineIconPath);
                        lightView.SetStatuText(device.GetDeviceStatu());
                        lightView.SetDeviceName(device.CommonDevice.DeviceEpointName);
                        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;
                    }
                        });
                    //})
                    //{ IsBackground = true }.Start();
                }
            }
        }
        #endregion