HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2019-10-10 2ed75b8b337048e5d75e6d9ec8307633134f02fd
ZigbeeApp/Shared/Phone/UserView/UserHomeView.cs
@@ -1,7 +1,9 @@
using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.Device.AC;
using ZigBee.Device;
using Shared.Phone.Device.CommonForm;
namespace Shared.Phone.UserView
{
@@ -33,9 +35,9 @@
        /// </summary>
        private static readonly int topFrameLayout_Height = 500;
        /// <summary>
        /// The height of the middle view.-- 1920-500-160
        /// 1524
        /// </summary>
        private static readonly int midView_Height = CommonPage.AppRealHeight - topFrameLayout_Height - CommonPage.TabbarHeight;
        private static readonly int midView_Height = 1524;
        /// <summary>
        /// The height of the room page view. -- 550
        /// </summary>
@@ -229,6 +231,17 @@
                                    break;
                                case DeviceType.WindowCoveringDevice:
                                    if ((common as Rollershade).DeviceStatusReport.CluterID == 258)
                                    {
                                        if ((common as Rollershade).DeviceStatusReport.AttriBute[0].AttributeId == 0)
                                        {
                                            //窗帘类型
                                            var rollerShade = deviceUI.CommonDevice as Rollershade;
                                            rollerShade.DeviceStatusReport = (common as Rollershade).DeviceStatusReport;
                                            rollerShade.WcdType = (common as Rollershade).DeviceStatusReport.AttriBute[0].AttriButeData;
                                            rollerShade.LastDateTime = DateTime.Now;
                                        }
                                    }
                                    if ((common as ZigBee.Device.Rollershade).DeviceStatusReport.CluterID == 3)
                                    {
                                        var rollershade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
@@ -265,11 +278,34 @@
                                        {
                                            case 0:
                                                //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                                ac.currentLocalTemperature = attriButeList[0].AttriButeData / 100;
                                                ac.currentLocalTemperature = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                ac.LastDateTime = DateTime.Now;
                                                //indoorTemperatureBtn.Text = $"室温 {ac.currentLocalTemperature} ℃";
                                                //currentTemperatureBtn.Text = $"{ac.currentLocalTemperature} ℃";
                                                //Temparetrue
                                                break;
                                            case 17:
                                                //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
                                                ac.currentCoolingSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 18:
                                                //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
                                                ac.currentHeatingSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 4096:
                                                //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。
                                                ac.currentAutoSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 28:
                                                //此属性描述恒温设备正处于哪种模式
                                                //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
                                                ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                for (int j = 0; j < frameLayout.ChildrenCount; j++)
                                                {
                                                    var tempView = frameLayout.GetChildren(j);
@@ -280,42 +316,16 @@
                                                    if (tempView.Tag.ToString() == "Temparetrue")
                                                    {
                                                        (tempView as Button).Text = $"{ac.currentLocalTemperature} ℃";
                                                        (tempView as Button).Text = $"{ACControlBase.GetCurrentModeTemperature(ac)} ℃";
                                                    }
                                                }
                                                break;
                                            case 17:
                                                //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
                                                ac.currentCoolingSetpoint = attriButeList[0].AttriButeData / 100;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 18:
                                                //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
                                                ac.currentHeatingSetpoint = attriButeList[0].AttriButeData / 100;
                                                ac.LastDateTime = DateTime.Now;
                                                break;
                                            case 28:
                                                //此属性描述恒温设备正处于哪种模式
                                                //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
                                                ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                ac.LastDateTime = DateTime.Now;
                                                for (int j = 0; j < frameLayout.ChildrenCount; j++)
                                                {
                                                    var tempView = frameLayout.GetChildren(j);
                                                    if (tempView.Tag == null)
                                                    {
                                                        continue;
                                                    }
                                                    if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
                                                    {
                                                        (tempView as Button).IsSelected = ac.currentSystemMode != 0;
                                                    }
                                                }
                                                break;
                                        }
@@ -600,7 +610,7 @@
        public UserHomeView()
        {
            ZbGateway.StatusList.Add(this);
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
            BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
        }
        /// <summary>
@@ -608,55 +618,83 @@
        /// </summary>
        public void Show()
        {
            this.RemoveAll();
            #region topview
            var topFrameLayout = new FrameLayout()
            {
                Height = Application.GetRealHeight(topFrameLayout_Height),
                BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor,
                Y=Application.GetRealHeight(60),
                Height = Application.GetRealHeight(127),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor,
            };
            this.AddChidren(topFrameLayout);
            AddChidren(topFrameLayout);
            var homeBtn = new Device.CommonForm.SelectedStatuButton()
            var floor = new Button
            {
                Y = Application.GetRealHeight(100),
                X = Application.GetRealWidth(50),
                Width = Application.GetMinRealAverage(110),
                Height = Application.GetMinRealAverage(110),
                UnSelectedImagePath = "Item/MyHome.png",
                X = Application.GetRealWidth(CommonFormResouce.X_Left),
                Width = Application.GetMinRealAverage(69),
                Height = Application.GetMinRealAverage(69),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Floor.png"
            };
            topFrameLayout.AddChidren(homeBtn);
            topFrameLayout.AddChidren(floor);
            var residecneName = new Button()
            var floorBtn = new Button
            {
                Y = Application.GetRealHeight(100),
                Width = Application.GetRealWidth(600),
                Height = Application.GetRealHeight(110),
                TextAlignment = TextAlignment.Center,
                Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull),
                TextSize = 20,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                Gravity = Gravity.CenterHorizontal
                X=floor.Right,
                Width=Application.GetRealWidth(500),
                Height=Application.GetRealHeight(100),
                Gravity = Gravity.CenterVertical,
                TextAlignment =TextAlignment.CenterLeft,
                TextColor=ZigbeeColor.Current.GXCTextColor,
                Text=Config.Instance.Home.GetCurrentFloorName()
            };
            topFrameLayout.AddChidren(residecneName);
            topFrameLayout.AddChidren(floorBtn);
            var messageBtn = new Button()
            {
                X = Application.GetRealWidth(CommonPage.AppRealWidth - 150),
                Y = Application.GetRealHeight(100),
                Width = Application.GetMinRealAverage(110),
                Height = Application.GetMinRealAverage(110),
                UnSelectedImagePath = "Item/Message.png"
                X = Application.GetRealWidth(953),
                Width = Application.GetMinRealAverage(69),
                Height = Application.GetMinRealAverage(69),
                Gravity = Gravity.CenterVertical,
                UnSelectedImagePath = "Item/Message.png",
                SelectedImagePath="Item/MessageSelected.png"
            };
            //暂时隐藏
            //topFrameLayout.AddChidren(messageBtn);
            topFrameLayout.AddChidren(messageBtn);
            //切换住宅
            homeBtn.MouseUpEventHandler += (send, e) =>
            var residecneName = new Button()
            {
                X=Application.GetRealWidth(CommonFormResouce.X_Left),
                Y = Application.GetRealHeight(161),
                Width = Application.GetRealWidth(700),
                Height = Application.GetRealHeight(95),
                TextAlignment = TextAlignment.CenterLeft,
                Text = Config.Instance.Home.Name ?? Language.StringByID(R.MyInternationalizationString.TheResidenceNameNull),
                TextSize = 24,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor
            };
            if(Config.Instance.Home.IsOthreShare)
            {
                residecneName.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){Config.Instance.Home.Name}";
            }
            AddChidren(residecneName);
            EventHandler<MouseEventArgs> selectFloor = (send, e) =>
              {
                  var floorFL = new Phone.Device.Category.SelectFloor();
                  AddChidren(floorFL);
                  floorFL.Init(35,153);
                  floorFL.FloorAction = (floorName) =>
                  {
                      floorBtn.Text = floorName;
                  };
              };
            floor.MouseUpEventHandler += selectFloor;
            floorBtn.MouseUpEventHandler += selectFloor;
            //切换住宅
            residecneName.MouseLongEventHandler += (send, e) =>
            {
                var tempHomeBtn = send as Button;
                if (Config.Instance.HomeFilePathList.Count == 0)
                {
                    var alert = new Alert(Language.StringByID(R.MyInternationalizationString.TIP), Language.StringByID(R.MyInternationalizationString.CurrentlyTheUserIshHouseIsEmptyPleaseBuildANewHouseFirst), Language.StringByID(R.MyInternationalizationString.Close), Language.StringByID(R.MyInternationalizationString.OK));
@@ -680,21 +718,22 @@
                        residenceListView.Close();
                    };
                    var upperTriangleBtn = new Button()
                    var bg = new Button
                    {
                        X = Application.GetRealWidth(25) + homeBtn.X,
                        Y = homeBtn.Bottom,
                        Width = Application.GetMinRealAverage(30),
                        Height = Application.GetMinRealAverage(15),
                        UnSelectedImagePath = "Item/UpperTriangle.png"
                        X = Application.GetRealWidth(35),
                        Y = Application.GetRealHeight(248),
                        Width = Application.GetMinRealAverage(449),
                        Height = Application.GetMinRealAverage(478),
                        UnSelectedImagePath = "Item/SelectHouse"
                    };
                    closeBGview.AddChidren(upperTriangleBtn);
                    closeBGview.AddChidren(bg);
                    var changeHomeFL = new FrameLayout()
                    {
                        X = Application.GetRealWidth(25),
                        Y = upperTriangleBtn.Bottom,
                        Height = Application.GetRealHeight(340),
                        Width = Application.GetRealWidth(500),
                        X = Application.GetRealWidth(35),
                        Y = Application.GetRealHeight(271),
                        Height = Application.GetRealHeight(449),
                        Width = Application.GetRealWidth(440),
                        Radius = CommonPage.BigFormRadius,
                        BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
                    };
@@ -703,9 +742,9 @@
                    var changeHomeBtn = new Button()
                    {
                        X = Application.GetRealWidth(80),
                        Width = Application.GetRealWidth(450),
                        Height = Application.GetRealHeight(110),
                        TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                        Width = Application.GetRealWidth(350),
                        Height = Application.GetRealHeight(150),
                        TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                        TextID = R.MyInternationalizationString.ChangeHome,
                        TextAlignment = TextAlignment.CenterLeft
                    };
@@ -714,7 +753,7 @@
                    var scrolView = new VerticalScrolViewLayout()
                    {
                        Y = changeHomeBtn.Bottom,
                        Height = Application.GetRealHeight(220)
                        Height = Application.GetMinRealAverage(305-10)
                    };
                    changeHomeFL.AddChidren(scrolView);
@@ -729,34 +768,39 @@
                        }
                        var rowView = new RowLayout()
                        {
                            Height = Application.GetRealHeight(110)
                            Height = Application.GetRealHeight(150)
                        };
                        scrolView.AddChidren(rowView);
                        var pointBtn = new Device.CommonForm.SelectedStatuButton()
                        {
                            X=Application.GetRealWidth(80),
                            Width = Application.GetMinRealAverage(80),
                            Height = Application.GetMinRealAverage(110),
                            Height = Application.GetMinRealAverage(80),
                            Gravity = Gravity.CenterVertical,
                            UnSelectedImagePath = "Item/Point.png",
                            SelectedImagePath = "Item/PointSelected.png",
                            UnSelectedImagePath = "Item/House.png",
                            SelectedImagePath = "Item/HouseSelected.png",
                            IsSelected = home.Id == Config.Instance.Home.Id
                        };
                        rowView.AddChidren(pointBtn);
                        var nameBtn = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = Application.GetRealWidth(80),
                            Width = Application.GetRealWidth(500 - 80 - 50),
                            X = Application.GetRealWidth(173),
                            Width = Application.GetRealWidth(280),
                            TextAlignment = TextAlignment.CenterLeft,
                            Text = home.Name,
                            TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                            SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
                            TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                            SelectedTextColor = ZigbeeColor.Current.GXCTextBlackColor,
                            IsSelected = home.Id == Config.Instance.Home.Id
                        };
                        if(home.IsOthreShare)
                        {
                            nameBtn.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){home.Name}";
                        }
                        rowView.AddChidren(nameBtn);
                        EventHandler<MouseEventArgs> selectedResidenceHandler = (send1, e1) =>
                        {
                            if (Config.Instance.Home == home)
                            if (Config.Instance.Home.FileName == homeFilePath)
                            {
                                return;
                            }
@@ -766,6 +810,10 @@
                            nameBtn.IsSelected = true;
                            residecneName.Text = home.Name;
                            if(home.IsOthreShare)
                            {
                                nameBtn.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){home.Name}";
                            }
                            clickCheckBtn = pointBtn;
                            clickNameBtn = nameBtn;
                            residenceListView.Close();
@@ -781,6 +829,10 @@
                            clickCheckBtn = pointBtn;
                            clickNameBtn = nameBtn;
                            residecneName.Text = home.Name;
                            if (home.IsOthreShare)
                            {
                                residecneName.Text = nameBtn.Text = $"({Language.StringByID(R.MyInternationalizationString.Shared)}){home.Name}";
                            }
                        }
                        else
                        {
@@ -795,21 +847,14 @@
            {
            };
            #endregion
            #region midView
            var midView = new FrameLayout()
            if(CanBindGateway()==false)
            {
                Y = topFrameLayout.Bottom,
                Height = midView_Height,
            };
            AddChidren(midView);
            #endregion
            #region --roomPage
            var roomPageView = new PageLayout()
            {
                Y = Application.GetRealHeight(50) + residecneName.Bottom,
                    Y = Application.GetRealHeight(302),
                Width = Application.GetRealWidth(CommonPage.AppRealWidth - CommonPage.XLeft * 2),
                Height = Application.GetMinRealAverage(roomPageView_Height),
                Radius = CommonPage.BigFormRadius,
@@ -819,7 +864,7 @@
            AddChidren(roomPageView);
            //当前房间
            if (Shared.Common.Room.canInitAllRoom == true)
                if (Shared.Common.Room.CanInitAllRoom == true)
            {
                //Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.CurrentRoom;
                Room.CurrentRoom = Room.Lists[0];
@@ -860,17 +905,26 @@
                    roomListBtn.MouseUpEventHandler += (send, e) =>
                    {
                        var roomList = new Device.Room.RoomManagement();
                        HomePage.Instance.AddChidren(roomList);
                            //var roomList = new Device.Room.RoomManagement();
                            //HomePage.Instance.AddChidren(roomList);
                            //HomePage.Instance.PageIndex += 1;
                            //roomList.Show();
                            //roomList.action += () =>
                            //{
                            //    Show();
                            //};
                            var editRoom = new Device.Room.AddRoom();
                            HomePage.Instance.AddChidren(editRoom);
                        HomePage.Instance.PageIndex += 1;
                        roomList.Show();
                        roomList.action += () =>
                            editRoom.Show();
                            editRoom.action += () =>
                        {
                            Show();
                        };
                    };
                }
            }
            else
            {
@@ -909,82 +963,57 @@
            var functionSceneView = new FrameLayout()
            {
                Y = roomPageView.Bottom,
                Height = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight) - roomPageView.Bottom,
                    Y = Application.GetRealHeight(861),
                    Width=Application.GetRealWidth(832),
                    Height = Application.GetRealHeight(167),
                    Gravity=Gravity.CenterHorizontal,
                    BackgroundImagePath="Item/SceneFunctionBG.png"
            };
            AddChidren(functionSceneView);
            //功能
            functionBtn = new Button()
            {
                X = Application.GetRealWidth(50),
                Width = Application.GetRealWidth(540 - 50) - 2,
                Height = Application.GetRealHeight(150),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
                TextAlignment = TextAlignment.Center,
                TextSize = 16,
                    X = Application.GetRealWidth(30),
                    Y=Application.GetRealHeight(12),
                    Width = Application.GetRealWidth(350),
                    Height = Application.GetRealHeight(100),
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                TextID = R.MyInternationalizationString.Function,
                IsSelected = true
            };
            functionSceneView.AddChidren(functionBtn);
            var functionSceneMidLine = new Button()
            {
                X = functionBtn.Right,
                Width = 2,
                Y = Application.GetRealHeight(60),
                Height = Application.GetRealHeight(60),
                BackgroundColor = ZigbeeColor.Current.GXCLineColor
            };
            functionSceneView.AddChidren(functionSceneMidLine);
            //场景
            var sceneBtn = new Button()
            {
                X = functionBtn.Right,
                Width = Application.GetRealWidth(540 - 50),
                Height = Application.GetRealHeight(150),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
                TextAlignment = TextAlignment.Center,
                TextSize = 16,
                    X = Application.GetRealWidth(430),
                    Y = Application.GetRealHeight(12),
                    Width = Application.GetRealWidth(360),
                    Height = Application.GetRealHeight(100),
                    TextColor = ZigbeeColor.Current.GXCTextGrayColor3,
                    SelectedTextColor = ZigbeeColor.Current.GXCTextWhiteColor,
                TextID = R.MyInternationalizationString.Scence,
                IsSelected = false
            };
            functionSceneView.AddChidren(sceneBtn);
            var functionSceneBottomLine = new Button()
            {
                Y = functionBtn.Bottom,
                Height = CommonPage.LineHeight,
                X = functionBtn.X,
                Width = roomPageView.Width,
                BackgroundColor = ZigbeeColor.Current.GXCLineColor
            };
            functionSceneView.AddChidren(functionSceneBottomLine);
            var line = new Button()
            {
                Y = functionBtn.Bottom,
                Height = CommonPage.LineHeight,
                X = functionBtn.X,
                Width = Application.GetRealWidth(540 - 50),
                BackgroundColor = ZigbeeColor.Current.GXCButtonBlueColor
            };
            functionSceneView.AddChidren(line);
            //功能和场景bodyView
            functionSceneBodyView = new FrameLayout()
            {
                Y = line.Bottom,
                Height = functionSceneView.Height - functionBtn.Height,
                Width = roomPageView.Width,
                Gravity = Gravity.CenterHorizontal
                    Y = functionSceneView.Bottom,
                    Height = Application.GetRealHeight(750),
                    Gravity = Gravity.CenterHorizontal,
                    BackgroundColor=ZigbeeColor.Current.GXCGrayBackgroundColor
            };
            functionSceneView.AddChidren(functionSceneBodyView);
                AddChidren(functionSceneBodyView);
            //选择功能分栏
            functionBtn.MouseUpEventHandler += (sender, e) =>
            {
                sceneBtn.IsSelected = false;
                functionBtn.IsSelected = true;
                line.X = functionBtn.X;
                RefreshBodyView();
            };
            //选择场景分栏
@@ -992,13 +1021,10 @@
            {
                functionBtn.IsSelected = false;
                sceneBtn.IsSelected = true;
                line.X = sceneBtn.X;
                RefreshBodyView();
            };
            RefreshBodyView();
            #endregion
            roomPageView.PageChange += (sender, e) =>
            {
@@ -1006,7 +1032,12 @@
                Room.CurrentRoom = Room.CurrentRoom == null ? Room.Lists[0] : Room.Lists[roomPageView.PageIndex];
                RefreshBodyView();
            };
            //roomPageView.PageIndex = Room.Lists.IndexOf(Room.CurrentRoom);
            }
            else
            {
                ShowNoGatewayTip();
            }
        }
        #endregion
@@ -1015,7 +1046,7 @@
        public void RefreshBodyView()
        {
            if (Room.canInitAllRoom == false)
            if (Room.CanInitAllRoom == false)
            {
                return;
            }
@@ -1040,7 +1071,7 @@
        /// <returns><c>true</c>, if bing gateway was caned, <c>false</c> otherwise.</returns>
        private bool CanBindGateway()
        {
            if (HadBindGateway() == false && UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 1)
            if (HadBindGateway() == false && (UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenter.UserCenterResourse.UserInfo.AuthorityNo == 2))
            {
                return true;
            }
@@ -1066,26 +1097,59 @@
        /// </summary>
        private void ShowNoGatewayTip()
        {
            var addGatewayBtn = new Button()
            var bg = new Button
            {
                Height = Application.GetMinRealAverage(200),
                Width = Application.GetMinRealAverage(200),
                UnSelectedImagePath = "Room/AddScenceFunction.png",
                Gravity = Gravity.Center
                Y = Application.GetRealHeight(302),
                Width = Application.GetMinRealAverage(717),
                Height = Application.GetMinRealAverage(478),
                Gravity = Gravity.CenterHorizontal,
                UnSelectedImagePath = "Item/NoBindGW.png"
            };
            functionSceneBodyView.AddChidren(addGatewayBtn);
            addGatewayBtn.MouseUpEventHandler += GoToAddGateWay;
            AddChidren(bg);
            var noGatewayTip = new Button()
            var tip = new Button
            {
                Y = addGatewayBtn.Bottom,
                Height = Application.GetRealHeight(150),
                TextID = R.MyInternationalizationString.NoGateway,
                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
                TextAlignment = TextAlignment.Center,
                Y = Application.GetRealHeight(815),
                Width = Application.GetMinRealAverage(717),
                Height = Application.GetMinRealAverage(58),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.NewAccountNeedBingGW,
                TextColor = ZigbeeColor.Current.GXCTextGrayColor
            };
            AddChidren(tip);
            var addBG = new Button
            {
                Y = Application.GetRealHeight(1048),
                Height = Application.GetMinRealAverage(366),
                Width = Application.GetMinRealAverage(971),
                UnSelectedImagePath = "Item/VirtualFrame.png",
                Gravity = Gravity.CenterHorizontal
            };
            functionSceneBodyView.AddChidren(noGatewayTip);
            AddChidren(addBG);
            var addGatewayBtn = new Button()
            {
                Y = Application.GetRealHeight(1143),
                Height = Application.GetMinRealAverage(89),
                Width = Application.GetMinRealAverage(89),
                UnSelectedImagePath = "Item/Add_GW.png",
                Gravity = Gravity.CenterHorizontal
            };
            AddChidren(addGatewayBtn);
            addGatewayBtn.MouseUpEventHandler += GoToAddGateWay;
            var addTip = new Button
            {
                Y = Application.GetRealHeight(1256),
                Width = Application.GetMinRealAverage(717),
                Height = Application.GetMinRealAverage(58),
                Gravity = Gravity.CenterHorizontal,
                TextID = R.MyInternationalizationString.AddSmartGW,
                TextColor = ZigbeeColor.Current.GXCTextBlackColor
            };
            AddChidren(addTip);
            addTip.MouseUpEventHandler += GoToAddGateWay;
        }
        /// <summary>
@@ -1095,8 +1159,8 @@
        /// <param name="mouseEventArgs">The ${ParameterType} instance containing the event data.</param>
        private void GoToAddGateWay(object sender, MouseEventArgs mouseEventArgs)
        {
            var selectNewGateWayForm = new UserCenter.GatewayAdd.NewGateWaySelectForm();
            selectNewGateWayForm.AddForm();
            UserCenter.GatewayAdd.NewGateWaySelectForm selectNewGateWayForm = new UserCenter.GatewayAdd.NewGateWaySelectForm { };
            selectNewGateWayForm.AddForm(selectNewGateWayForm);
        }
        #endregion
@@ -1123,8 +1187,6 @@
        /// 显示功能
        /// </summary>
        private void ShowFunction()
        {
            if (CanBindGateway() == false)
            {
                //选择功能--直接从房间的devicelist中获取
                var deviceList = Room.CurrentRoom.DeviceUIList;
@@ -1264,6 +1326,16 @@
                                IsMoreLines = true
                            };
                            deviceItemFL.AddChidren(deviceName);
                        var closeBtnBG = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = deviceName.Right,
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical,
                        };
                        deviceItemFL.AddChidren(closeBtnBG);
                            var closeBtn = new Device.CommonForm.SelectedStatuButton()
                            {
                                X = Application.GetRealWidth(50) + deviceName.Right,
@@ -1275,6 +1347,15 @@
                                //Visible=false
                            };
                            deviceItemFL.AddChidren(closeBtn);
                        var stopBtnBG = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = Application.GetRealWidth(120) + closeBtn.Right,
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical,
                        };
                        deviceItemFL.AddChidren(stopBtnBG);
                            var stopBtn = new Device.CommonForm.SelectedStatuButton()
                            {
                                X = Application.GetRealWidth(120) + closeBtn.Right,
@@ -1286,6 +1367,15 @@
                                //Visible=false
                            };
                            deviceItemFL.AddChidren(stopBtn);
                        var openBtnBG = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = Application.GetRealWidth(20) + stopBtn.Right,
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical,
                        };
                        deviceItemFL.AddChidren(openBtnBG);
                            var openBtn = new Device.CommonForm.SelectedStatuButton()
                            {
                                X = Application.GetRealWidth(120) + stopBtn.Right,
@@ -1296,7 +1386,6 @@
                                SelectedImagePath = "WindowCovering/RollerShadeOpenSelected.png",
                                //Visible=false
                            };
                            deviceItemFL.AddChidren(openBtn);
                            var collectionBtn = new Button()
                            {
@@ -1333,6 +1422,50 @@
                                deviceRowLayout.AddRightView(deleteBtn);
                            }
                        if (rollerShade.WcdType == -1)
                        {
                            CommonPage.Loading.Start();
                            new System.Threading.Thread(() =>
                            {
                                ZigBee.Device.Rollershade.ReadWcdTypeAction(rollerShade, () =>
                                {
                                    Application.RunOnMainThread(() =>
                                    {
                                        if (rollerShade.WcdType == 0)
                                        {
                                            closeBtn.UnSelectedImagePath = "WindowCovering/RollerShadeDown.png";
                                            closeBtn.SelectedImagePath = "WindowCovering/RollerShadeDownSelected.png";
                                            openBtn.UnSelectedImagePath = "WindowCovering/RollerShadeUp.png";
                                            openBtn.SelectedImagePath = "WindowCovering/RollerShadeUpSelected.png";
                                        }
                                        else
                                        {
                                            closeBtn.UnSelectedImagePath = "WindowCovering/RollerShadeClose.png";
                                            closeBtn.SelectedImagePath = "WindowCovering/RollerShadeCloseSelected.png";
                                            openBtn.UnSelectedImagePath = "WindowCovering/RollerShadeOpen.png";
                                            openBtn.SelectedImagePath = "WindowCovering/RollerShadeOpenSelected.png";
                                        }
                                        CommonPage.Loading.Hide();
                                    });
                                });
                            })
                            { IsBackground = true }.Start();
                        }
                        else if (rollerShade.WcdType == 0)
                        {
                            closeBtn.UnSelectedImagePath = "WindowCovering/RollerShadeDown.png";
                            closeBtn.SelectedImagePath = "WindowCovering/RollerShadeDownSelected.png";
                            openBtn.UnSelectedImagePath = "WindowCovering/RollerShadeUp.png";
                            openBtn.SelectedImagePath = "WindowCovering/RollerShadeUpSelected.png";
                        }
                        else
                        {
                            closeBtn.UnSelectedImagePath = "WindowCovering/RollerShadeClose.png";
                            closeBtn.SelectedImagePath = "WindowCovering/RollerShadeCloseSelected.png";
                            openBtn.UnSelectedImagePath = "WindowCovering/RollerShadeOpen.png";
                            openBtn.SelectedImagePath = "WindowCovering/RollerShadeOpenSelected.png";
                        }
                            EventHandler<MouseEventArgs> curtainHandler = (sender, e) =>
                            {
@@ -1344,7 +1477,7 @@
                                curtain.Show(device, Room.CurrentRoom);
                            };
                            deviceItemFL.MouseUpEventHandler += curtainHandler;
                            deviceItemFL.MouseLongEventHandler += curtainHandler;
                        //deviceItemFL.MouseLongEventHandler += curtainHandler;
                            deviceIMG.MouseUpEventHandler += curtainHandler;
                            deviceName.MouseUpEventHandler += curtainHandler;
@@ -1556,6 +1689,15 @@
                            };
                            //***先隐藏******
                            //deviceItemFL.AddChidren(collectionBtn);
                        var switchBtnBG = new Button
                        {
                            X = deviceItemFL.Right - Application.GetRealWidth(250),
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical
                        };
                        deviceItemFL.AddChidren(switchBtnBG);
                            var switchBtn = new Button
                            {
                                X = deviceItemFL.Right - Application.GetRealWidth(200),
@@ -1653,7 +1795,7 @@
                                lightControl.action = RefreshBodyView;
                                lightControl.Show(device, Room.CurrentRoom);
                            };
                            deviceItemFL.MouseLongEventHandler += lightHandler;
                        //deviceItemFL.MouseLongEventHandler += lightHandler;
                            deviceItemFL.MouseUpEventHandler += lightHandler;
                            deviceName.MouseUpEventHandler += lightHandler;
                            deviceIMG.MouseUpEventHandler += lightHandler;
@@ -1780,6 +1922,14 @@
                            };
                            //***先隐藏******
                            //deviceItemFL.AddChidren(collectionBtn);
                        var switchBtnBG = new Button
                        {
                            X = deviceItemFL.Right - Application.GetRealWidth(250),
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical
                        };
                        deviceItemFL.AddChidren(switchBtnBG);
                            var switchBtn = new Button
                            {
                                X = deviceItemFL.Right - Application.GetRealWidth(200),
@@ -1876,7 +2026,7 @@
                                airSwitchControl.action = RefreshBodyView;
                                airSwitchControl.Show(device, Room.CurrentRoom);
                            };
                            deviceItemFL.MouseLongEventHandler += airSwitchHandler;
                        //deviceItemFL.MouseLongEventHandler += airSwitchHandler;
                            deviceItemFL.MouseUpEventHandler += airSwitchHandler;
                            deviceName.MouseUpEventHandler += airSwitchHandler;
                            deviceIMG.MouseUpEventHandler += airSwitchHandler;
@@ -1927,11 +2077,12 @@
                                ReadStatus(ac, () =>
                                {
                                    ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
                                    ac.ReadFanMode();
                                    ac.ReadSystemMode();
                                    ac.ReadLocalTemperature();
                                    ac.ReadCoolingSetpoint();
                                    ac.ReadHeatingSetpoint();
                                ac.ReadAutoSetpoint();
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                });
                            }
                            else
@@ -1940,11 +2091,12 @@
                                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();
                                ac.ReadAutoSetpoint();
                                ac.ReadFanMode();
                                ac.ReadSystemMode();
                                }
                            }
@@ -2012,6 +2164,15 @@
                            //deviceItemFL.AddChidren(collectionBtn);
                            //减
                        var reduceBtnBG = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = deviceName.Right,
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical,
                        };
                        deviceItemFL.AddChidren(reduceBtnBG);
                            var reduceBtn = new Device.CommonForm.SelectedStatuButton()
                            {
                                X = Application.GetRealWidth(30) + deviceName.Right,
@@ -2043,24 +2204,50 @@
                                    return;
                                }
                                //cool
                                if (ac.currentSystemMode == 3)
                                if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
                                {
                                if (ac.currentCoolingSetpoint <= ACControlBase.Temperature_Low)
                                {
                                    return;
                                }
                                    ac.currentCoolingSetpoint -= 1;
                                    ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint);
                                ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint * 100);
                                    currentTemperatureBtn.Text = $"{ac.currentCoolingSetpoint} °C";
                                }
                                //heat
                                else if (ac.currentSystemMode == 4)
                                {
                                if (ac.currentHeatingSetpoint <= ACControlBase.Temperature_Low)
                                {
                                    return;
                                }
                                    ac.currentHeatingSetpoint -= 1;
                                    ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint);
                                ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint * 100);
                                    currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} °C";
                            }
                            else if (ac.currentSystemMode == 1)
                            {
                                if (ac.currentAutoSetpoint <= ACControlBase.Temperature_Low)
                                {
                                    return;
                                }
                                ac.currentAutoSetpoint -= 1;
                                ac.SetAutoTemperatureAsync(ac.currentAutoSetpoint * 100);
                                currentTemperatureBtn.Text = $"{ac.currentAutoSetpoint} °C";
                                }
                                //auto
                                //dry
                                //currentTemperatureBtn.Text = $"{Device.AC.ACControlBase.GetCurrentModeTemperature(ac)} °C";
                            };
                        var addBtnBG = new Device.CommonForm.SelectedStatuButton()
                        {
                            X = currentTemperatureBtn.Right,
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical
                        };
                        deviceItemFL.AddChidren(addBtnBG);
                            var addBtn = new Device.CommonForm.SelectedStatuButton()
                            {
@@ -2081,25 +2268,50 @@
                                    return;
                                }
                                //cool
                                if (ac.currentSystemMode == 3)
                                if (ac.currentSystemMode == 3 || ac.currentSystemMode == 8)
                                {
                                if (ac.currentCoolingSetpoint >= ACControlBase.Temperature_High)
                                {
                                    return;
                                }
                                    ac.currentCoolingSetpoint += 1;
                                    ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint);
                                ac.SetCoolingTemperatureAsync(ac.currentCoolingSetpoint * 100);
                                    currentTemperatureBtn.Text = $"{ac.currentCoolingSetpoint} °C";
                                }
                                //heat
                                else if (ac.currentSystemMode == 4)
                                {
                                if (ac.currentHeatingSetpoint >= ACControlBase.Temperature_High)
                                {
                                    return;
                                }
                                    ac.currentHeatingSetpoint += 1;
                                    ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint);
                                ac.SetHeatingTemperatureAsync(ac.currentHeatingSetpoint * 100);
                                    currentTemperatureBtn.Text = $"{ac.currentHeatingSetpoint} °C";
                                }
                                //auto
                                //dry
                            else if (ac.currentSystemMode == 1)
                            {
                                if (ac.currentAutoSetpoint >= ACControlBase.Temperature_High)
                                {
                                    return;
                                }
                                ac.currentAutoSetpoint += 1;
                                ac.SetAutoTemperatureAsync(ac.currentAutoSetpoint * 100);
                                currentTemperatureBtn.Text = $"{ac.currentAutoSetpoint} °C";
                            }
                            };
                        var switchBtnBG = new Button
                        {
                            X = deviceItemFL.Right - Application.GetRealWidth(250),
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical
                        };
                        deviceItemFL.AddChidren(switchBtnBG);
                            var switchBtn = new Button
                            {
                                X = deviceItemFL.Right - Application.GetRealWidth(200),
@@ -2196,7 +2408,7 @@
                                acControl.action = RefreshBodyView;
                                acControl.Show(device, Room.CurrentRoom);
                            };
                            deviceItemFL.MouseLongEventHandler += acHandler;
                        //deviceItemFL.MouseLongEventHandler += acHandler;
                            deviceItemFL.MouseUpEventHandler += acHandler;
                            deviceName.MouseUpEventHandler += acHandler;
                            deviceIMG.MouseUpEventHandler += acHandler;
@@ -2315,6 +2527,14 @@
                            };
                            //***先隐藏******
                            //deviceItemFL.AddChidren(collectionBtn);
                        var switchBtnBG = new Button
                        {
                            X = deviceItemFL.Right - Application.GetRealWidth(250),
                            Width = Application.GetMinRealAverage(250),
                            Height = Application.GetMinRealAverage(250),
                            Gravity = Gravity.CenterVertical
                        };
                        deviceItemFL.AddChidren(switchBtnBG);
                            var switchBtn = new Button
                            {
                                X = deviceItemFL.Right - Application.GetRealWidth(200),
@@ -2411,7 +2631,7 @@
                                dimmableLightControl.action = RefreshBodyView;
                                dimmableLightControl.Show(device, Room.CurrentRoom);
                            };
                            deviceItemFL.MouseLongEventHandler += dimmableLightHandler;
                        //deviceItemFL.MouseLongEventHandler += dimmableLightHandler;
                           deviceItemFL.MouseUpEventHandler += dimmableLightHandler;
                           deviceName.MouseUpEventHandler += dimmableLightHandler;
                            deviceIMG.MouseUpEventHandler += dimmableLightHandler;
@@ -2454,11 +2674,7 @@
                        }
                    }
                }
            }
            else
            {
                ShowNoGatewayTip();
            }
        }
        #endregion
@@ -2485,8 +2701,6 @@
        /// 显示场景
        /// </summary>
        private void ShowScene()
        {
            if (CanBindGateway() == false)
            {
                //选择场景
                var sceneList = Room.CurrentRoom.SceneUIList;
@@ -2649,11 +2863,7 @@
                        deleteBtn.MouseUpEventHandler += delEvent;
                    }
                }
            }
            else
            {
                ShowNoGatewayTip();
            }
        }
        #endregion
@@ -2671,6 +2881,7 @@
                new System.Threading.Thread(async () =>
                 {
                     Config.Instance.HomeId = home.Id;
                     Config.Instance.Home = House.GetHouseByFilePath(home.FileName);
                     Global.CreateHomeDirectory(home.Id);
                     Config.Instance.Save();
                     //刷新个人中心的内存及线程