gxc
2019-10-17 1f65fe366062b3f2cda6b03e1849afce6d2646f8
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -36,9 +36,13 @@
        /// </summary>
        private ButtonLineForm automationBtn;
        /// <summary>
        /// 中部背景bodyView
        /// 场景功能中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneBodyView;
        /// <summary>
        /// 中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneAutoBodyView;
        /// <summary>
        /// 相同的设备列表
        /// </summary>
@@ -533,35 +537,13 @@
            instance = this;
        }
        public void InitFloor()
        {
            Config.Instance.Home.FloorDics.Clear();
            Config.Instance.Home.FloorDics.Add("Floor1", "一楼");
            Config.Instance.Home.FloorDics.Add("Floor2", "二楼");
            Config.Instance.Home.FloorDics.Add("Floor3", "三楼");
            Config.Instance.Home.FloorDics.Add("Floor4", "四楼");
            Config.Instance.Home.FloorDics.Add("Floor5", "⑤楼");
            if (string.IsNullOrEmpty(Config.Instance.Home.CurrentFloorId))
            {
                if (Config.Instance.Home.FloorDics.Count > 0)
                {
                    foreach (var floor in Config.Instance.Home.FloorDics)
                    {
                        Config.Instance.Home.CurrentFloorId=floor.Key;
                        break;
                    }
                }
            }
            //Config.Instance.Save();
        }
        /// <summary>
        /// 显示界面--默认场景界面
        /// </summary>
        /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
        public void Show(int selectedBtn = 1)
        {
            InitFloor();
            ZbGateway.StatusList.Add(this);
            RemoveAll();
@@ -662,76 +644,13 @@
                functionSceneAutoBG.AddChidren(selectFloorBtn);
            }
            var roomFL = new HorizontalScrolViewLayout()
            functionSceneAutoBodyView = new FrameLayout
            {
                X= Application.GetRealWidth(CommonFormResouce.X_Left),
                Y = functionSceneAutoBG.Bottom,
                Height = Application.GetRealHeight(167),
                Width=Application.GetRealWidth(CommonPage.AppRealWidth-CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(1423),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(roomFL);
            Button curBtn = new Button();
            for(int i=0;i<Config.Instance.Home.RoomFilePathList.Count;i++)
            {
                var roomFilePath = Config.Instance.Home.RoomFilePathList[i];
                var room = Shared.Common.Room.GetRoomByFilePath(roomFilePath);
                if (room == null)
                {
                    continue;
                }
                var row = new RowLayout()
                {
                    Width = Application.GetRealWidth(187+50),
                    Height = Application.GetRealHeight(167),
                    LineColor= ZigbeeColor.Current.GXCGrayBackgroundColor
                };
                roomFL.AddChidren(row);
                var roomBtn = new Button()
                {
                    Width = Application.GetRealWidth(187),
                    Height = Application.GetRealHeight(78),
                    Radius=(uint)Application.GetRealHeight(78/2),
                    Gravity = Gravity.Center,
                    Text=room.Name,
                    TextColor=ZigbeeColor.Current.GXCTextGrayColor,
                    SelectedTextColor=ZigbeeColor.Current.GXCTextWhiteColor,
                    BackgroundColor=ZigbeeColor.Current.GXCButtonUnSelectedColor3,
                    SelectedBackgroundColor=ZigbeeColor.Current.GXCButtonSelectedColor,
                    BorderColor=ZigbeeColor.Current.GXCBorderUnSelectedColor,
                    BorderWidth=1
                };
                row.AddChidren(roomBtn);
                if(Shared.Common.Room.CurrentRoom.FileName==roomFilePath)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if ((sender as Button) == curBtn)
                    {
                        return;
                    }
                    (sender as Button).IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = (sender as Button);
                    Shared.Common.Room.CurrentRoom = room;
                };
            }
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - roomFL.Height - CommonPage.LineHeight,
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneBodyView);
            midFL.AddChidren(functionSceneAutoBodyView);
            if (selectedBtn == 0)
            {
@@ -786,10 +705,11 @@
        {
            var floors = new SelectFloor ();
            AddChidren(floors);
            floors.Init(599,357);
            floors.Init(599,357,Direction.Right);
            floors.FloorAction += (floorName) =>
            {
                floorBtn.Text = floorName;
                RefreshBodyView();
            };
        }
@@ -868,11 +788,11 @@
            UserView.HomePage.Instance.PageIndex += 1;
            CategoryAddScene.sceneTargetDevicesList?.Clear();
            CategoryAddScene.SceneText = "";
            CategoryAddScene.CurrentRoom = Shared.Common.Room.CurrentRoom;
            scene.curRoom = Shared.Common.Room.CurrentRoom;
            CategoryAddScene.ModifySceneUI = null;
            CategoryAddScene.Modify = false;
            CategoryAddScene.ImagePath = "Scene/Scene0.png";
            scene.Show();
            CategoryAddScene.ImagePath = "SceneIcon/1.png";
            scene.Show(scene.curRoom);
        }
        /// <summary>
@@ -898,7 +818,7 @@
        /// </summary>
        public void RefreshBodyView()
        {
            functionSceneBodyView.RemoveAll();
            functionSceneAutoBodyView.RemoveAll();
            if (functionBtn.IsSelected)
            {
                ShowFunction();
@@ -921,590 +841,7 @@
        /// </summary>
        public void ShowFunction()
        {
            //移除监听
            RemoveAllUpdateControlDeviceStatuAction();
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            Shared.Common.Room.GetAllRoomDeviceTypeList();
            if (Common.Room.AllRoomDeviceUIList == null)
            {
                return;
            }
            if (Common.Room.AllRoomDeviceUIList.Count == 0)
            {
                ShowNoFunctionTip();
            }
            else
            {
                functionTypeScrowView = new HorizontalScrolViewLayout
                {
                    X=Application.GetRealWidth(CommonFormResouce.X_Left),
                    Height = Application.GetRealHeight(279),
                    Width = Application.GetRealWidth(1028),
                    BackgroundColor=ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(functionTypeScrowView);
                deviceListScrolView = new VerticalScrolViewLayout
                {
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50),
                    Width = Application.GetRealWidth(1028),
                    Height = functionSceneBodyView.Height - Application.GetRealHeight(279+50) - 1,
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(deviceListScrolView);
                tempFunctionTypeBtn = new FunctionButton();
                foreach (var deviceType in Common.Room.AllRoomDeviceTypeList)
                {
                    typeRowLayout = new RowLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
                    functionTypeIMG = new FunctionButton()
                    {
                        Tag = deviceType
                    };
                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
        /// <summary>
        /// 显示相同类型的功能
        /// </summary>
        /// <param name="typeSender">typeSender.</param>
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
        {
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            tempFunctionTypeBtn.IsSelected = false;
            tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
            ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
            deviceListScrolView.RemoveAll();
            var sameTypeList = new List<DeviceUI> { };
            foreach (var devieceUI in Common.Room.AllRoomDeviceUIList)
            {
                if (devieceUI == null || devieceUI.CommonDevice == null)
                {
                    continue;
                }
                if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
                {
                    if (!sameTypeList.Contains(devieceUI))
                    {
                        sameTypeList.Add(devieceUI);
                    }
                }
            }
            foreach (var deviceUI in sameTypeList)
            {
                //删除设备
                EventHandler<MouseEventArgs> delEvent = (delSender, delE) =>
                {
                    var alert = new CustomAlert();
                    AddChidren(alert);
                    alert.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                    alert.ResultEventHandler += (e2) =>
                    {
                        if (e2)
                        {
                            Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
                            deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
                            sameTypeList.Remove(deviceUI);
                            if (sameTypeList.Count == 0)
                            {
                                RefreshBodyView();
                            }
                        }
                    };
                };
                EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) =>
                {
                    var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                    UserView.HomePage.Instance.AddChidren(detailInfo);
                    UserView.HomePage.Instance.PageIndex += 1;
                    detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                    detailInfo.action = RefreshBodyView;
                };
                if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
                {
                    //灯
                    var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                    //补上非远程
                    if (light.Gateway == null)
                    {
                        continue;
                    }
                    if (light.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(light, () =>
                        {
                            light.ReadOnOffStatus();
                            light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        });
                    }
                    else
                    {
                        //防止短时间内多次读取状态
                        if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                        {
                            light.ReadOnOffStatus();
                            light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127+35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(light.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            light.SwitchControl(1);
                        }
                        else
                        {
                            light.SwitchControl(0);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                {
                    //空气开关
                    var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                    //补上非远程
                    if (airSwitch.Gateway == null)
                    {
                        continue;
                    }
                    if (airSwitch.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(airSwitch, () =>
                        {
                            airSwitch.ReadOnOffStatus();
                            airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        });
                    }
                    else
                    {
                        if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            airSwitch.ReadOnOffStatus();
                            airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(airSwitch.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            airSwitch.SwitchControl(1);
                        }
                        else
                        {
                            airSwitch.SwitchControl(0);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                {
                    //调光灯
                    var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                    //补上非远程
                    if (dimmableLight.Gateway == null)
                    {
                        continue;
                    }
                    if (dimmableLight.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(dimmableLight, () =>
                        {
                            dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            dimmableLight.ReadOnOffStatus();
                            dimmableLight.ReadLevel();
                        });
                    }
                    else
                    {
                        if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            dimmableLight.ReadOnOffStatus();
                            dimmableLight.ReadLevel();
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(dimmableLight.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            dimmableLight.SwitchControl(1);
                        }
                        else
                        {
                            dimmableLight.SwitchControl(0);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                {
                    //空调
                    var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                    //补上非远程
                    if (ac.Gateway == null)
                    {
                        continue;
                    }
                    if (ac.Gateway.IsVirtual)
                    {
                        //发送读取状态命令
                        UserView.UserHomeView.ReadStatus(ac, () =>
                        {
                            ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            ac.ReadFanMode();
                            ac.ReadSystemMode();
                            ac.ReadLocalTemperature();
                            ac.ReadCoolingSetpoint();
                            ac.ReadHeatingSetpoint();
                        });
                    }
                    else
                    {
                        //防止短时间内多次读取设备状态
                        if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                            ac.ReadFanMode();
                            ac.ReadSystemMode();
                            ac.ReadLocalTemperature();
                            ac.ReadCoolingSetpoint();
                            ac.ReadHeatingSetpoint();
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(ac.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            ac.Open();
                        }
                        else
                        {
                            ac.Close();
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                {
                    //卷帘
                    var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                    //不上非远程
                    if (rollerShade.Gateway == null)
                    {
                        continue;
                    }
                    if (rollerShade.Gateway.IsVirtual)
                    {
                        UserHomeView.ReadStatus(rollerShade, () =>
                        {
                            rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        });
                    }
                    else
                    {
                        //防止短时间内多次读取
                        if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                        {
                            rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                        }
                    }
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceRow = new FunctionRow(0, 35);
                    deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                    deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                    deviceRow.SetStatu(rollerShade.IsOnline == 1);
                    deviceTypeRowLayout.AddChidren(deviceRow);
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        (sender as CommonForm.SelectedStatuButton).IsSelected = !(sender as CommonForm.SelectedStatuButton).IsSelected;
                        if ((sender as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            rollerShade.CurtainUpDownStopControl(0);
                        }
                        else
                        {
                            rollerShade.CurtainUpDownStopControl(1);
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                }
                else
                {
                }
            }
            AddRoomView();
        }
        /// <summary>
@@ -1528,13 +865,681 @@
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoFunction,
                //Text = "没有功能 \n 请在个人中心中--设备管理处添加",
                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}","\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                IsMoreLines=true
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
        }
        /// <summary>
        /// RefreshFunction
        /// </summary>
        /// <param name="room"></param>
        private void RefreshFunction(Common.Room room)
        {
            //移除监听
            RemoveAllUpdateControlDeviceStatuAction();
            functionSceneBodyView.RemoveAll();
            if (room.DeviceUIList.Count == 0)
            {
                ShowNoFunctionTip();
            }
            else
            {
                functionTypeScrowView = new HorizontalScrolViewLayout
                {
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Height = Application.GetRealHeight(279),
                    Width = Application.GetRealWidth(1028),
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(functionTypeScrowView);
                deviceListScrolView = new VerticalScrolViewLayout
                {
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Y = functionTypeScrowView.Bottom + Application.GetRealHeight(50),
                    Width = Application.GetRealWidth(1028),
                    Height = functionSceneBodyView.Height - Application.GetRealHeight(279 + 50) - 1,
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(deviceListScrolView);
                tempFunctionTypeBtn = new FunctionButton();
                EventHandler<MouseEventArgs> ShowSameTypeFunction = (object typeSender, MouseEventArgs mouseEventArgs) =>
                {
                    tempFunctionTypeBtn.IsSelected = false;
                    tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
                    ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
                    deviceListScrolView.RemoveAll();
                    var sameTypeList = new List<DeviceUI> { };
                    foreach (var devieceUI in room.DeviceUIList)
                    {
                        if (devieceUI == null || devieceUI.CommonDevice == null)
                        {
                            continue;
                        }
                        if (devieceUI.CommonDevice.Type.ToString() == (typeSender as Button).Tag.ToString())
                        {
                            if (!sameTypeList.Contains(devieceUI))
                            {
                                sameTypeList.Add(devieceUI);
                            }
                        }
                    }
                    foreach (var deviceUI in sameTypeList)
                    {
                        //删除设备
                        EventHandler<MouseEventArgs> delEvent = (delSender, delE) =>
                        {
                            var alert = new CustomAlert();
                            AddChidren(alert);
                            alert.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                            alert.ResultEventHandler += (e2) =>
                            {
                                if (e2)
                                {
                                    Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
                                    deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
                                    sameTypeList.Remove(deviceUI);
                                    if (sameTypeList.Count == 0)
                                    {
                                        RefreshBodyView();
                                    }
                                }
                            };
                        };
                        EventHandler<MouseEventArgs> deviceDetailHandler = (send2, e2) =>
                        {
                            var detailInfo = new Device.CommonForm.DeviceDetailInfo { };
                            UserView.HomePage.Instance.AddChidren(detailInfo);
                            UserView.HomePage.Instance.PageIndex += 1;
                            detailInfo.Show(deviceUI, Shared.Common.Room.CurrentRoom);
                            detailInfo.action = RefreshBodyView;
                        };
                        if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
                        {
                            //灯
                            var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                            //补上非远程
                            if (light.Gateway == null)
                            {
                                continue;
                            }
                            if (light.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(light, () =>
                                {
                                    light.ReadOnOffStatus();
                                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                });
                            }
                            else
                            {
                                //防止短时间内多次读取状态
                                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                                {
                                    light.ReadOnOffStatus();
                                    light.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(light.IsOnline == 1);
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    light.SwitchControl(1);
                                }
                                else
                                {
                                    light.SwitchControl(0);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                        {
                            //空气开关
                            var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                            //补上非远程
                            if (airSwitch.Gateway == null)
                            {
                                continue;
                            }
                            if (airSwitch.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(airSwitch, () =>
                                {
                                    airSwitch.ReadOnOffStatus();
                                    airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                });
                            }
                            else
                            {
                                if ((DateTime.Now - airSwitch.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    airSwitch.ReadOnOffStatus();
                                    airSwitch.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(airSwitch.IsOnline == 1);
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    airSwitch.SwitchControl(1);
                                }
                                else
                                {
                                    airSwitch.SwitchControl(0);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                        {
                            //调光灯
                            var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                            //补上非远程
                            if (dimmableLight.Gateway == null)
                            {
                                continue;
                            }
                            if (dimmableLight.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(dimmableLight, () =>
                                {
                                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    dimmableLight.ReadOnOffStatus();
                                    dimmableLight.ReadLevel();
                                });
                            }
                            else
                            {
                                if ((DateTime.Now - dimmableLight.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    dimmableLight.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    dimmableLight.ReadOnOffStatus();
                                    dimmableLight.ReadLevel();
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(dimmableLight.IsOnline == 1);
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    dimmableLight.SwitchControl(1);
                                }
                                else
                                {
                                    dimmableLight.SwitchControl(0);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                        {
                            //空调
                            var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                            //补上非远程
                            if (ac.Gateway == null)
                            {
                                continue;
                            }
                            if (ac.Gateway.IsVirtual)
                            {
                                //发送读取状态命令
                                UserView.UserHomeView.ReadStatus(ac, () =>
                                {
                                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ac.ReadFanMode();
                                    ac.ReadSystemMode();
                                    ac.ReadLocalTemperature();
                                    ac.ReadCoolingSetpoint();
                                    ac.ReadHeatingSetpoint();
                                });
                            }
                            else
                            {
                                //防止短时间内多次读取设备状态
                                if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ac.ReadFanMode();
                                    ac.ReadSystemMode();
                                    ac.ReadLocalTemperature();
                                    ac.ReadCoolingSetpoint();
                                    ac.ReadHeatingSetpoint();
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(ac.IsOnline == 1);
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            deviceRow.SwitchBtn.MouseUpEventHandler += (send2, e2) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    ac.Open();
                                }
                                else
                                {
                                    ac.Close();
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                        }
                        else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                        {
                            //卷帘
                            var rollerShade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                            //不上非远程
                            if (rollerShade.Gateway == null)
                            {
                                continue;
                            }
                            if (rollerShade.Gateway.IsVirtual)
                            {
                                UserHomeView.ReadStatus(rollerShade, () =>
                                {
                                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                });
                            }
                            else
                            {
                                //防止短时间内多次读取
                                if ((DateTime.Now - rollerShade.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                {
                                    rollerShade.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                }
                            }
                            var deviceTypeRowLayout = new RowLayout()
                            {
                                Height = Application.GetRealHeight(127 + 35),
                                LineColor = ZigbeeColor.Current.GXCLineColor,
                                Tag = deviceUI
                            };
                            deviceListScrolView.AddChidren(deviceTypeRowLayout);
                            var deviceRow = new FunctionRow(0, 35);
                            deviceRow.Init(deviceUI.IconPath, deviceUI.OnlineIconPath);
                            deviceRow.SetTitle(deviceUI.CommonDevice.DeviceEpointName);
                            deviceRow.SetStatu(rollerShade.IsOnline == 1);
                            deviceTypeRowLayout.AddChidren(deviceRow);
                            var editBtn = new CommonForm.RowLayoutEditButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(editBtn);
                            editBtn.MouseUpEventHandler += deviceDetailHandler;
                            var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                            {
                                Tag = deviceUI,
                                Radius = 0
                            };
                            deviceTypeRowLayout.AddRightView(delBtn);
                            delBtn.MouseUpEventHandler += delEvent;
                            deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) =>
                            {
                                zbGateway = deviceUI.CommonDevice.Gateway;
                                sendedControlCommand = false;
                                zbGateway.ReportAction += UpdateDeviceControllStatu;
                                AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                                (sender as CommonForm.SelectedStatuButton).IsSelected = !(sender as CommonForm.SelectedStatuButton).IsSelected;
                                if ((sender as CommonForm.SelectedStatuButton).IsSelected)
                                {
                                    rollerShade.CurtainUpDownStopControl(0);
                                }
                                else
                                {
                                    rollerShade.CurtainUpDownStopControl(1);
                                }
                                //控制延时回调
                                DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                                {
                                    if (Parent == null)
                                    {
                                        return;
                                    }
                                    RemoveUpdateControlDeviceStatuAction(zbGateway);
                                    if (sendedControlCommand == false)
                                    {
                                        DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                                    }
                                });
                            };
                        }
                        else
                        {
                        }
                    }
                };
                foreach (var deviceType in Common.Room.GetdeviceTypes(room))
                {
                    typeRowLayout = new RowLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth / 5),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
                    functionTypeIMG = new FunctionButton()
                    {
                        Tag = deviceType
                    };
                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
        /// <summary>
        /// AddRoomView
        /// </summary>
        private void AddRoomView()
        {
            var roomFL = new HorizontalScrolViewLayout()
            {
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(167),
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonFormResouce.X_Left),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneAutoBodyView.AddChidren(roomFL);
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(1316),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
            Button curBtn = new Button();
            foreach (var room in Common.Room.CurrentRoom.GetRoomsByCurrentFloorIdAppendLoveRoom())
            {
                var row = new RowLayout()
                {
                    Width = Application.GetRealWidth(187 + 50),
                    Height = Application.GetRealHeight(167),
                    LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor
                };
                roomFL.AddChidren(row);
                var roomBtn = new Button()
                {
                    Width = Application.GetRealWidth(187),
                    Height = Application.GetRealHeight(78),
                    Radius = (uint)Application.GetRealHeight(78 / 2),
                    Gravity = Gravity.Center,
                    Text = room.Name,
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                    BackgroundColor = ZigbeeColor.Current.GXCButtonUnSelectedColor3,
                    SelectedBackgroundColor = ZigbeeColor.Current.GXCButtonSelectedColor,
                    BorderColor = ZigbeeColor.Current.GXCBorderUnSelectedColor,
                    BorderWidth = 1
                };
                row.AddChidren(roomBtn);
                if (room.IsLove)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
                    if(sceneBtn.IsSelected)
                    {
                        RefreshScene(room);
                    }
                    else
                    {
                        RefreshFunction(room);
                    }
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if ((sender as Button) == curBtn)
                    {
                        return;
                    }
                    (sender as Button).IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = sender as Button;
                    if (sceneBtn.IsSelected)
                    {
                        RefreshScene(room);
                    }
                    else
                    {
                        RefreshFunction(room);
                    }
                };
            }
        }
        #endregion
@@ -1545,15 +1550,16 @@
        /// </summary>
        public void ShowScene()
        {
            //刷新场景
            //var reFreshResult=await Shared.Common.Room.RefreshSceneUIList();
            Shared.Common.SceneRoomUI.GetAllSceneRoomUIList();
            if (SceneRoomUI.AllSceneRoomUIList == null)
            {
                return;
            }
            var sceneList = SceneRoomUI.AllSceneRoomUIList;
            Shared.Common.Room.GetAllRoomDeviceUIList();
            AddRoomView();
        }
        /// <summary>
        /// RefreshScene
        /// </summary>
        /// <param name="room"></param>
        public void RefreshScene(Common.Room room)
        {
            var sceneList = room.SceneUIList;
            if (sceneList.Count == 0)
            {
                ShowNoSceneTip();
@@ -1562,24 +1568,22 @@
            {
                var sceneScrolView = new VerticalScrolViewLayout
                {
                    Y=Application.GetRealHeight(58)
                    Y = Application.GetRealHeight(58)
                };
                functionSceneBodyView.AddChidren(sceneScrolView);
                foreach (var sceneRoomUI in sceneList)
                foreach (var scene in sceneList)
                {
                    var sceneFL = new FrameLayout()
                    {
                        Height = Application.GetRealHeight(446),
                        Gravity = Gravity.CenterHorizontal,
                        BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Tag = sceneRoomUI
                        Tag = scene
                    };
                    sceneScrolView.AddChidren(sceneFL);
                    var sceneRowLayout = new RowLayout()
                    var sceneRowLayout = new RowLayout
                    {
                        Y = Application.GetRealHeight(46),
                        Height = Application.GetRealHeight(446 - 46),
                        Gravity = Gravity.CenterHorizontal,
                        LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Radius = CommonPage.BigFormRadius
                    };
@@ -1587,33 +1591,34 @@
                    var sceneImg = new Button()
                    {
                        X=Application.GetRealWidth(179),
                        Width=Application.GetMinReal(844),
                        Height=Application.GetMinReal(400),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = sceneRoomUI.sceneUI.IconPath,
                        Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius)
                        X = Application.GetRealWidth(179),
                        Width = Application.GetRealWidth(844),
                        Height = Application.GetRealHeight(400),
                        BackgroundColor = ZigbeeColor.Current.GXCRedColor,
                        UnSelectedImagePath = scene.IconPath,
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    sceneRowLayout.AddChidren(sceneImg);
                    var leftFL = new FrameLayout
                    {
                        X=Application.GetRealWidth(CommonFormResouce.X_Left),
                        X = Application.GetRealWidth(CommonFormResouce.X_Left),
                        Y = Application.GetRealHeight(58),
                        Width = Application.GetRealWidth(251),
                        Height = Application.GetRealHeight(282),
                        Gravity=Gravity.CenterVertical,
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2,
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    sceneRowLayout.AddChidren(leftFL);
                    var collectionBtn = new Button
                    {
                        X=Application.GetRealWidth(23),
                        Y=Application.GetRealHeight(23),
                        Width=Application.GetMinRealAverage(65),
                        Height=Application.GetMinRealAverage(65),
                        UnSelectedImagePath="Item/Collection.png",
                        SelectedImagePath="Item/CollectionSelected.png"
                        X = Application.GetRealWidth(23),
                        Y = Application.GetRealHeight(23),
                        Width = Application.GetMinRealAverage(65),
                        Height = Application.GetMinRealAverage(65),
                        UnSelectedImagePath = "Item/Collection.png",
                        SelectedImagePath = "Item/CollectionSelected.png"
                    };
                    leftFL.AddChidren(collectionBtn);
@@ -1622,9 +1627,9 @@
                        Width = Application.GetRealWidth(176),
                        Height = Application.GetRealHeight(200),
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        Text = sceneRoomUI.sceneUI.Name,
                        Text = scene.Name,
                        Gravity = Gravity.Center,
                        IsMoreLines=true
                        IsMoreLines = true
                    };
                    leftFL.AddChidren(sceneNameBtn);
@@ -1632,23 +1637,23 @@
                    var delayBtn = new RowLayoutDeleteButton
                    {
                        TextID = R.MyInternationalizationString.Delay,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        Tag = scene.SceneDelayTime
                    };
                    sceneRowLayout.AddLeftView(delayBtn);
                    //编辑
                    var settingBtn = new Device.CommonForm.RowLayoutEditButton()
                    {
                        TextID=R.MyInternationalizationString.Setting,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        TextID = R.MyInternationalizationString.Setting,
                        Tag = scene.SceneDelayTime
                    };
                    //删除
                    var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
                    {
                        Tag = sceneRoomUI
                        Tag = scene
                    };
                    if (!sceneRoomUI.room.IsSharedRoom)
                    if (!room.IsSharedRoom)
                    {
                        sceneRowLayout.AddRightView(settingBtn);
                        sceneRowLayout.AddRightView(deleteBtn);
@@ -1660,7 +1665,7 @@
                        //1成功 0失败
                        //后面补上相关提示
                        //要先从网关读取延时是否正在执行,如果是进行倒计时,不允许在点击
                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(sceneRoomUI.sceneUI.Id, sceneRoomUI.sceneUI.SceneDelayTime);
                        var sceneOpenAllData = await ZigBee.Device.Scene.ControlSceneAsync(scene.Id, scene.SceneDelayTime);
                        //主网关不在线
                        if (sceneOpenAllData == null)
                        {
@@ -1692,7 +1697,7 @@
                        var tip = new CustomAlert { };
                        AddChidren(tip);
                        tip.Show(Language.StringByID(R.MyInternationalizationString.ConfirmDelete));
                        //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();
                        tip.ResultEventHandler += async (e1) =>
@@ -1700,7 +1705,7 @@
                            if (e1)
                            {
                                //0 移除失败 1 移除成功 2 没有该场景
                                var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(sceneRoomUI.sceneUI.Id);
                                var removeSceneAllData = await ZigBee.Device.Scene.DeleteSceneAsync(scene.Id);
                                if (removeSceneAllData == null || removeSceneAllData.removeSceneData == null)
                                {
                                    //CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheMainGatewayIsNotOnLine);
@@ -1710,7 +1715,7 @@
                                //1成功
                                if (removeSceneAllData.removeSceneData.Result == 1)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                }
@@ -1723,7 +1728,7 @@
                                //2 没有该场景
                                else if (removeSceneAllData.removeSceneData.Result == 2)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                    CommonPage.Instance.ShowErrorInfoAlert(R.MyInternationalizationString.TheSceneIsNull);
@@ -1736,7 +1741,7 @@
                    //编辑场景
                    settingBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room);
                        SceneRoomUI.EditScene(scene,room);
                    };
                    //编辑延时
                    delayBtn.MouseUpEventHandler += (sender, e) =>
@@ -1792,7 +1797,7 @@
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoScene,
                Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}","\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                IsMoreLines = true
@@ -1811,7 +1816,7 @@
        public async void ShowAutotion()
        {
            var logicScrolView = new VerticalScrolViewLayout { };
            functionSceneBodyView.AddChidren(logicScrolView);
            functionSceneAutoBodyView.AddChidren(logicScrolView);
            CommonPage.Loading.Start();
            if (Common.Logic.LogicList.Count == 0)
            {