gxc
2019-10-17 1f65fe366062b3f2cda6b03e1849afce6d2646f8
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
old mode 100755 new mode 100644
@@ -4,6 +4,7 @@
using Shared.Phone.UserView;
using Shared.R;
using ZigBee.Device;
using Shared.Phone.Device.CommonForm;
namespace Shared.Phone.Device.Category
{
@@ -19,21 +20,29 @@
        /// </summary>
        public static Category instance;
        /// <summary>
        /// low_High
        /// </summary>
        private const int low_High= 127;
        /// <summary>
        /// 功能
        /// </summary>
        public Button functionBtn;
        private ButtonLineForm functionBtn;
        /// <summary>
        /// 场景
        /// </summary>
        public Button sceneBtn;
        private ButtonLineForm sceneBtn;
        /// <summary>
        /// 自动化
        /// </summary>
        public Button automationBtn;
        private ButtonLineForm automationBtn;
        /// <summary>
        /// 场景功能中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneBodyView;
        /// <summary>
        /// 中部背景bodyView
        /// </summary>
        public FrameLayout functionSceneBodyView;
        public FrameLayout functionSceneAutoBodyView;
        /// <summary>
        /// 相同的设备列表
        /// </summary>
@@ -50,10 +59,6 @@
        /// 右上角添加按钮
        /// </summary>
        private Device.CommonForm.SelectedStatuButton addBtn;
        /// <summary>
        /// 分栏底部线条.
        /// </summary>
        private Button line;
        /// <summary>
        /// 网关
        /// </summary>
@@ -73,11 +78,11 @@
        /// <summary>
        /// 当前功能类型按钮
        /// </summary>
        private Button tempFunctionTypeBtn;
        private FunctionButton tempFunctionTypeBtn;
        /// <summary>
        /// 功能类型按钮
        /// </summary>
        private Button functionTypeIMG;
        private FunctionButton functionTypeIMG;
        /// <summary>
        /// 功能类型
        /// </summary>
@@ -86,6 +91,14 @@
        /// 设备类型RowLayout
        /// </summary>
        private RowLayout typeRowLayout;
        /// <summary>
        /// 楼层
        /// </summary>
        private Button floorBtn;
        /// <summary>
        /// 选择楼层
        /// </summary>
        private Button selectFloorBtn;
        #endregion
@@ -455,13 +468,13 @@
                                        }
                                    }
                                    break;
                                case DeviceType.WindowCoveringDevice:
                                case DeviceType.WindowCoveringDevice:
                                    var rollerShape = deviceUI.CommonDevice as Rollershade;
                                    //记录回复时间
                                    rollerShape.LastDateTime = DateTime.Now;
                                    rollerShape.IsOnline = (common as Rollershade).IsOnline;
                                    for (int j = 0; j < rowLayout.ChildrenCount; j++)
                                    {
                                    {
                                        var tempView = rowLayout.GetChildren(j);
                                        if (tempView.Tag == null)
                                        {
@@ -520,7 +533,7 @@
        /// </summary>
        public Category()
        {
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
            BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
            instance = this;
        }
@@ -530,156 +543,131 @@
        /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
        public void Show(int selectedBtn = 1)
        {
            ZbGateway.StatusList.Add(this);
            RemoveAll();
            #region topview
            var topView = new FrameLayout()
            {
                Height = Application.GetRealHeight(CommonPage.Navigation_Height),
                BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor,
                Y = Application.GetRealHeight(104),
                Height = Application.GetRealHeight(low_High),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
            };
            this.AddChidren(topView);
            var title = new Button()
            {
                Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y),
                Height = Application.GetRealHeight(CommonPage.Navigation_Height - CommonPage.NavigationTitle_Y),
                TextAlignment = TextAlignment.Center,
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(95),
                Width = Application.GetRealWidth(CommonFormResouce.TopTitle_Width),
                Gravity = Gravity.CenterVertical,
                TextAlignment = TextAlignment.CenterLeft,
                TextID = R.MyInternationalizationString.Category,
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - 500),
                Gravity = Gravity.CenterHorizontal
                TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor,
            };
            topView.AddChidren(title);
            addBtn = new Device.CommonForm.SelectedStatuButton()
            addBtn = new SelectedStatuButton()
            {
                Y = Application.GetRealHeight(CommonPage.NavigationTitle_Y),
                Width = Application.GetMinRealAverage(100),
                Height = Application.GetMinRealAverage(100),
                UnSelectedImagePath = "Item/Add.png",
                SelectedImagePath = "Item/AddSelected.png",
                X = Application.GetRealWidth(CommonPage.AppRealWidth - 150),
                X = Application.GetRealWidth(953),
                Width = Application.GetMinRealAverage(104),
                Height = Application.GetMinRealAverage(104),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Add_Category.png",
                SelectedImagePath = "Item/Add_Category.png"
            };
            topView.AddChidren(addBtn);
            #endregion
            #region midFL
            int functionSceneAuto_width;
            //成员没有权限展示自动化界面
            if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 3)
            {
                functionSceneAuto_width = 1080 / 2;
            }
            else
            {
                functionSceneAuto_width = 1080 / 3;
            }
            var functionSceneAuto_height = 120;
            var midFL = new FrameLayout
            {
                Y = topView.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - topView.Bottom
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - topView.Bottom,
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            AddChidren(midFL);
            var functionSceneAutoBG = new FrameLayout()
            {
                Height = Application.GetRealHeight(functionSceneAuto_height),
                BackgroundColor = ZigbeeColor.Current.GXCTopViewBackgroundColor
                Height = Application.GetRealHeight(low_High),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneAutoBG);
            //功能
            functionBtn = new Button()
            {
                Width = Application.GetRealWidth(functionSceneAuto_width),
                Height = Application.GetRealHeight(functionSceneAuto_height),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
                TextAlignment = TextAlignment.Center,
                TextSize = 16,
                TextID = R.MyInternationalizationString.Function,
                IsSelected = false
            };
            midFL.AddChidren(functionBtn);
            functionBtn = new ButtonLineForm(CommonFormResouce.X_Left, 34, 150, 68);
            functionSceneAutoBG.AddChidren(functionBtn);
            functionBtn.Init();
            functionBtn.SetTitle(R.MyInternationalizationString.Function);
            //场景
            sceneBtn = new Button()
            {
                X = functionBtn.Right,
                Width = Application.GetRealWidth(functionSceneAuto_width),
                Height = Application.GetRealHeight(functionSceneAuto_height),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
                TextAlignment = TextAlignment.Center,
                TextSize = 16,
                TextID = R.MyInternationalizationString.Scence,
                IsSelected = false
            };
            midFL.AddChidren(sceneBtn);
            sceneBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 + 20, 34, 150, 68);
            functionSceneAutoBG.AddChidren(sceneBtn);
            sceneBtn.Init();
            sceneBtn.SetTitle(R.MyInternationalizationString.Scence);
            //自动化
            automationBtn = new Button()
            {
                X = sceneBtn.Right,
                Width = Application.GetRealWidth(functionSceneAuto_width),
                Height = Application.GetRealHeight(functionSceneAuto_height),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
                TextAlignment = TextAlignment.Center,
                TextSize = 16,
                TextID = R.MyInternationalizationString.Automation,
                IsSelected = false
            };
            automationBtn = new ButtonLineForm(CommonFormResouce.X_Left + 150 * 2 + 20, 34, 150, 68);
            automationBtn.Init();
            automationBtn.SetTitle(R.MyInternationalizationString.Automation);
            //隐藏自动化
            if (UserCenter.UserCenterResourse.UserInfo.AuthorityNo != 3)
            {
                midFL.AddChidren(automationBtn);
                functionSceneAutoBG.AddChidren(automationBtn);
            }
            var functionSceneBottomLine = new Button()
            floorBtn = new Button()
            {
                Y = functionBtn.Bottom,
                Height = CommonPage.LineHeight,
                X = functionBtn.X,
                BackgroundColor = ZigbeeColor.Current.GXCLineColor
                X = Application.GetRealWidth(750),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(60),
                Gravity = Gravity.CenterVertical,
                TextAlignment = TextAlignment.CenterRight,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
            };
            midFL.AddChidren(functionSceneBottomLine);
            line = new Button()
            selectFloorBtn = new Button()
            {
                Y = functionBtn.Bottom,
                Height = CommonPage.LineHeight,
                X = sceneBtn.X,
                Width = Application.GetRealWidth(functionSceneAuto_width),
                BackgroundColor = ZigbeeColor.Current.GXCButtonBlueColor
                X = Application.GetRealWidth(950),
                Width = Application.GetMinRealAverage(69),
                Height = Application.GetMinRealAverage(69),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Drop_Down.png"
            };
            midFL.AddChidren(line);
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            if (Config.Instance.Home.FloorDics.Count > 0)
            {
                Y = line.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - CommonPage.LineHeight,
                floorBtn.Text = Config.Instance.Home.GetCurrentFloorName;
                functionSceneAutoBG.AddChidren(floorBtn);
                functionSceneAutoBG.AddChidren(selectFloorBtn);
            }
            functionSceneAutoBodyView = new FrameLayout
            {
                Y = functionSceneAutoBG.Bottom,
                Height = Application.GetRealHeight(1423),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneBodyView);
            midFL.AddChidren(functionSceneAutoBodyView);
            if (selectedBtn == 0)
            {
                addBtn.Visible = false;
                functionBtn.IsSelected = true;
                line.X = functionBtn.X;
            }
            else if (selectedBtn == 1)
            {
                addBtn.Visible = true;
                sceneBtn.IsSelected = true;
                line.X = sceneBtn.X;
            }
            else if (selectedBtn == 2)
            {
                addBtn.Visible = true;
                automationBtn.IsSelected = true;
                line.X = automationBtn.X;
            }
            RefreshBodyView();
            #endregion
            //绑定按钮事件
@@ -695,13 +683,34 @@
        private void BindEvent()
        {
            //选择功能分栏
            functionBtn.MouseUpEventHandler += FunctionBtn_MouseUpEventHandler;
            functionBtn.NameBtn.MouseUpEventHandler += FunctionBtn_MouseUpEventHandler;
            //选择场景分栏
            sceneBtn.MouseUpEventHandler += SceneBtn_MouseUpEventHandler;
            sceneBtn.NameBtn.MouseUpEventHandler += SceneBtn_MouseUpEventHandler;
            //选中自动化
            automationBtn.MouseUpEventHandler += AutomationBtn_MouseUpEventHandler;
            automationBtn.NameBtn.MouseUpEventHandler += AutomationBtn_MouseUpEventHandler;
            //右上角添加按钮
            addBtn.MouseUpEventHandler += AddBtn_MouseUpEventHandler;
            selectFloorBtn.MouseUpEventHandler += SelectedFloor_MouseUpEventHandler;
            floorBtn.MouseUpEventHandler+= SelectedFloor_MouseUpEventHandler;
        }
        /// <summary>
        /// 选择楼层
        /// </summary>
        /// <param name="sender">Sender.</param>
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void SelectedFloor_MouseUpEventHandler(object sender, MouseEventArgs mouseEventArgs)
        {
            var floors = new SelectFloor ();
            AddChidren(floors);
            floors.Init(599,357,Direction.Right);
            floors.FloorAction += (floorName) =>
            {
                floorBtn.Text = floorName;
                RefreshBodyView();
            };
        }
        /// <summary>
@@ -714,7 +723,6 @@
            functionBtn.IsSelected = true;
            sceneBtn.IsSelected = false;
            automationBtn.IsSelected = false;
            line.X = functionBtn.X;
            addBtn.Visible = false;
            RefreshBodyView();
        }
@@ -729,7 +737,6 @@
            functionBtn.IsSelected = false;
            sceneBtn.IsSelected = true;
            automationBtn.IsSelected = false;
            line.X = sceneBtn.X;
            addBtn.Visible = true;
            RefreshBodyView();
        }
@@ -744,7 +751,6 @@
            functionBtn.IsSelected = false;
            sceneBtn.IsSelected = false;
            automationBtn.IsSelected = true;
            line.X = automationBtn.X;
            addBtn.Visible = true;
            RefreshBodyView();
        }
@@ -782,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>
@@ -812,7 +818,7 @@
        /// </summary>
        public void RefreshBodyView()
        {
            functionSceneBodyView.RemoveAll();
            functionSceneAutoBodyView.RemoveAll();
            if (functionBtn.IsSelected)
            {
                ShowFunction();
@@ -835,16 +841,49 @@
        /// </summary>
        public void ShowFunction()
        {
            AddRoomView();
        }
        /// <summary>
        /// 提示没有功能
        /// </summary>
        private void ShowNoFunctionTip()
        {
            var noFunction = new Button()
            {
                Y=Application.GetRealHeight(320),
                Width=Application.GetMinRealAverage(757),
                Height = Application.GetMinRealAverage(435),
                UnSelectedImagePath="Item/NoFunction.png",
                Gravity = Gravity.CenterHorizontal
            };
            functionSceneBodyView.AddChidren(noFunction);
            var noFunctionTip = new Button()
            {
                Y = noFunction.Bottom + Application.GetRealHeight(32),
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                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();
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            Shared.Common.Room.GetAllRoomDeviceTypeList();
            if (Common.Room.AllRoomDeviceUIList == null)
            {
                return;
            }
            if (Common.Room.AllRoomDeviceUIList.Count == 0)
            functionSceneBodyView.RemoveAll();
            if (room.DeviceUIList.Count == 0)
            {
                ShowNoFunctionTip();
            }
@@ -852,26 +891,538 @@
            {
                functionTypeScrowView = new HorizontalScrolViewLayout
                {
                    Height = Application.GetRealHeight(CommonPage.RowHeight) - 1,
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth)
                    X = Application.GetRealWidth(CommonFormResouce.X_Left),
                    Height = Application.GetRealHeight(279),
                    Width = Application.GetRealWidth(1028),
                    BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                };
                functionSceneBodyView.AddChidren(functionTypeScrowView);
                var typeLine = new Button()
                {
                    Y = functionTypeScrowView.Bottom,
                    Width = Application.GetRealWidth(CommonPage.AppRealWidth),
                    Height = 1,
                    BackgroundColor = ZigbeeColor.Current.GXCLineColor
                };
                functionSceneBodyView.AddChidren(typeLine);
                deviceListScrolView = new VerticalScrolViewLayout
                {
                    Y = typeLine.Bottom,
                    Height = functionSceneBodyView.Height - Application.GetRealHeight(CommonPage.RowHeight) - 1
                    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 Button();
                foreach (var deviceType in Common.Room.AllRoomDeviceTypeList)
                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()
                    {
@@ -880,760 +1431,115 @@
                        Tag = deviceType
                    };
                    functionTypeScrowView.AddChidren(typeRowLayout);
                    functionTypeIMG = new Button()
                    functionTypeIMG = new FunctionButton()
                    {
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        Gravity = Gravity.Center,
                        UnSelectedImagePath = DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType),
                        SelectedImagePath = DeviceUI.GetDeviceTypeSelectedImagePath(deviceType),
                        Tag = deviceType
                    };
                    functionTypeIMG.Init(DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType), DeviceUI.GetDeviceTypeUnSelectedImagePath(deviceType));
                    functionTypeIMG.SetTitle(DeviceUI.GetDeviceTypeName(deviceType));
                    typeRowLayout.AddChidren(functionTypeIMG);
                    functionTypeIMG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type)
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == room.DeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG, null);
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
        }
        /// <summary>
        /// 显示相同类型的功能
        /// AddRoomView
        /// </summary>
        /// <param name="typeSender">typeSender.</param>
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void ShowSameTypeFunction(object typeSender, MouseEventArgs mouseEventArgs)
        private void AddRoomView()
        {
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            tempFunctionTypeBtn.IsSelected = false;
            (typeSender as Button).IsSelected = true;
            tempFunctionTypeBtn = (typeSender as Button);
            deviceListScrolView.RemoveAll();
            var sameTypeList = new List<DeviceUI> { };
            foreach (var devieceUI in Common.Room.AllRoomDeviceUIList)
            var roomFL = new HorizontalScrolViewLayout()
            {
                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 Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                    alert.Show();
                    alert.ResultEventHandler += (send1, e2) =>
                    {
                        if (e2)
                        {
                            Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice, false);
                            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(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceIMG = new Button()
                    {
                        X = Application.GetRealWidth(CommonPage.XLeft),
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        UnSelectedImagePath = deviceUI.IconPath,
                        SelectedImagePath = deviceUI.OnlineIconPath,
                        Gravity = Gravity.CenterVertical,
                        IsSelected = light.IsOnline == 1,
                        Tag = deviceStatus_Online
                    };
                    deviceTypeRowLayout.AddChidren(deviceIMG);
                    var deviceNameBtn = new Button()
                    {
                        X = Application.GetRealWidth(50) + deviceIMG.Right,
                        Width = Application.GetRealWidth(500),
                        Text = deviceUI.CommonDevice.DeviceEpointName,
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextAlignment = TextAlignment.CenterLeft
                    };
                    deviceTypeRowLayout.AddChidren(deviceNameBtn);
                    var switchBtn = new Button
                    {
                        X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
                        Width = Application.GetMinRealAverage(183),
                        Height = Application.GetMinRealAverage(123),
                        UnSelectedImagePath = "Item/Switch.png",
                        SelectedImagePath = "Item/SwitchSelected.png",
                        IsSelected = light.OnOffStatus == 1,
                        Tag = deviceStatus_OnOffStatus,
                        Gravity = Gravity.CenterVertical
                    };
                    deviceTypeRowLayout.AddChidren(switchBtn);
                    switchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        {
                            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 delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                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(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceIMG = new Button()
                    {
                        X = Application.GetRealWidth(CommonPage.XLeft),
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        UnSelectedImagePath = deviceUI.IconPath,
                        SelectedImagePath = deviceUI.OnlineIconPath,
                        Gravity = Gravity.CenterVertical,
                        IsSelected = airSwitch.IsOnline == 1,
                        Tag = deviceStatus_Online
                    };
                    deviceTypeRowLayout.AddChidren(deviceIMG);
                    var deviceNameBtn = new Button()
                    {
                        X = Application.GetRealWidth(50) + deviceIMG.Right,
                        Width = Application.GetRealWidth(500),
                        Text = deviceUI.CommonDevice.DeviceEpointName,
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextAlignment = TextAlignment.CenterLeft
                    };
                    deviceTypeRowLayout.AddChidren(deviceNameBtn);
                    var switchBtn = new Button
                    {
                        X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
                        Width = Application.GetMinRealAverage(183),
                        Height = Application.GetMinRealAverage(123),
                        UnSelectedImagePath = "Item/Switch.png",
                        SelectedImagePath = "Item/SwitchSelected.png",
                        IsSelected = airSwitch.OnOffStatus == 1,
                        Tag = deviceStatus_OnOffStatus,
                        Gravity = Gravity.CenterVertical
                    };
                    deviceTypeRowLayout.AddChidren(switchBtn);
                    switchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        {
                            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 delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                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(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceIMG = new Button()
                    {
                        X = Application.GetRealWidth(CommonPage.XLeft),
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        UnSelectedImagePath = deviceUI.IconPath,
                        SelectedImagePath = deviceUI.OnlineIconPath,
                        Gravity = Gravity.CenterVertical,
                        IsSelected = dimmableLight.IsOnline == 1,
                        Tag = deviceStatus_Online
                    };
                    deviceTypeRowLayout.AddChidren(deviceIMG);
                    var deviceNameBtn = new Button()
                    {
                        X = Application.GetRealWidth(50) + deviceIMG.Right,
                        Width = Application.GetRealWidth(500),
                        Text = deviceUI.CommonDevice.DeviceEpointName,
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextAlignment = TextAlignment.CenterLeft
                    };
                    deviceTypeRowLayout.AddChidren(deviceNameBtn);
                    var switchBtn = new Button
                    {
                        X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
                        Width = Application.GetMinRealAverage(183),
                        Height = Application.GetMinRealAverage(123),
                        UnSelectedImagePath = "Item/Switch.png",
                        SelectedImagePath = "Item/SwitchSelected.png",
                        IsSelected = dimmableLight.OnOffStatus == 1,
                        Tag = deviceStatus_OnOffStatus,
                        Gravity = Gravity.CenterVertical
                    };
                    deviceTypeRowLayout.AddChidren(switchBtn);
                    switchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        {
                            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 delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                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(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceIMG = new Button()
                    {
                        X = Application.GetRealWidth(CommonPage.XLeft),
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        UnSelectedImagePath = deviceUI.IconPath,
                        SelectedImagePath = deviceUI.OnlineIconPath,
                        Gravity = Gravity.CenterVertical,
                        IsSelected = ac.IsOnline == 1,
                        Tag = deviceStatus_Online
                    };
                    deviceTypeRowLayout.AddChidren(deviceIMG);
                    var deviceNameBtn = new Button()
                    {
                        X = Application.GetRealWidth(50) + deviceIMG.Right,
                        Width = Application.GetRealWidth(500),
                        Text = deviceUI.CommonDevice.DeviceEpointName,
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextAlignment = TextAlignment.CenterLeft
                    };
                    deviceTypeRowLayout.AddChidren(deviceNameBtn);
                    var switchBtn = new Button
                    {
                        X = deviceTypeRowLayout.Right - Application.GetRealWidth(200),
                        Width = Application.GetMinRealAverage(183),
                        Height = Application.GetMinRealAverage(123),
                        UnSelectedImagePath = "Item/Switch.png",
                        SelectedImagePath = "Item/SwitchSelected.png",
                        IsSelected = Device.AC.ACControlBase.IsOpen(ac),
                        Tag = deviceStatus_OnOffStatus,
                        Gravity = Gravity.CenterVertical
                    };
                    deviceTypeRowLayout.AddChidren(switchBtn);
                    switchBtn.MouseUpEventHandler += (send2, e2) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        {
                            ac.Open();
                        }
                        else
                        {
                            ac.Close();
                        }
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                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(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceIMG = new Button()
                    {
                        X = Application.GetRealWidth(CommonPage.XLeft),
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        UnSelectedImagePath = deviceUI.IconPath,
                        SelectedImagePath = deviceUI.OnlineIconPath,
                        Gravity = Gravity.CenterVertical,
                        IsSelected = rollerShade.IsOnline == 1,
                        Tag = deviceStatus_Online
                    };
                    deviceTypeRowLayout.AddChidren(deviceIMG);
                    var deviceNameBtn = new Button()
                    {
                        X = Application.GetRealWidth(50) + deviceIMG.Right,
                        Width = Application.GetRealWidth(350),
                        Text = deviceUI.CommonDevice.DeviceEpointName,
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextAlignment = TextAlignment.CenterLeft
                    };
                    deviceTypeRowLayout.AddChidren(deviceNameBtn);
                    var closeBtn = new Device.CommonForm.SelectedStatuButton()
                    {
                        X = Application.GetRealWidth(50) + deviceNameBtn.Right,
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = "WindowCovering/RollerShadeClose.png",
                        SelectedImagePath = "WindowCovering/RollerShadeCloseSelected.png",
                    };
                    deviceTypeRowLayout.AddChidren(closeBtn);
                    var stopBtn = new Device.CommonForm.SelectedStatuButton()
                    {
                        X = Application.GetRealWidth(50) + closeBtn.Right,
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = "WindowCovering/RollerShadeStop.png",
                        SelectedImagePath = "WindowCovering/RollerShadeStopSelected.png",
                    };
                    deviceTypeRowLayout.AddChidren(stopBtn);
                    var openBtn = new Device.CommonForm.SelectedStatuButton()
                    {
                        X = Application.GetRealWidth(50) + stopBtn.Right,
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = "WindowCovering/RollerShadeOpen.png",
                        SelectedImagePath = "WindowCovering/RollerShadeOpenSelected.png",
                    };
                    deviceTypeRowLayout.AddChidren(openBtn);
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    //窗帘关
                    closeBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        rollerShade.CurtainUpDownStopControl(1);
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    //窗帘停
                    stopBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        rollerShade.CurtainUpDownStopControl(2);
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    //窗帘开
                    openBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        rollerShade.CurtainUpDownStopControl(0);
                        //控制延时回调
                        DeviceUI.SendCommandDelayAction(deviceUI.CommonDevice, () =>
                        {
                            if (Parent == null)
                            {
                                return;
                            }
                            RemoveUpdateControlDeviceStatuAction(zbGateway);
                            if (sendedControlCommand == false)
                            {
                                DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                            }
                        });
                    };
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                else
                {
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Tag = deviceUI
                    };
                    deviceListScrolView.AddChidren(deviceTypeRowLayout);
                    var deviceIMG = new Button()
                    {
                        X = Application.GetRealWidth(CommonPage.XLeft),
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        UnSelectedImagePath = deviceUI.IconPath,
                        SelectedImagePath = deviceUI.OnlineIconPath,
                        Gravity = Gravity.CenterVertical,
                        Tag = deviceStatus_Online
                    };
                    deviceTypeRowLayout.AddChidren(deviceIMG);
                    var deviceNameBtn = new Button()
                    {
                        X = Application.GetRealWidth(50) + deviceIMG.Right,
                        Width = Application.GetRealWidth(500),
                        Text = deviceUI.CommonDevice.DeviceEpointName,
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextAlignment = TextAlignment.CenterLeft
                    };
                    deviceTypeRowLayout.AddChidren(deviceNameBtn);
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
            }
        }
        /// <summary>
        /// 提示没有功能
        /// </summary>
        private void ShowNoFunctionTip()
        {
            var noFunctionTip = new Button()
            {
                Height = Application.GetMinRealAverage(200),
                TextID = R.MyInternationalizationString.NoFunction,
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                Gravity = Gravity.CenterVertical
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Height = Application.GetRealHeight(167),
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonFormResouce.X_Left),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
            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
@@ -1644,133 +1550,122 @@
        /// </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();
            }
            else
            {
                var sceneScrolView = new VerticalScrolViewLayout { };
                var sceneScrolView = new VerticalScrolViewLayout
                {
                    Y = Application.GetRealHeight(58)
                };
                functionSceneBodyView.AddChidren(sceneScrolView);
                foreach (var sceneRoomUI in sceneList)
                foreach (var scene in sceneList)
                {
                    var sceneFL = new FrameLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth - 100),
                        Height = Application.GetRealHeight(400),
                        Gravity = Gravity.CenterHorizontal,
                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Tag = sceneRoomUI
                        Height = Application.GetRealHeight(446),
                        BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Tag = scene
                    };
                    sceneScrolView.AddChidren(sceneFL);
                    var sceneRowLayout = new RowLayout()
                    var sceneRowLayout = new RowLayout
                    {
                        Y = Application.GetRealHeight(30),
                        Height = Application.GetRealHeight(400 - 30 - 10),
                        Gravity = Gravity.CenterHorizontal,
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Y = Application.GetRealHeight(46),
                        Height = Application.GetRealHeight(446 - 46),
                        LineColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Radius = CommonPage.BigFormRadius
                    };
                    sceneFL.AddChidren(sceneRowLayout);
                    var sceneItemFL = new FrameLayout()
                    {
                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                        Radius = CommonPage.BigFormRadius
                    };
                    sceneRowLayout.AddChidren(sceneItemFL);
                    var sceneImg = new Button()
                    {
                        UnSelectedImagePath = sceneRoomUI.sceneUI.IconPath,
                        Radius = CommonPage.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 sceneBGBtn = new Button()
                    var leftFL = new FrameLayout
                    {
                        BackgroundColor = ZigbeeColor.Current.GXCBlack70Color,
                        SelectedBackgroundColor = ZigbeeColor.Current.GXCBlack80Color,
                        Radius = CommonPage.BigFormRadius
                        X = Application.GetRealWidth(CommonFormResouce.X_Left),
                        Y = Application.GetRealHeight(58),
                        Width = Application.GetRealWidth(251),
                        Height = Application.GetRealHeight(282),
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2,
                        Radius = (uint)Application.GetRealHeight(17)
                    };
                    sceneRowLayout.AddChidren(sceneBGBtn);
                    var roomNameBtn = new Button()
                    sceneRowLayout.AddChidren(leftFL);
                    var collectionBtn = new Button
                    {
                        X = Application.GetRealWidth(30),
                        Y = Application.GetRealHeight(1),
                        Width = Application.GetRealWidth(600),
                        Height = Application.GetRealHeight(110),
                        Text = $"{sceneRoomUI.room.Name}",
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        TextSize = 12,
                        TextAlignment = TextAlignment.CenterLeft
                        X = Application.GetRealWidth(23),
                        Y = Application.GetRealHeight(23),
                        Width = Application.GetMinRealAverage(65),
                        Height = Application.GetMinRealAverage(65),
                        UnSelectedImagePath = "Item/Collection.png",
                        SelectedImagePath = "Item/CollectionSelected.png"
                    };
                    sceneRowLayout.AddChidren(roomNameBtn);
                    leftFL.AddChidren(collectionBtn);
                    var sceneNameBtn = new Button()
                    {
                        Width = Application.GetRealWidth(700),
                        Width = Application.GetRealWidth(176),
                        Height = Application.GetRealHeight(200),
                        TextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                        TextSize = 20,
                        Text = sceneRoomUI.sceneUI.Name,
                        Gravity = Gravity.Center
                        Text = scene.Name,
                        Gravity = Gravity.Center,
                        IsMoreLines = true
                    };
                    sceneRowLayout.AddChidren(sceneNameBtn);
                    var moreBtn = new Device.CommonForm.SelectedStatuButton()
                    {
                        Y = Application.GetRealHeight(1),
                        X = sceneRowLayout.Width - Application.GetRealWidth(150),
                        Width = Application.GetMinRealAverage(110),
                        Height = Application.GetMinRealAverage(110),
                        UnSelectedImagePath = "Item/MoreWhite.png",
                        SelectedImagePath = "Item/MoreSelected.png"
                    };
                    sceneRowLayout.AddChidren(moreBtn);
                    leftFL.AddChidren(sceneNameBtn);
                    //编辑延时
                    var leftDelayTimeBtn = new Device.CommonForm.RowLayoutEditButton()
                    //定时
                    var delayBtn = new RowLayoutDeleteButton
                    {
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                        TextID = R.MyInternationalizationString.Delay,
                        Tag = scene.SceneDelayTime
                    };
                    sceneRowLayout.AddLeftView(delayBtn);
                    //编辑
                    var settingBtn = new Device.CommonForm.RowLayoutEditButton()
                    {
                        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(leftDelayTimeBtn);
                        sceneRowLayout.AddRightView(settingBtn);
                        sceneRowLayout.AddRightView(deleteBtn);
                    }
                    //调用场景
                    EventHandler<MouseEventArgs> sceneDownHandler = (sender, e) =>
                    {
                        sceneBGBtn.IsSelected = true;
                    };
                    sceneBGBtn.MouseDownEventHandler += sceneDownHandler;
                    sceneImg.MouseDownEventHandler += sceneDownHandler;
                    sceneRowLayout.MouseDownEventHandler += sceneDownHandler;
                    sceneNameBtn.MouseDownEventHandler += sceneDownHandler;
                    sceneFL.MouseDownEventHandler += sceneDownHandler;
                    EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>
                    {
                        sceneBGBtn.IsSelected = false;
                        //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)
                        {
@@ -1795,22 +1690,22 @@
                            return;
                        }
                    };
                    sceneBGBtn.MouseUpEventHandler += sceneUpHandler;
                    sceneImg.MouseUpEventHandler += sceneUpHandler;
                    sceneRowLayout.MouseUpEventHandler += sceneUpHandler;
                    sceneFL.MouseUpEventHandler += sceneUpHandler;
                    sceneNameBtn.MouseUpEventHandler += sceneUpHandler;
                    //删除场景
                    EventHandler<MouseEventArgs> delEvent = (sender, e) =>
                    {
                        var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.ConfirmDelete), Language.StringByID(R.MyInternationalizationString.Cancel), Language.StringByID(R.MyInternationalizationString.Confrim));
                        alert.Show();
                        alert.ResultEventHandler += async (send1, e1) =>
                        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) =>
                        {
                            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);
@@ -1820,7 +1715,7 @@
                                //1成功
                                if (removeSceneAllData.removeSceneData.Result == 1)
                                {
                                    sceneRoomUI.room.RemoveScene(sceneRoomUI.sceneUI);
                                    room.RemoveScene(scene);
                                    //RefreshBodyView();
                                    sceneScrolView.RemoveViewByTag((sender as Button).Tag);
                                }
@@ -1833,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);
@@ -1844,12 +1739,12 @@
                    };
                    deleteBtn.MouseUpEventHandler += delEvent;
                    //编辑场景
                    moreBtn.MouseUpEventHandler += (sender, e) =>
                    settingBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room);
                        SceneRoomUI.EditScene(scene,room);
                    };
                    //编辑延时
                    leftDelayTimeBtn.MouseUpEventHandler += (sender, e) =>
                    delayBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        var tList = new List<string>() { };
@@ -1858,24 +1753,24 @@
                            tList.Add($"{i} {Language.StringByID(R.MyInternationalizationString.Second)}");
                        }
                        //int beforeIndex = (int)(sender as CommonForm.RowLayoutEditButton).Tag;
                        PickerView.Show(tList, (obj) =>
                        {
                            var tempRoom = Shared.Common.Room.GetRoomByFilePath(sceneRoomUI.room.FileName);
                            if (tempRoom == null)
                            {
                                return;
                            }
                            foreach (var ss in tempRoom.SceneUIList)
                            {
                                if (ss.Id == sceneRoomUI.sceneUI.Id)
                                {
                                    ss.SceneDelayTime = int.Parse(tList[obj].Split(' ')[0]);
                                    sceneRoomUI.room.Save();
                                    RefreshBodyView();
                                    return;
                                }
                            }
                        },0,"", Language.StringByID(R.MyInternationalizationString.Confrim), tList[(int)(sender as CommonForm.RowLayoutEditButton).Tag]);
                        //PickerView.Show(tList, (obj) =>
                        //{
                        //    var tempRoom = Shared.Common.Room.GetRoomByFilePath(sceneRoomUI.room.FileName);
                        //    if (tempRoom == null)
                        //    {
                        //        return;
                        //    }
                        //    foreach (var ss in tempRoom.SceneUIList)
                        //    {
                        //        if (ss.Id == sceneRoomUI.sceneUI.Id)
                        //        {
                        //            //ss.SceneDelayTime = int.Parse(obj.Split(' ')[0]);
                        //            sceneRoomUI.room.Save();
                        //            RefreshBodyView();
                        //            return;
                        //        }
                        //    }
                        //}, Language.StringByID(R.MyInternationalizationString.Confrim), tList[(int)(sender as CommonForm.RowLayoutEditButton).Tag]);
                    };
                }
            }
@@ -1886,13 +1781,26 @@
        /// </summary>
        private void ShowNoSceneTip()
        {
            var noFunction = new Button()
            {
                Y = Application.GetRealHeight(320),
                Width = Application.GetMinRealAverage(757),
                Height = Application.GetMinRealAverage(435),
                UnSelectedImagePath = "Item/NoFunction.png",
                Gravity = Gravity.CenterHorizontal
            };
            functionSceneBodyView.AddChidren(noFunction);
            var noScenceTip = new Button()
            {
                Height = Application.GetMinRealAverage(200),
                TextID = R.MyInternationalizationString.NoScene,
                Y = noFunction.Bottom + Application.GetRealHeight(32),
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}","\r\n"),
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                Gravity = Gravity.CenterVertical
                IsMoreLines = true
            };
            functionSceneBodyView.AddChidren(noScenceTip);
        }
@@ -1908,50 +1816,39 @@
        public async void ShowAutotion()
        {
            var logicScrolView = new VerticalScrolViewLayout { };
            functionSceneBodyView.AddChidren(logicScrolView);
            //Shared.Common.ResponseEntity.Logic.LogicDviceList = await gateway.GetGwDeviceList();
            // gateway.DeviceList.Clear();
            ////// Shared.Common.ResponseEntity.Logic.LogicDviceList = LocalDevice.Current.GetDeviceByGatewayID(gateway.getGatewayBaseInfo.gwID);
            //if (gateway.DeviceList.Count != 0)
            //{
            //    Shared.IO.FileUtils.WriteFileByBytes("ZigbeeDeviceListFilePath", System.Text.Encoding.UTF8.GetBytes(Newtonsoft.Json.JsonConvert.SerializeObject(gateway.DeviceList)));
            //}
            //else
            //{//临时保存设备列表数据给逻辑开发
            //    var devicestring = System.Text.Encoding.UTF8.GetString(Shared.IO.FileUtils.ReadFile("ZigbeeDeviceListFilePath"));
            //    gateway.DeviceList = Newtonsoft.Json.JsonConvert.DeserializeObject<List<CommonDevice>>(devicestring);
            //}
            functionSceneAutoBodyView.AddChidren(logicScrolView);
            CommonPage.Loading.Start();
            //if (Common.Logic.LogicDviceList.Count != 0)
            //{
            //    foreach (var gateway in ZbGateway.GateWayList)
            //    {
            //        if (gateway.IsMainGateWay)
            //        {
            //            Common.Logic.LogicDviceList = LocalDevice.Current.GetDeviceByGatewayID(gateway.getGatewayBaseInfo.gwID);
            //        }
            //    }
            //}
            //CommonPage.Loading.Start();
            if (Common.Logic.LogicList.Count == 0)
            {
                //var Idlist = await Logic.Send.GetLogicId();
                //if (Idlist.Count != 0)
                //{
                //    foreach (var LogicId in Idlist)
                //    {
                //        var logic = await Logic.Send.GetLogic(LogicId);
                //        if (logic != null)
                //        {
                //            Common.Logic.LogicList.Add(logic);
                //        }
                //    }
                //}
                var Idlist = await Logic.Send.GetLogicId();
                if (Idlist.Count != 0)
                {
                    var listlogic = await Logic.Send.ReadList(Idlist.Count);
                    foreach (var LogicId in Idlist)
                    {
                        var logic = await Logic.Send.GetLogic(LogicId);
                        if (logic != null)
                        foreach (var logic in listlogic)
                        {
                            Common.Logic.LogicList.Add(logic);
                            if (logic.LogicId == LogicId)
                            {
                                Common.Logic.LogicList.Add(logic);
                            }
                        }
                    }
                }
            }
            //自动化
            Automationview(logicScrolView);
            CommonPage.Loading.Hide();
@@ -2008,7 +1905,8 @@
                        //逻辑关
                        logic.IsEnable = 0;
                    }
                    Logic.Send.AddModifyLogic(logic);
                    Logic.Send.LogicControlSwitch(logic);
                    //Logic.Send.AddModifyLogic(logic);
                };
                if (logic.IsEnable == 1)
                {
@@ -2039,171 +1937,6 @@
                    UserView.HomePage.Instance.AddChidren(logicCommunalPage);
                    UserView.HomePage.Instance.PageIndex += 1;
                    logicCommunalPage.Show(() => { btnname.Text = logic.LogicName; Automationview(refresview); });
                };
                var btndelay = new Button
                {
                    Width = Application.GetRealWidth(150),
                    Height = Application.GetRealHeight(50),
                    X = Application.GetRealWidth(300),
                    Y = Application.GetRealHeight(25),
                    TextAlignment = TextAlignment.Center,
                    TextColor = 0xffcccccc,
                };
                logicrowlayout.AddChidren(btndelay);
                ///延时控件
                var btndelaytext = new Button
                {
                    BackgroundColor = 0xff676767,
                    Text = Language.StringByID(R.MyInternationalizationString.delayed),
                };
                //logicrowlayout.AddRightView(btndelaytext);
                //if (logic.param.ContainsKey ("delay")) {
                //    var delayvalue = logic.param ["delay"]?.ToString ();
                //    if (delayvalue != "" && delayvalue != "0") {
                //        var l = int.Parse (delayvalue) / 10;
                //        btndelay.Text = l.ToString () + "s";
                //    }
                //}
                btndelaytext.MouseUpEventHandler += (sender, e) =>
                {
                    Dialog window = new Dialog();
                    window.Show();
                    var frameLayout = new FrameLayout
                    {
                        Width = Application.GetRealWidth(580),
                        Height = Application.GetRealHeight(300),
                        X = Application.GetRealWidth(30),
                        Y = Application.GetRealHeight(330),
                        BackgroundColor = 0xffffffff,
                    };
                    window.AddChidren(frameLayout);
                    var Modifyname = new Button
                    {
                        Width = Application.GetRealWidth(580),
                        Height = Application.GetRealHeight(80),
                        TextID = R.MyInternationalizationString.devicedelaytime,
                        //Text = "请输入设备延时的时间(单位/s)",
                        Y = Application.GetRealHeight(10),
                        TextSize = 16,
                        TextColor = ZigbeeColor.Current.MusicTipTextColor,
                    };
                    frameLayout.AddChidren(Modifyname);
                    var delaytext = new EditText
                    {
                        Width = Application.GetRealWidth(540),
                        Height = Application.GetRealHeight(80),
                        Y = Application.GetRealHeight(80),
                        X = Application.GetRealWidth(20),
                        Gravity = Gravity.CenterVertical,
                        // BackgroundColor = SkinStyle.Current.MusicTipBackgroundColor,
                        //TextColor = 0xff000000,
                        Radius = 1,
                        BorderWidth = 1,
                        //BorderColor = SkinStyle.Current.MusicEditBorderColor,
                        //TextColor = SkinStyle.Current.MusicTextColor,
                    };
                    frameLayout.AddChidren(delaytext);
                    var line = new Button
                    {
                        Height = Application.GetRealHeight(2),
                        Y = Application.GetRealHeight(218),
                        BackgroundColor = 0xff666666,
                    };
                    frameLayout.AddChidren(line);
                    var cancelrow = new RowLayout
                    {
                        Y = Application.GetRealHeight(220),
                        Height = Application.GetRealHeight(80),
                        Width = Application.GetRealWidth(289),
                        BackgroundColor = 0xffcccccc,
                    };
                    frameLayout.AddChidren(cancelrow);
                    var cancel = new Button
                    {
                        TextID = R.MyInternationalizationString.cancel,
                        //TextColor = 0xff000000,
                        TextSize = 18,
                        //TextColor = SkinStyle.Current.MusicTextColor,
                    };
                    cancelrow.AddChidren(cancel);
                    cancel.MouseUpEventHandler += (sender1, e1) =>
                    {
                        window.Close();
                    };
                    var ther = new Button
                    {
                        Y = Application.GetRealHeight(220),
                        Height = Application.GetRealHeight(80),
                        Width = Application.GetRealWidth(2),
                        X = Application.GetRealHeight(289),
                        BackgroundColor = 0xff666666,
                    };
                    frameLayout.AddChidren(ther);
                    var confirmrow = new RowLayout
                    {
                        Y = Application.GetRealHeight(220),
                        X = Application.GetRealWidth(291),
                        Height = Application.GetRealHeight(80),
                        Width = Application.GetRealWidth(289),
                        BackgroundColor = 0xffcccccc,
                    };
                    frameLayout.AddChidren(confirmrow);
                    var confirm = new Button
                    {
                        TextID = R.MyInternationalizationString.confrim,
                        //TextColor = 0xff000000,
                        TextSize = 18,
                        // TextColor = SkinStyle.Current.MusicTextColor,
                    };
                    confirmrow.AddChidren(confirm);
                    //if (logic.param.ContainsKey ("delay")) {
                    //    var delayvalue = logic.param ["delay"]?.ToString ();
                    //    if (delayvalue != "" && delayvalue != "0") {
                    //        var l = int.Parse (delayvalue) / 10;
                    //        delaytext.Text = l.ToString () + "s";
                    //    }
                    //}
                    confirm.MouseUpEventHandler += (sender1, e1) =>
                    {
                        var isNumber = delaytext.Text.Trim();
                        if (!int.TryParse(isNumber, out int number) || isNumber == "")
                        {
                            new Alert(Language.StringByID(R.MyInternationalizationString.Tip),
                                       Language.StringByID(R.MyInternationalizationString.inputnumber),
                                     Language.StringByID(R.MyInternationalizationString.Close)).Show();
                            return;
                        }
                        var vel = int.Parse(isNumber);
                        //if (logic.param.ContainsKey ("delay")) {
                        //    logic.param.Remove ("delay");
                        //    logic.param.Add ("delay", vel * 10);
                        //} else {
                        //    logic.param.Add ("delay", vel * 10);
                        //}
                        //btndelay.Text = isNumber + "s";
                        window.Close();
                        Automationview(refresview);
                    };
                };