HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-10 2ed75b8b337048e5d75e6d9ec8307633134f02fd
ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -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,17 +20,21 @@
        /// </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>
@@ -51,10 +56,6 @@
        /// </summary>
        private Device.CommonForm.SelectedStatuButton addBtn;
        /// <summary>
        /// 分栏底部线条.
        /// </summary>
        private Button line;
        /// <summary>
        /// 网关
        /// </summary>
        private ZbGateway zbGateway = null;
@@ -73,11 +74,11 @@
        /// <summary>
        /// 当前功能类型按钮
        /// </summary>
        private Button tempFunctionTypeBtn;
        private FunctionButton tempFunctionTypeBtn;
        /// <summary>
        /// 功能类型按钮
        /// </summary>
        private Button functionTypeIMG;
        private FunctionButton functionTypeIMG;
        /// <summary>
        /// 功能类型
        /// </summary>
@@ -86,6 +87,14 @@
        /// 设备类型RowLayout
        /// </summary>
        private RowLayout typeRowLayout;
        /// <summary>
        /// 楼层
        /// </summary>
        private Button floorBtn;
        /// <summary>
        /// 选择楼层
        /// </summary>
        private Button selectFloorBtn;
        #endregion
@@ -455,13 +464,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,8 +529,30 @@
        /// </summary>
        public Category()
        {
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
            BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
            instance = this;
        }
        public void InitFloor()
        {
            Config.Instance.Home.FloorDics.Clear();
            Config.Instance.Home.FloorDics.Add("Floor1", "一楼");
            Config.Instance.Home.FloorDics.Add("Floor2", "二楼");
            Config.Instance.Home.FloorDics.Add("Floor3", "三楼");
            Config.Instance.Home.FloorDics.Add("Floor4", "四楼");
            Config.Instance.Home.FloorDics.Add("Floor5", "⑤楼");
            if (string.IsNullOrEmpty(Config.Instance.Home.CurrentFloorId))
            {
                if (Config.Instance.Home.FloorDics.Count > 0)
                {
                    foreach (var floor in Config.Instance.Home.FloorDics)
                    {
                        Config.Instance.Home.CurrentFloorId=floor.Key;
                        break;
                    }
                }
            }
            //Config.Instance.Save();
        }
        /// <summary>
@@ -530,133 +561,175 @@
        /// <param name="selectedBtn">选中那个界面 0--功能 1--场景 2--自动化 </param>
        public void Show(int selectedBtn = 1)
        {
            InitFloor();
            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);
            if (Config.Instance.Home.FloorDics.Count > 0)
            {
                floorBtn.Text = Config.Instance.Home.GetCurrentFloorName();
                functionSceneAutoBG.AddChidren(floorBtn);
                functionSceneAutoBG.AddChidren(selectFloorBtn);
            }
            var roomFL = new HorizontalScrolViewLayout()
            {
                X= Application.GetRealWidth(CommonFormResouce.X_Left),
                Y = functionSceneAutoBG.Bottom,
                Height = Application.GetRealHeight(167),
                Width=Application.GetRealWidth(CommonPage.AppRealWidth-CommonFormResouce.X_Left),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(roomFL);
            Button curBtn = new Button();
            for(int i=0;i<Config.Instance.Home.RoomFilePathList.Count;i++)
            {
                var roomFilePath = Config.Instance.Home.RoomFilePathList[i];
                var room = Shared.Common.Room.GetRoomByFilePath(roomFilePath);
                if (room == null)
                {
                    continue;
                }
                var row = new RowLayout()
                {
                    Width = Application.GetRealWidth(187+50),
                    Height = Application.GetRealHeight(167),
                    LineColor= ZigbeeColor.Current.GXCGrayBackgroundColor
                };
                roomFL.AddChidren(row);
                var roomBtn = new Button()
                {
                    Width = Application.GetRealWidth(187),
                    Height = Application.GetRealHeight(78),
                    Radius=(uint)Application.GetRealHeight(78/2),
                    Gravity = Gravity.Center,
                    Text=room.Name,
                    TextColor=ZigbeeColor.Current.GXCTextGrayColor,
                    SelectedTextColor=ZigbeeColor.Current.GXCTextWhiteColor,
                    BackgroundColor=ZigbeeColor.Current.GXCButtonUnSelectedColor3,
                    SelectedBackgroundColor=ZigbeeColor.Current.GXCButtonSelectedColor,
                    BorderColor=ZigbeeColor.Current.GXCBorderUnSelectedColor,
                    BorderWidth=1
                };
                row.AddChidren(roomBtn);
                if(Shared.Common.Room.CurrentRoom.FileName==roomFilePath)
                {
                    roomBtn.IsSelected = true;
                    curBtn = roomBtn;
                }
                roomBtn.MouseUpEventHandler += (sender, e) =>
                {
                    if ((sender as Button) == curBtn)
                    {
                        return;
                    }
                    (sender as Button).IsSelected = true;
                    curBtn.IsSelected = false;
                    curBtn = (sender as Button);
                    Shared.Common.Room.CurrentRoom = room;
                };
            }
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = line.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - CommonPage.LineHeight,
                Y = roomFL.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - functionBtn.Height - topView.Height - roomFL.Height - CommonPage.LineHeight,
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            midFL.AddChidren(functionSceneBodyView);
@@ -664,22 +737,18 @@
            {
                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 +764,33 @@
        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);
            floors.FloorAction += (floorName) =>
            {
                floorBtn.Text = floorName;
            };
        }
        /// <summary>
@@ -714,7 +803,6 @@
            functionBtn.IsSelected = true;
            sceneBtn.IsSelected = false;
            automationBtn.IsSelected = false;
            line.X = functionBtn.X;
            addBtn.Visible = false;
            RefreshBodyView();
        }
@@ -729,7 +817,6 @@
            functionBtn.IsSelected = false;
            sceneBtn.IsSelected = true;
            automationBtn.IsSelected = false;
            line.X = sceneBtn.X;
            addBtn.Visible = true;
            RefreshBodyView();
        }
@@ -744,7 +831,6 @@
            functionBtn.IsSelected = false;
            sceneBtn.IsSelected = false;
            automationBtn.IsSelected = true;
            line.X = automationBtn.X;
            addBtn.Visible = true;
            RefreshBodyView();
        }
@@ -852,25 +938,25 @@
            {
                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();
                tempFunctionTypeBtn = new FunctionButton();
                foreach (var deviceType in Common.Room.AllRoomDeviceTypeList)
                {
                    typeRowLayout = new RowLayout()
@@ -880,22 +966,23 @@
                        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;
                    functionTypeIMG.ImageBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.NameBtn.MouseUpEventHandler += ShowSameTypeFunction;
                    functionTypeIMG.ImageBG.MouseUpEventHandler += ShowSameTypeFunction;
                    if (deviceType == Shared.Common.Room.AllRoomDeviceUIList[0].CommonDevice.Type)
                    {
                        ShowSameTypeFunction(functionTypeIMG, null);
                        ShowSameTypeFunction(functionTypeIMG.ImageBtn, null);
                    }
                }
            }
@@ -911,8 +998,9 @@
            //选择功能--直接从房间的devicelist中获取
            Shared.Common.Room.GetAllRoomDeviceUIList();
            tempFunctionTypeBtn.IsSelected = false;
            (typeSender as Button).IsSelected = true;
            tempFunctionTypeBtn = (typeSender as Button);
            tempFunctionTypeBtn = (typeSender as Button).Parent as FunctionButton;
            ((typeSender as Button).Parent as FunctionButton).IsSelected = true;
            deviceListScrolView.RemoveAll();
            var sameTypeList = new List<DeviceUI> { };
@@ -935,13 +1023,14 @@
                //删除设备
                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) =>
                    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, false);
                            Shared.Common.Room.CurrentRoom.DeleteDevice(deviceUI.CommonDevice);
                            deviceListScrolView.RemoveViewByTag((delSender as Button).Tag);
                            sameTypeList.Remove(deviceUI);
                            if (sameTypeList.Count == 0)
@@ -963,11 +1052,11 @@
                if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
                {
                    //灯
                    var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                    //补上非远程
                    if (light.Gateway == null)
                    {
                        continue;
                    var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                    //补上非远程
                    if (light.Gateway == null)
                    {
                        continue;
                    }
                    if (light.Gateway.IsVirtual)
                    {
@@ -989,53 +1078,27 @@
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Height = Application.GetRealHeight(127+35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        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) =>
                    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);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            light.SwitchControl(1);
                        }
@@ -1058,6 +1121,14 @@
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
@@ -1065,10 +1136,6 @@
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.AirSwitch)
                {
@@ -1098,53 +1165,27 @@
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        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) =>
                    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);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            airSwitch.SwitchControl(1);
                        }
@@ -1166,6 +1207,15 @@
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
@@ -1173,10 +1223,6 @@
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.DimmableLight)
                {
@@ -1208,53 +1254,27 @@
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        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) =>
                    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);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            dimmableLight.SwitchControl(1);
                        }
@@ -1276,6 +1296,15 @@
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
@@ -1283,10 +1312,7 @@
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.Thermostat)
                {
@@ -1326,53 +1352,27 @@
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(CommonPage.RowHeight),
                        LineColor = ZigbeeColor.Current.GXCLineColor,
                        Height = Application.GetRealHeight(127 + 35),
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        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) =>
                    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);
                        switchBtn.IsSelected = !switchBtn.IsSelected;
                        if (switchBtn.IsSelected == true)
                        (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
                        if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
                        {
                            ac.Open();
                        }
@@ -1394,6 +1394,15 @@
                            }
                        });
                    };
                    var editBtn = new CommonForm.RowLayoutEditButton()
                    {
                        Tag = deviceUI,
                        Radius = 0
                    };
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
                        Tag = deviceUI,
@@ -1401,10 +1410,6 @@
                    };
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    deviceTypeRowLayout.MouseUpEventHandler += deviceDetailHandler;
                    deviceIMG.MouseUpEventHandler += deviceDetailHandler;
                    deviceNameBtn.MouseUpEventHandler += deviceDetailHandler;
                }
                else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                {
@@ -1434,63 +1439,25 @@
                    var deviceTypeRowLayout = new RowLayout()
                    {
                        Height = Application.GetRealHeight(CommonPage.RowHeight),
                        Height = Application.GetRealHeight(127 + 35),
                        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()
                    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()
                    {
                        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",
                        Tag = deviceUI,
                        Radius = 0
                    };
                    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);
                    deviceTypeRowLayout.AddRightView(editBtn);
                    editBtn.MouseUpEventHandler += deviceDetailHandler;
                    var delBtn = new Device.CommonForm.RowLayoutDeleteButton()
                    {
@@ -1500,15 +1467,23 @@
                    deviceTypeRowLayout.AddRightView(delBtn);
                    delBtn.MouseUpEventHandler += delEvent;
                    //窗帘关
                    closeBtn.MouseUpEventHandler += (sender, e) =>
                    deviceRow.SwitchBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        zbGateway = deviceUI.CommonDevice.Gateway;
                        sendedControlCommand = false;
                        zbGateway.ReportAction += UpdateDeviceControllStatu;
                        AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
                        rollerShade.CurtainUpDownStopControl(1);
                        (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, () =>
@@ -1524,98 +1499,10 @@
                            }
                        });
                    };
                    //窗帘停
                    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;
                }
            }
        }
@@ -1625,13 +1512,27 @@
        /// </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()
            {
                Height = Application.GetMinRealAverage(200),
                Y = noFunction.Bottom + Application.GetRealHeight(32),
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoFunction,
                //Text = "没有功能 \n 请在个人中心中--设备管理处添加",
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                Gravity = Gravity.CenterVertical
                IsMoreLines=true
            };
            functionSceneBodyView.AddChidren(noFunctionTip);
        }
@@ -1659,114 +1560,104 @@
            }
            else
            {
                var sceneScrolView = new VerticalScrolViewLayout { };
                var sceneScrolView = new VerticalScrolViewLayout
                {
                    Y=Application.GetRealHeight(58)
                };
                functionSceneBodyView.AddChidren(sceneScrolView);
                foreach (var sceneRoomUI in sceneList)
                {
                    var sceneFL = new FrameLayout()
                    {
                        Width = Application.GetRealWidth(CommonPage.AppRealWidth - 100),
                        Height = Application.GetRealHeight(400),
                        Height = Application.GetRealHeight(446),
                        Gravity = Gravity.CenterHorizontal,
                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                        BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
                        Tag = sceneRoomUI
                    };
                    sceneScrolView.AddChidren(sceneFL);
                    var sceneRowLayout = new RowLayout()
                    {
                        Y = Application.GetRealHeight(30),
                        Height = Application.GetRealHeight(400 - 30 - 10),
                        Y = Application.GetRealHeight(46),
                        Height = Application.GetRealHeight(446 - 46),
                        Gravity = Gravity.CenterHorizontal,
                        LineColor = ZigbeeColor.Current.GXCBackgroundColor,
                        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()
                    {
                        X=Application.GetRealWidth(179),
                        Width=Application.GetMinReal(844),
                        Height=Application.GetMinReal(400),
                        Gravity = Gravity.CenterVertical,
                        UnSelectedImagePath = sceneRoomUI.sceneUI.IconPath,
                        Radius = CommonPage.BigFormRadius
                        Radius = (uint)Application.GetRealHeight(CommonFormResouce.BigFormRadius)
                    };
                    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),
                        Width = Application.GetRealWidth(251),
                        Height = Application.GetRealHeight(282),
                        Gravity=Gravity.CenterVertical,
                        BackgroundColor = ZigbeeColor.Current.GXCBlackBackgroundColor2
                    };
                    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
                        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
                    {
                        TextID = R.MyInternationalizationString.Delay,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                    };
                    sceneRowLayout.AddLeftView(delayBtn);
                    //编辑
                    var settingBtn = new Device.CommonForm.RowLayoutEditButton()
                    {
                        TextID=R.MyInternationalizationString.Setting,
                        Tag = sceneRoomUI.sceneUI.SceneDelayTime
                    };
                    //删除
                    var deleteBtn = new Device.CommonForm.RowLayoutDeleteButton
                    {
                        Tag = sceneRoomUI
                    };
                    if(!sceneRoomUI.room.IsSharedRoom)
                    if (!sceneRoomUI.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失败
                        //后面补上相关提示
                        //要先从网关读取延时是否正在执行,如果是进行倒计时,不允许在点击
@@ -1795,17 +1686,17 @@
                            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)
                            {
@@ -1844,12 +1735,12 @@
                    };
                    deleteBtn.MouseUpEventHandler += delEvent;
                    //编辑场景
                    moreBtn.MouseUpEventHandler += (sender, e) =>
                    settingBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        SceneRoomUI.EditScene(sceneRoomUI.sceneUI, sceneRoomUI.room);
                    };
                    //编辑延时
                    leftDelayTimeBtn.MouseUpEventHandler += (sender, e) =>
                    delayBtn.MouseUpEventHandler += (sender, e) =>
                    {
                        var tList = new List<string>() { };
@@ -1858,24 +1749,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 +1777,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),
                Y = noFunction.Bottom + Application.GetRealHeight(32),
                Height = Application.GetRealHeight(200),
                Width = Application.GetRealWidth(700),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NoScene,
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                Gravity = Gravity.CenterVertical
                IsMoreLines = true
            };
            functionSceneBodyView.AddChidren(noScenceTip);
        }
@@ -1909,49 +1813,38 @@
        {
            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);
            //}
            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 +1901,8 @@
                        //逻辑关
                        logic.IsEnable = 0;
                    }
                    Logic.Send.AddModifyLogic(logic);
                    Logic.Send.LogicControlSwitch(logic);
                    //Logic.Send.AddModifyLogic(logic);
                };
                if (logic.IsEnable == 1)
                {
@@ -2039,171 +1933,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);
                    };
                };