From 18b93d511dc764b469d7c4a7e755f7274f89cdb4 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期一, 27 四月 2020 17:55:14 +0800
Subject: [PATCH] 2020-4-27-1

---
 ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs | 1951 ++++++++++++++++++++++++++++++----------------------------
 1 files changed, 1,013 insertions(+), 938 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
old mode 100644
new mode 100755
index fd06494..a28b690
--- a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
@@ -1,938 +1,1013 @@
-锘縰sing System;
-using System.Collections.Generic;
-using Shared.Common;
-using Shared.Phone.UserView;
-using Shared.R;
-using Shared.Phone.Device.CommonForm;
-using Shared.Phone.UserCenter;
-using ZigBee.Device;
-
-namespace Shared.Phone.Category
-{
-    /// <summary>
-    /// 鍒嗙被鐨勪富鐣岄潰
-    /// </summary>
-    public class CategoryMainForm : EditorCommonForm
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// The instance.
-        /// </summary>
-        public static CategoryMainForm instance;
-        /// <summary>
-        /// 鍦烘櫙鍔熻兘涓儴鑳屾櫙bodyView(楂樺害涓鸿澶囪彍鍗曠殑閭d釜鐧借壊鑳屾櫙鐨勪笂閮ㄥ埌灞忓箷搴曢儴)
-        /// </summary>
-        public FrameLayout functionSceneBodyView;
-        /// <summary>
-        /// 涓儴鑳屾櫙bodyView(楂樺害涓哄満鏅姛鑳藉垏鎹㈡帶浠剁殑搴曢儴鍒板睆骞曞簳閮�)
-        /// </summary>
-        public FrameLayout functionSceneAutoBodyView;
-        /// <summary>
-        /// 鍙充笂瑙掓坊鍔犳寜閽�
-        /// </summary>
-        private IconViewControl btnTopRightAdd = null;
-        /// <summary>
-        /// 妤煎眰鎺т欢
-        /// </summary>
-        private NormalViewControl btnFloorName = null;
-        /// <summary>
-        /// 妤煎眰鍥炬爣鎺т欢
-        /// </summary>
-        private IconViewControl btnFloorIcon = null;
-        /// <summary>
-        /// 璁惧琛屾帶浠�
-        /// </summary>
-        private Dictionary<string, Controls.DeviceRowCommon> dicDeviceRowControl = new Dictionary<string, Controls.DeviceRowCommon>();
-
-        #endregion
-
-        #region 鈻� 鍒濆鍖朹____________________________
-
-        /// <summary>
-        /// 鏋勯�犳柟娉�
-        /// </summary>
-        public CategoryMainForm()
-        {
-            BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
-            instance = this;
-        }
-
-        /// <summary>
-        /// 鏄剧ず鐣岄潰--榛樿鍦烘櫙鐣岄潰
-        /// </summary>
-        public void ShowForm()
-        {
-            //鍏堟竻闄ゅ惂
-            this.RemoveAll();
-            //鍒濆鍖栧ご閮ㄦ帶浠�
-            this.InitTopControl();
-            //鍒濆鍖栦腑闂存帶浠�
-            this.InitMidControls();
-            //娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠�
-            this.AddNormalDeviceReportEvent();
-            //娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
-            this.AddSensorDeviceReportEvent();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栧ご閮ㄦ帶浠�
-        /// </summary>
-        private void InitTopControl()
-        {
-            //澶撮儴FrameLayout
-            this.topFrameLayout = new FrameLayout();
-            topFrameLayout.Y = Application.GetRealHeight(104);
-            topFrameLayout.Height = Application.GetRealHeight(127);
-            topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
-            this.AddChidren(topFrameLayout);
-            //鏍囬鍒嗙被
-            var btnTitle = new NormalViewControl(300, 95, true);
-            btnTitle.X = ControlCommonResourse.XXLeft;
-            btnTitle.Gravity = Gravity.CenterVertical;
-            btnTitle.TextID = R.MyInternationalizationString.Category;
-            btnTitle.TextSize = 24;
-            btnTitle.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
-            btnTitle.IsBold = true;
-            topFrameLayout.AddChidren(btnTitle);
-
-            //鍙充笂瑙掓坊鍔犳寜閽�
-            this.btnTopRightAdd = new IconViewControl(104);
-            btnTopRightAdd.X = Application.GetRealWidth(953);
-            btnTopRightAdd.Gravity = Gravity.CenterVertical;
-            btnTopRightAdd.UnSelectedImagePath = "Item/Add_Category.png";
-            topFrameLayout.AddChidren(btnTopRightAdd);
-            btnTopRightAdd.ButtonClickEvent += (sender, e) =>
-            {
-                if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
-                {
-                    //娣诲姞鍦烘櫙
-                    Add_Scene();
-                }
-                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
-                {
-                    //娣诲姞鑷姩鍖�
-                    Add_Automation();
-                }
-            };
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦腑闂存帶浠�
-        /// </summary>
-        private void InitMidControls()
-        {
-            //搴旇鏄痓ody鍚�
-            this.bodyFrameLayout = new FrameLayout();
-            bodyFrameLayout.Y = topFrameLayout.Bottom;
-            bodyFrameLayout.Height = Application.GetRealHeight(1549);
-            bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
-            this.AddChidren(bodyFrameLayout);
-
-            //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢鐨勫鍣�
-            var frameSwitchBack = new FrameLayout();
-            frameSwitchBack.Height = Application.GetRealHeight(127);
-            bodyFrameLayout.AddChidren(frameSwitchBack);
-
-            //鎷ユ湁妤煎眰鏃�
-            this.btnFloorName = null;
-            this.btnFloorIcon = null;
-            if (Config.Instance.Home.FloorDics.Count > 0)
-            {
-                //妤煎眰鍚�
-                this.btnFloorName = new NormalViewControl(200, 69, true);
-                btnFloorName.X = frameSwitchBack.Width - Application.GetRealWidth(200 + 120);
-                btnFloorName.Y = Application.GetRealHeight(17);
-                btnFloorName.TextAlignment = TextAlignment.CenterRight;
-                btnFloorName.IsBold = true;
-                btnFloorName.Text = HdlResidenceLogic.Current.GetFloorNameById(Config.Instance.Home.CurrentFloorId);
-                frameSwitchBack.AddChidren(btnFloorName);
-                btnFloorName.ButtonClickEvent += (sender, e) =>
-                {
-                    var floors = new Device.Category.SelectFloor();
-                    AddChidren(floors);
-                    floors.Init(580, 330, Direction.Right);
-                    floors.changeFloor = true;
-                    floors.FloorAction += (floorId) =>
-                    {
-                        btnFloorName.Text = Config.Instance.Home.GetFloorNameById(floorId);
-                        HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
-                        //鍒锋柊bodyView
-                        this.RefreshBodyView();
-                    };
-                };
-                //妤煎眰鍥炬爣
-                this.btnFloorIcon = new IconViewControl(69);
-                btnFloorIcon.X = Application.GetRealWidth(950);
-                btnFloorIcon.Y = btnFloorName.Y;
-                btnFloorIcon.UnSelectedImagePath = "Item/Drop_Down.png";
-                frameSwitchBack.AddChidren(btnFloorIcon);
-                btnFloorIcon.ButtonClickEvent += (sender, e) =>
-                {
-                    btnFloorName.ButtonClickEvent?.Invoke(sender, e);
-                };
-            }
-
-            //鐩墠涓嶇煡閬撻儹闆煄鐨勮繖涓叿浣撴斁鍦ㄥ摢涓殑浣嶇疆
-            this.functionSceneAutoBodyView = new FrameLayout();
-            functionSceneAutoBodyView.Y = frameSwitchBack.Bottom;
-            functionSceneAutoBodyView.Height = Application.GetRealHeight(1423);
-            bodyFrameLayout.AddChidren(functionSceneAutoBodyView);
-
-            //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢
-            var switchContr = new SceneFunctionSwitchControl();
-            switchContr.Width = Application.GetRealWidth(650);
-            switchContr.Gravity = Gravity.CenterVertical;
-            frameSwitchBack.AddChidren(switchContr);
-            var listTitle = new List<string>();
-            listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence));
-            listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction));
-            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
-            {
-                //鎴愬憳娌℃湁鑷姩鍖�
-                listTitle.Add(Language.StringByID(R.MyInternationalizationString.Automation));
-            }
-            //璁剧疆鍒濆鍊�
-            switchContr.SetDefultIndex(UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex);
-            //閫夋嫨浜嬩欢
-            switchContr.SelectTabEvent += (selectIndex) =>
-            {
-              
-                UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex = selectIndex;
-                if (selectIndex == 2)
-                {
-                    Common.Logic.LogicDviceList.Clear();
-                    if (Common.Logic.LogicDviceList.Count == 0)
-                    {
-                        Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray());
-                    }
-                }
-                //鍒锋柊bodyView
-                this.RefreshBodyView();
-            };
-            //寮�濮嬪垵濮嬪寲
-            switchContr.InitControl(listTitle);
-        }
-
-        /// <summary>
-        /// 鍒锋柊bodyView
-        /// </summary>
-        public void RefreshBodyView()
-        {
-            this.functionSceneAutoBodyView.RemoveAll();
-
-            HdlThreadLogic.Current.RunMainInThread(() =>
-            {
-                bool floorVisible = true;
-                //鍦烘櫙
-                if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
-                {
-                    //鍒濆鍖栨埧闂磋彍鍗�
-                    this.InitRoomMenuControl();
-                    //鏄剧ず鍙充笂瑙掔殑鍔犲彿
-                    this.btnTopRightAdd.Visible = true;
-                }
-                //鍔熻兘
-                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
-                {
-                    //鍒濆鍖栨埧闂磋彍鍗�
-                    this.InitRoomMenuControl();
-                    //闅愯棌鍙充笂瑙掔殑鍔犲彿
-                    this.btnTopRightAdd.Visible = false;
-                }
-                //鑷姩鍖�
-                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
-                {
-                   
-                    this.ShowAutotion();
-                    //闅愯棌妤煎眰
-                    floorVisible = false;
-                    //鏄剧ず鍙充笂瑙掔殑鍔犲彿
-                    this.btnTopRightAdd.Visible = true;
-                }
-
-                //淇敼妤煎眰鐨勬樉绀烘晥鏋�
-                if (this.btnFloorName != null)
-                {
-                    this.btnFloorName.Visible = floorVisible;
-                    this.btnFloorIcon.Visible = floorVisible;
-                }
-            });
-        }
-
-        #endregion
-
-        #region 鈻� 鎴块棿鑿滃崟鎺т欢_______________________
-
-        /// <summary>
-        /// 鍒濆鍖栨埧闂磋彍鍗曟帶浠�
-        /// </summary>
-        private void InitRoomMenuControl()
-        {
-            //褰撳墠妤煎眰鐨勫叏閮ㄦ埧闂�
-            var lisrRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
-            //鎴块棿鑿滃崟鎺т欢
-            var roomSwitchContr = new RoomDeviceGroupMenuControl(lisrRoom);
-            roomSwitchContr.Y = Application.GetRealHeight(-55);
-            this.functionSceneAutoBodyView.AddChidren(roomSwitchContr);
-            //璁剧疆鍒濆鍊�
-            roomSwitchContr.SetDefultIndex(HdlRoomLogic.Current.CurrentRoom.Id);
-            //閫夋嫨浜嬩欢
-            roomSwitchContr.SelectRoomEvent += (selectRoom) =>
-            {
-                HdlRoomLogic.Current.CurrentRoom = selectRoom;
-                //鍦烘櫙
-                if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
-                {
-                    //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
-                    this.functionSceneBodyView.RemoveAll();
-                    HdlThreadLogic.Current.RunMainInThread(() =>
-                    {
-                        //鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
-                        this.RefreshSceneView(selectRoom);
-                    });
-                }
-                //鍔熻兘
-                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
-                {
-                    //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
-                    this.functionSceneBodyView.RemoveAll();
-                    HdlThreadLogic.Current.RunMainInThread(() =>
-                    {
-                        //鍒锋柊璁惧鍒嗘敮鎺т欢
-                        this.RefreshFunctionView(selectRoom);
-                    });
-                }
-            };
-
-            //鍔熻兘鍜屽満鏅痓odyView
-            this.functionSceneBodyView = new FrameLayout();
-            functionSceneBodyView.Y = roomSwitchContr.Bottom;
-            functionSceneBodyView.Height = functionSceneAutoBodyView.Height - roomSwitchContr.Bottom;
-            functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
-
-            //鎵ц鍒濆鍖� 
-            roomSwitchContr.InitControl();
-        }
-
-        #endregion
-
-        #region 鈻� 鍔熻兘鍒嗘敮___________________________
-
-        /// <summary>
-        /// 鍒锋柊鍔熻兘鍒嗘敮鎺т欢
-        /// </summary>
-        /// <param name="room"></param>
-        private void RefreshFunctionView(Common.Room room)
-        {
-            //鑾峰彇鍒嗙粍鍚庣殑璁惧
-            var dicGroupDevice = this.GetAllGroupDevice(room);
-            if (dicGroupDevice.Count == 0)
-            {
-                this.ShowNoFunctionTip();
-                return;
-            }
-
-            //璁惧鑿滃崟鐨勭櫧鑹茶儗鏅�
-            var functionBack1 = new FrameLayout();
-            functionBack1.X = ControlCommonResourse.XXLeft;
-            functionBack1.Height = Application.GetRealHeight(160);
-            functionBack1.Width = Application.GetRealWidth(1028);
-            functionBack1.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
-            functionSceneBodyView.AddChidren(functionBack1);
-            functionBack1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
-            var functionBack2 = new FrameLayout();
-            functionBack2.X = ControlCommonResourse.XXLeft;
-            functionBack2.Y = functionBack1.Bottom - Application.GetRealHeight(50);
-            functionBack2.Height = Application.GetRealHeight(279 - 160 + 50);
-            functionBack2.Width = Application.GetRealWidth(1028);
-            functionBack2.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
-            functionSceneBodyView.AddChidren(functionBack2);
-            functionBack2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
-
-            //璁惧鑿滃崟鐨勫乏鍙虫粦鍔ㄧ殑鎺т欢
-            var HorizontalView = new HorizontalScrolViewLayout();
-            HorizontalView.X = Application.GetRealWidth(CommonFormResouce.X_Left);
-            HorizontalView.Height = Application.GetRealHeight(279);
-            HorizontalView.Width = Application.GetRealWidth(1028);
-            functionSceneBodyView.AddChidren(HorizontalView);
-
-            //璁惧鐨勮儗鏅鍣�
-            var frameDeviceBack = new FrameLayout();
-            frameDeviceBack.X = ControlCommonResourse.XXLeft;
-            frameDeviceBack.Y = HorizontalView.Bottom + Application.GetRealHeight(35);
-            frameDeviceBack.BackgroundColor = UserCenterColor.Current.White;
-            frameDeviceBack.Width = bodyFrameLayout.Width;
-            frameDeviceBack.Height = functionSceneBodyView.Height - HorizontalView.Bottom - Application.GetRealHeight(35);
-            frameDeviceBack.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
-            functionSceneBodyView.AddChidren(frameDeviceBack);
-
-            //璁惧鍒楄〃鎺т欢
-            var listDeviceView = new VerticalListControl(35);
-            listDeviceView.Y = Application.GetRealHeight(11);
-            listDeviceView.Width = Application.GetRealWidth(1022);
-            listDeviceView.Height = frameDeviceBack.Height - Application.GetRealHeight(11);
-            listDeviceView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
-            frameDeviceBack.AddChidren(listDeviceView);
-
-            //涓婁竴娆¢�夋嫨鐨勮彍鍗�
-            MainPage.Controls.DeviceFunctionUnallocatedControl oldSelectContr = null;
-            DeviceRowInfo nowSelectDeviceInfo = null;
-            foreach (int Textid in dicGroupDevice.Keys)
-            {
-                var rowInfo = dicGroupDevice[Textid];
-
-                //璁惧绫诲瀷鐨勫鍣�
-                var devieFrame = new FrameLayout();
-                devieFrame.Width = Application.GetRealWidth(220);
-                HorizontalView.AddChidren(devieFrame);
-
-                //鑿滃崟鍥剧墖鎺т欢
-                var deviceObjContr = new MainPage.Controls.DeviceFunctionUnallocatedControl();
-                devieFrame.AddChidren(deviceObjContr);
-                deviceObjContr.InitControl(Language.StringByID(Textid), rowInfo.IconPath, rowInfo.IconPathSelected, rowInfo.listDeviceKeys);
-                deviceObjContr.ButtonClickEvent += (sender, e) =>
-                {
-                    //閫夋嫨鐨勬槸鍚屼竴涓笢瑗跨殑璇�,涓嶅鐞�
-                    if (nowSelectDeviceInfo.TextId != rowInfo.TextId)
-                    {
-                        //涓婁竴娆$殑鑿滃崟鍙栨秷,鏈鑿滃崟閫夋嫨
-                        oldSelectContr.SetSelectStatu(false);
-                        deviceObjContr.SetSelectStatu(true);
-                        oldSelectContr = deviceObjContr;
-
-                        nowSelectDeviceInfo = rowInfo;
-                        HdlThreadLogic.Current.RunMainInThread(() =>
-                        {
-                            //鍒濆鍖栬澶囧垪琛ㄦ帶浠�
-                            this.InitListDeviceControls(listDeviceView, rowInfo);
-                        });
-                    }
-                };
-
-                if (nowSelectDeviceInfo == null)
-                {
-                    //璁剧疆鍒濆閫夋嫨
-                    nowSelectDeviceInfo = rowInfo;
-                    //璁板綍鍒濆閫夋嫨鐨勮彍鍗曟帶浠�
-                    oldSelectContr = deviceObjContr;
-                    deviceObjContr.SetSelectStatu(true);
-                }
-            }
-            if (nowSelectDeviceInfo != null)
-            {
-                //鍒濆鍖栭粯璁ょ殑璁惧鍒楄〃鎺т欢
-                this.InitListDeviceControls(listDeviceView, nowSelectDeviceInfo);
-            }
-        }
-
-        /// <summary>
-        /// 鎻愮ず娌℃湁鍔熻兘
-        /// </summary>
-        private void ShowNoFunctionTip()
-        {
-            var noFunction = new Button()
-            {
-                Y = Application.GetRealHeight(320),
-                Width = Application.GetMinRealAverage(757),
-                Height = Application.GetMinRealAverage(435),
-                UnSelectedImagePath = "Item/NoFunction.png",
-                Gravity = Gravity.CenterHorizontal
-            };
-            functionSceneBodyView.AddChidren(noFunction);
-
-            var noFunctionTip = new Button()
-            {
-                Y = noFunction.Bottom + Application.GetRealHeight(32),
-                Height = Application.GetRealHeight(200),
-                Width = Application.GetRealWidth(700),
-                Gravity = Gravity.CenterHorizontal,
-                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}", "\r\n"),
-                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
-                TextAlignment = TextAlignment.Center,
-                IsMoreLines = true
-            };
-            functionSceneBodyView.AddChidren(noFunctionTip);
-        }
-
-        #endregion
-
-        #region 鈻� 鍒濆鍖栬澶囧垪琛ㄦ帶浠禵________________
-
-        /// <summary>
-        /// 鍒濆鍖栬澶囧垪琛ㄦ帶浠�
-        /// </summary>
-        /// <param name="listView"></param>
-        /// <param name="rowInfo"></param>
-        private void InitListDeviceControls(VerticalListControl listView, DeviceRowInfo rowInfo)
-        {
-            //鍏堟竻绌�
-            listView.RemoveAll();
-
-            var listDevice = new List<CommonDevice>();
-            foreach (var mainkeys in rowInfo.listDeviceKeys)
-            {
-                var device = LocalDevice.Current.GetDevice(mainkeys);
-                if (device != null)
-                {
-                    listDevice.Add(device);
-                }
-            }
-
-            HdlThreadLogic.Current.RunMain(() =>
-            {
-                var listContr = new List<Controls.DeviceRowCommon>();
-                foreach (var device in listDevice)
-                {
-                    Controls.DeviceRowCommon cardContr = null;
-                    //绐楀笜
-                    if (device.Type == DeviceType.WindowCoveringDevice)
-                    {
-                        cardContr = new Controls.DeviceCurtainRowControl(listView.rowSpace / 2);
-                    }
-                    //缁х數鍣�
-                    else if (device.Type == DeviceType.OnOffOutput)
-                    {
-                        cardContr = new Controls.DeviceRelayRowControl(listView.rowSpace / 2);
-                    }
-                    //绌烘皵寮�鍏�
-                    else if (device.Type == DeviceType.AirSwitch)
-                    {
-                        cardContr = new Controls.DeviceAirSwitchRowControl(listView.rowSpace / 2);
-                    }
-                    //绌鸿皟
-                    else if (device.Type == DeviceType.Thermostat)
-                    {
-                        cardContr = new Controls.DeviceAcRowControl(listView.rowSpace / 2);
-                    }
-                    //褰╃伅(璋冨厜鍣�)
-                    else if (device.Type == DeviceType.DimmableLight)
-                    {
-                        cardContr = new Controls.DeviceColorLightRowControl(listView.rowSpace / 2);
-                    }
-                    //浼犳劅鍣�
-                    else if (device.Type == DeviceType.IASZone)
-                    {
-                        cardContr = new Controls.DeviceSensorRowControl(listView.rowSpace / 2);
-                    }
-                    //娓╂箍搴�
-                    else if (device.Type == DeviceType.TemperatureSensor)
-                    {
-                        cardContr = new Controls.DeviceTemperatureRowControl(listView.rowSpace / 2);
-                    }
-                    //闂ㄩ攣
-                    else if (device.Type == DeviceType.DoorLock)
-                    {
-                        cardContr = new Controls.DeviceDoorLockRowControl(listView.rowSpace / 2);
-                    }
-                    //鏃犳硶璇嗗埆
-                    else
-                    {
-                        cardContr = new Controls.DeviceRowCommon(listView.rowSpace / 2);
-                        //娌℃湁鐘舵�佸姛鑳�
-                        cardContr.hadStatuFunction = false;
-                    }
-
-                    //鍒濆鍖栧崱鐗�
-                    listView.AddChidren(cardContr);
-                    cardContr.InitControl(device);
-                    //鎺т欢璁板綍鍒扮紦瀛樹腑
-                    this.dicDeviceRowControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr;
-                    //鍔犵紦瀛�,鐒跺悗鍙戝懡浠�
-                    listContr.Add(cardContr);
-                }
-                HdlThreadLogic.Current.RunThread(() =>
-                {
-                    for (int i = 0; i < listContr.Count; i++)
-                    {
-                        if (listView.Parent == null)
-                        {
-                            return;
-                        }
-                        System.Threading.Thread.Sleep(20);
-                        //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护
-                        listContr[i].SendStatuComand();
-                    }
-
-                }, ShowErrorMode.NO);
-            });
-        }
-
-        #endregion
-
-        #region 鈻� 鍦烘櫙鍒嗘敮___________________________
-
-        /// <summary>
-        /// 鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
-        /// </summary>
-        /// <param name="room"></param>
-        private void RefreshSceneView(Room room)
-        {
-            var listScene = new List<SceneUI>();
-            foreach (var sceneId in room.ListSceneId)
-            {
-                var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
-                if (scene != null)
-                {
-                    listScene.Add(scene);
-                }
-            }
-            if (listScene.Count == 0)
-            {
-                this.ShowNoSceneTip();
-                return;
-            }
-
-            var dicSceneContr = new Dictionary<int, SceneCategoryView>();
-            var listview = new VerticalListControl();
-            functionSceneBodyView.AddChidren(listview);
-            foreach (var scene in listScene)
-            {
-                //鍦烘櫙鍗$墖鎺т欢
-                var sceneView = new SceneCategoryView();
-                listview.AddChidren(sceneView);
-                sceneView.InitControl(scene, room);
-
-                dicSceneContr[scene.Id] = sceneView;
-            }
-            HdlThreadLogic.Current.RunThread(() =>
-            {
-                //鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
-                this.GetAllDelayScene(dicSceneContr, listview);
-            }, ShowErrorMode.NO);
-        }
-
-        /// <summary>
-        /// 鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
-        /// </summary>
-        /// <param name="dicSceneContr"></param>
-        private async void GetAllDelayScene(Dictionary<int, SceneCategoryView> dicSceneContr, VerticalListControl listview)
-        {
-            //璇诲彇鍏ㄩ儴鐨勫欢鏃舵椂闂�
-            var result = await Scene.CatDelaySceneAsync();
-            if (result == null || result.catDelaySceneResponseData == null ||
-                result.catDelaySceneResponseData.DelayScenesList.Count == 0)
-            {
-                //鍑洪敊涓嶉笩瀹�
-                return;
-            }
-
-            string hourText = Language.StringByID(R.MyInternationalizationString.Hour);
-            string minuText = Language.StringByID(R.MyInternationalizationString.Minute);
-            string secondText = Language.StringByID(R.MyInternationalizationString.Second);
-
-            foreach (var data in result.catDelaySceneResponseData.DelayScenesList)
-            {
-                if (dicSceneContr.ContainsKey(data.ScenesId) == false)
-                {
-                    //褰撳墠鐨勭晫闈㈡病鏈夋樉绀鸿繖涓満鏅�
-                    continue;
-                }
-                var seceneContr = dicSceneContr[data.ScenesId];
-                //淇濆瓨缂撳瓨鏃堕棿
-                seceneContr.scene.RemainTime = data.RemainTime;
-                int remainTime = data.RemainTime;
-                if (remainTime <= 0)
-                {
-                    continue;
-                }
-                HdlThreadLogic.Current.RunThread(() =>
-                {
-                    //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾)
-                    HdlSceneLogic.Current.StartDelayTimeThread(seceneContr.scene);
-                    while (remainTime > 0 && this.Parent != null)
-                    {
-                        System.Threading.Thread.Sleep(1000);
-                        Application.RunOnMainThread(() =>
-                        {
-                            seceneContr.SetTimeText(this.GetTimeString(remainTime, hourText, minuText, secondText));
-                        });
-                        remainTime--;
-                    }
-                    Application.RunOnMainThread(() =>
-                    {
-                        if (listview.Parent != null)
-                        {
-                            seceneContr.SetTimeImage();
-                            //寮�鍚疞oading鐗规晥
-                            seceneContr.StartLoadingApreal();
-                        }
-                    });
-                });
-            }
-        }
-
-        /// <summary>
-        /// 鏄剧ず娌℃湁鍦烘櫙
-        /// </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()
-            {
-                Y = noFunction.Bottom + Application.GetRealHeight(32),
-                Height = Application.GetRealHeight(200),
-                Width = Application.GetRealWidth(700),
-                Gravity = Gravity.CenterHorizontal,
-                Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}", "\r\n"),
-                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
-                TextAlignment = TextAlignment.Center,
-                IsMoreLines = true
-            };
-            functionSceneBodyView.AddChidren(noScenceTip);
-        }
-
-
-        #endregion
-
-        #region 鈻� 涓�鑸澶囩姸鎬佷笂鎶__________________
-
-        /// <summary>
-        /// 娣诲姞涓�鑸澶囩姸鎬佷笂鎶ヤ簨浠�
-        /// </summary>
-        private void AddNormalDeviceReportEvent()
-        {
-            //璁惧灞炴�т笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
-            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
-            {
-                HdlThreadLogic.Current.RunMain(() =>
-                {
-                    //澶勭悊涓�鑸澶囩殑涓婃姤鏁版嵁
-                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
-                    {
-                        //鍒锋柊鍗$墖淇℃伅
-                        var locadevice = LocalDevice.Current.GetDevice(mainKeys);
-                        this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
-                    }
-                }, ShowErrorMode.NO);
-            });
-
-            //璁惧鍦ㄧ嚎涓婃姤(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
-            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceOnline", ReceiveComandDiv.A璁惧鍦ㄧ嚎涓婃姤, (report) =>
-            {
-                HdlThreadLogic.Current.RunMain(() =>
-                {
-                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
-                    {
-                        //鍒锋柊鍗$墖鐘舵��
-                        this.dicDeviceRowControl[mainKeys].SetRowOnlineStatu(report.IsOnline == 1);
-                        return;
-                    }
-
-                }, ShowErrorMode.NO);
-            });
-
-            //璁惧鎺у埗鍙嶉涓婃姤
-            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceRespone", ReceiveComandDiv.A鑺傜偣鎺у埗鍙嶉, (report) =>
-            {
-                HdlThreadLogic.Current.RunMain(() =>
-                {
-                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
-                    {
-                        //璁惧鍗$墖
-                        var deviceCardContr = this.dicDeviceRowControl[mainKeys];
-                        //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
-                        deviceCardContr.SetHadGetResponeResultStatu();
-                    }
-
-                }, ShowErrorMode.NO);
-            });
-        }
-
-        #endregion
-
-        #region 鈻� 浼犳劅鍣ㄧ姸鎬佷笂鎶____________________
-
-        /// <summary>
-        /// 娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
-        /// </summary>
-        private void AddSensorDeviceReportEvent()
-        {
-            //浼犳劅鍣ㄤ笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
-            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (report) =>
-            {
-                HdlThreadLogic.Current.RunMain(() =>
-                {
-                    //澶勭悊浼犳劅鍣ㄤ笂鎶ユ暟鎹�
-                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
-                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
-                    {
-                        //鏈湴璁惧瀵硅薄
-                        var locadevice = LocalDevice.Current.GetDevice(mainKeys);
-                        //鍒锋柊鍗$墖淇℃伅
-                        this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
-                    }
-
-                }, ShowErrorMode.NO);
-            });
-        }
-
-        #endregion
-
-        #region 鈻� 鏁村悎璁惧___________________________
-
-        /// <summary>
-        /// 鑾峰彇鍒嗙粍鍚庣殑璁惧
-        /// </summary>
-        /// <returns></returns>
-        private Dictionary<int, DeviceRowInfo> GetAllGroupDevice(Common.Room room)
-        {
-            //鍏ㄩ儴鐨勮澶�
-            var listDevice = HdlRoomLogic.Current.GetRoomListDevice(room);
-            //鏍规嵁璁惧鎵�灞炵被鍨嬫帓搴�
-            listDevice = LocalDevice.Current.SortDeviceByBelongType(listDevice);
-            var dic = new Dictionary<int, DeviceRowInfo>();
-            foreach (var device in listDevice)
-            {
-                var typeInfo = LocalDevice.Current.GetDeviceBelongEnumInfo(device);
-                //鎸夋墍灞濱D鍒嗙粍
-                if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
-                {
-                    dic[typeInfo.BeloneTextId] = new DeviceRowInfo();
-                    string path1 = string.Empty;
-                    string path2 = string.Empty;
-                    //鑾峰彇鍥剧墖
-                    LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
-                    dic[typeInfo.BeloneTextId].IconPath = path1;
-                    dic[typeInfo.BeloneTextId].IconPathSelected = path2;
-                    dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
-                }
-                dic[typeInfo.BeloneTextId].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
-            }
-            return dic;
-        }
-
-        #endregion
-
-        #region 鈻� 鐣岄潰鍏抽棴___________________________
-
-        /// <summary>
-        /// 鐣岄潰鍏抽棴
-        /// </summary>
-        public override void CloseFormBefore()
-        {
-            //鎶婇潤鎬佸彉閲忕殑杩欎釜涓滆タ缃┖
-            instance = null;
-
-            base.CloseFormBefore();
-        }
-
-        #endregion
-
-        #region 鈻� 涓�鑸柟娉昣__________________________
-
-        /// <summary>
-        /// 鑾峰彇鏃堕棿鐨勭炕璇戞枃鏈�
-        /// </summary>
-        /// <param name="second"></param>
-        /// <param name="hourText">灏忔椂鐨勬枃鏈�</param>
-        /// <param name="minuText">鍒嗙殑鏂囨湰</param>
-        /// <param name="secondText">绉掔殑鏂囨湰</param>
-        /// <returns></returns>
-        private string GetTimeString(int second, string hourText, string minuText, string secondText)
-        {
-            string timeStr = string.Empty;
-            int hour = second / 3600;
-            int minu = second % 3600 / 60;
-            int sec = second % 60;
-            if (hour > 0)
-            {
-                timeStr += hour + hourText;
-            }
-            if (minu > 0)
-            {
-                timeStr += minu + minuText;
-            }
-            if (sec > 0)
-            {
-                timeStr += sec + secondText;
-            }
-            return timeStr;
-        }
-
-        /// <summary>
-        /// 娣诲姞鍦烘櫙(閮洩鍩庣殑浠g爜)
-        /// </summary>
-        private void Add_Scene()
-        {
-            var scene = new Device.Category.CategoryAddScene();
-            UserView.HomePage.Instance.AddChidren(scene);
-            UserView.HomePage.Instance.PageIndex += 1;
-            scene.Show();
-            scene.AddAction = () =>
-            {
-                //鍒锋柊bodyView
-                this.RefreshBodyView();
-            };
-        }
-
-        /// <summary>
-        /// 娣诲姞鑷姩鍖�(閮洩鍩庣殑浠g爜)
-        /// </summary>
-        private void Add_Automation()
-        {
-            Shared.Phone.Device.Logic.SkipView.SkipAddLogic(0);
-            ////new涓�涓柊閫昏緫瀵硅薄锛�
-            //Common.Logic.CurrentLogic = new Common.Logic();
-            //Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑
-            //Common.Logic.CurrentLogic.LogicName = Language.StringByID(MyInternationalizationString.automation1);
-            //var addLogicPage = new Shared.Phone.Device.Logic.AddLogicPage();
-            //UserView.HomePage.Instance.AddChidren(addLogicPage);
-            //UserView.HomePage.Instance.PageIndex += 1;
-            //addLogicPage.Show();
-        }
-
-        #endregion
-
-        #region 鈻� 缁撴瀯浣揰____________________________
-
-        /// <summary>
-        /// 璁惧琛屼俊鎭�
-        /// </summary>
-        private class DeviceRowInfo
-        {
-            /// <summary>
-            /// 鏂囨湰ID,鐩墠鐢ㄦ潵鍋氫富閿�
-            /// </summary>
-            public int TextId = 0;
-            /// <summary>
-            /// 鍥炬爣
-            /// </summary>
-            public string IconPath = string.Empty;
-            /// <summary>
-            /// 鍥炬爣
-            /// </summary>
-            public string IconPathSelected = string.Empty;
-            /// <summary>
-            /// 璁惧鍥炶矾涓婚敭
-            /// </summary>
-            public List<string> listDeviceKeys = new List<string>();
-        }
-
-        #endregion
-
-        #region 鈼� 鑷姩鍖朹_________________________
-
-        /// <summary>
-        /// 鑷姩鍖栧姛鑳戒唬鐮佸叆鍙�
-        /// </summary>
-        private void ShowAutotion()
-        {
-            Shared.Phone.Device.Logic.SkipView.ShowAutotionView(functionSceneAutoBodyView);
-        }
-
-            #endregion
-        }
-}
+锘縰sing System;
+using System.Collections.Generic;
+using Shared.Common;
+using Shared.Phone.UserView;
+using Shared.R;
+using Shared.Phone.Device.CommonForm;
+using Shared.Phone.UserCenter;
+using ZigBee.Device;
+
+namespace Shared.Phone.Category
+{
+    /// <summary>
+    /// 鍒嗙被鐨勪富鐣岄潰
+    /// </summary>
+    public class CategoryMainForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// The instance.
+        /// </summary>
+        public static CategoryMainForm instance;
+        /// <summary>
+        /// 鍦烘櫙鍔熻兘涓儴鑳屾櫙bodyView(楂樺害涓鸿澶囪彍鍗曠殑閭d釜鐧借壊鑳屾櫙鐨勪笂閮ㄥ埌灞忓箷搴曢儴)
+        /// </summary>
+        public FrameLayout functionSceneBodyView;
+        /// <summary>
+        /// 涓儴鑳屾櫙bodyView(楂樺害涓哄満鏅姛鑳藉垏鎹㈡帶浠剁殑搴曢儴鍒板睆骞曞簳閮�)
+        /// </summary>
+        public FrameLayout functionSceneAutoBodyView;
+        /// <summary>
+        /// 鍙充笂瑙掓坊鍔犳寜閽�
+        /// </summary>
+        private IconViewControl btnTopRightAdd = null;
+        /// <summary>
+        /// 妤煎眰鎺т欢
+        /// </summary>
+        private NormalViewControl btnFloorName = null;
+        /// <summary>
+        /// 妤煎眰鍥炬爣鎺т欢
+        /// </summary>
+        private IconViewControl btnFloorIcon = null;
+        /// <summary>
+        /// 璁惧琛屾帶浠�
+        /// </summary>
+        private Dictionary<string, Controls.DeviceRowCommon> dicDeviceRowControl = new Dictionary<string, Controls.DeviceRowCommon>();
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+
+        /// <summary>
+        /// 鏋勯�犳柟娉�
+        /// </summary>
+        public CategoryMainForm()
+        {
+            BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+            instance = this;
+        }
+
+        /// <summary>
+        /// 鏄剧ず鐣岄潰--榛樿鍦烘櫙鐣岄潰
+        /// </summary>
+        public void ShowForm()
+        {
+            //鍏堟竻闄ゅ惂
+            this.RemoveAll();
+            //鍒濆鍖栧ご閮ㄦ帶浠�
+            this.InitTopControl();
+            //鍒濆鍖栦腑闂存帶浠�
+            this.InitMidControls();
+            //娣诲姞璁惧鐘舵�佷笂鎶ヤ簨浠�
+            this.AddNormalDeviceReportEvent();
+            //娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
+            this.AddSensorDeviceReportEvent();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧ご閮ㄦ帶浠�
+        /// </summary>
+        private void InitTopControl()
+        {
+            //澶撮儴FrameLayout
+            this.topFrameLayout = new FrameLayout();
+            topFrameLayout.Y = Application.GetRealHeight(104);
+            topFrameLayout.Height = Application.GetRealHeight(127);
+            topFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+            this.AddChidren(topFrameLayout);
+            //鏍囬鍒嗙被
+            var btnTitle = new NormalViewControl(300, 95, true);
+            btnTitle.X = ControlCommonResourse.XXLeft;
+            btnTitle.Gravity = Gravity.CenterVertical;
+            btnTitle.TextID = R.MyInternationalizationString.Category;
+            btnTitle.TextSize = 24;
+            btnTitle.TextColor = ZigbeeColor.Current.GXCTextDeepBlackColor;
+            btnTitle.IsBold = true;
+            topFrameLayout.AddChidren(btnTitle);
+
+            //鍙充笂瑙掓坊鍔犳寜閽�
+            this.btnTopRightAdd = new IconViewControl(104);
+            btnTopRightAdd.X = Application.GetRealWidth(953);
+            btnTopRightAdd.Gravity = Gravity.CenterVertical;
+            btnTopRightAdd.UnSelectedImagePath = "Item/Add_Category.png";
+            topFrameLayout.AddChidren(btnTopRightAdd);
+            btnTopRightAdd.ButtonClickEvent += (sender, e) =>
+            {
+                if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
+                {
+                    //娣诲姞鍦烘櫙
+                    var form = new AddOrEditorSceneForm();
+                    form.AddForm(new object[] { null });
+                    form.SceneChangedEvent += (scene, roomId) =>
+                    {
+                        //鍒锋柊bodyView
+                        this.RefreshBodyView();
+                    };
+                }
+                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
+                {
+                    //娣诲姞鑷姩鍖�
+                    Device.Logic.SkipView.SkipAddLogic(0);
+                }
+            };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栦腑闂存帶浠�
+        /// </summary>
+        private void InitMidControls()
+        {
+            //搴旇鏄痓ody鍚�
+            this.bodyFrameLayout = new FrameLayout();
+            bodyFrameLayout.Y = topFrameLayout.Bottom;
+            bodyFrameLayout.Height = Application.GetRealHeight(1549);
+            bodyFrameLayout.BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
+            this.AddChidren(bodyFrameLayout);
+
+            //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢鐨勫鍣�
+            var frameSwitchBack = new FrameLayout();
+            frameSwitchBack.Height = Application.GetRealHeight(127);
+            bodyFrameLayout.AddChidren(frameSwitchBack);
+
+            //鎷ユ湁妤煎眰鏃�
+            this.btnFloorName = null;
+            this.btnFloorIcon = null;
+            if (Config.Instance.Home.FloorDics.Count > 0)
+            {
+                //妤煎眰鍚�
+                this.btnFloorName = new NormalViewControl(200, 69, true);
+                btnFloorName.X = frameSwitchBack.Width - Application.GetRealWidth(200 + 120);
+                btnFloorName.Y = Application.GetRealHeight(17);
+                btnFloorName.TextAlignment = TextAlignment.CenterRight;
+                btnFloorName.IsBold = true;
+                btnFloorName.Text = HdlResidenceLogic.Current.GetFloorNameById(Config.Instance.Home.CurrentFloorId);
+                frameSwitchBack.AddChidren(btnFloorName);
+                btnFloorName.ButtonClickEvent += (sender, e) =>
+                {
+                    var floors = new SelectFloorForm();
+                    AddChidren(floors);
+                    floors.Init(580, 330, Direction.Right);
+                    floors.changeFloor = true;
+                    floors.FloorAction += (floorId) =>
+                    {
+                        btnFloorName.Text = Config.Instance.Home.GetFloorNameById(floorId);
+                        HdlRoomLogic.Current.CurrentRoom = HdlRoomLogic.Current.GetLoveRoom();
+                        //鍒锋柊bodyView
+                        this.RefreshBodyView();
+                    };
+                };
+                //妤煎眰鍥炬爣
+                this.btnFloorIcon = new IconViewControl(69);
+                btnFloorIcon.X = Application.GetRealWidth(950);
+                btnFloorIcon.Y = Application.GetRealHeight(17);
+                btnFloorIcon.UnSelectedImagePath = "Item/Drop_Down.png";
+                frameSwitchBack.AddChidren(btnFloorIcon);
+                btnFloorIcon.ButtonClickEvent += (sender, e) =>
+                {
+                    btnFloorName.ButtonClickEvent?.Invoke(sender, e);
+                };
+            }
+
+            //鐩墠涓嶇煡閬撻儹闆煄鐨勮繖涓叿浣撴斁鍦ㄥ摢涓殑浣嶇疆
+            this.functionSceneAutoBodyView = new FrameLayout();
+            functionSceneAutoBodyView.Y = frameSwitchBack.Bottom;
+            functionSceneAutoBodyView.Height = Application.GetRealHeight(1423);
+            bodyFrameLayout.AddChidren(functionSceneAutoBodyView);
+
+            //鍦烘櫙,鍔熻兘,鑷姩鍖栫殑鍒囨崲鎺т欢
+            var switchContr = new SceneFunctionSwitchControl();
+            switchContr.Width = Application.GetRealWidth(650);
+            switchContr.Gravity = Gravity.CenterVertical;
+            frameSwitchBack.AddChidren(switchContr);
+            var listTitle = new List<string>();
+            listTitle.Add(Language.StringByID(R.MyInternationalizationString.uScence));
+            listTitle.Add(Language.StringByID(R.MyInternationalizationString.uFunction));
+            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+            {
+                //鎴愬憳娌℃湁鑷姩鍖�
+                listTitle.Add(Language.StringByID(R.MyInternationalizationString.Automation));
+            }
+            //璁剧疆鍒濆鍊�
+            switchContr.SetDefultIndex(UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex);
+            //閫夋嫨浜嬩欢
+            switchContr.SelectTabEvent += (selectIndex) =>
+            {
+                UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex = selectIndex;
+                if (selectIndex == 2)
+                {
+                    Common.Logic.LogicDviceList.Clear();
+                    if (Common.Logic.LogicDviceList.Count == 0)
+                    {
+                        Common.Logic.LogicDviceList.AddRange(LocalDevice.Current.listAllDevice.ToArray());
+                    }
+                }
+                //鍒锋柊bodyView
+                this.RefreshBodyView();
+            };
+            //寮�濮嬪垵濮嬪寲
+            switchContr.InitControl(listTitle);
+        }
+
+        /// <summary>
+        /// 鍒锋柊bodyView
+        /// </summary>
+        public void RefreshBodyView()
+        {
+            this.functionSceneAutoBodyView.RemoveAll();
+
+            HdlThreadLogic.Current.RunMainInThread(() =>
+            {
+                bool floorVisible = true;
+                //鍦烘櫙
+                if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
+                {
+                    //鍒濆鍖栨埧闂磋彍鍗�
+                    this.InitRoomMenuControl();
+                    //鏄剧ず鍙充笂瑙掔殑鍔犲彿
+                    this.btnTopRightAdd.Visible = true;
+                }
+                //鍔熻兘
+                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
+                {
+                    //鍒濆鍖栨埧闂磋彍鍗�
+                    this.InitRoomMenuControl();
+                    //闅愯棌鍙充笂瑙掔殑鍔犲彿
+                    this.btnTopRightAdd.Visible = false;
+                }
+                //鑷姩鍖�
+                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
+                {
+                    this.ShowAutotion();
+                    //闅愯棌妤煎眰
+                    floorVisible = false;
+                    //鏄剧ず鍙充笂瑙掔殑鍔犲彿
+                    this.btnTopRightAdd.Visible = true;
+                }
+
+                //淇敼妤煎眰鐨勬樉绀烘晥鏋�
+                if (this.btnFloorName != null)
+                {
+                    this.btnFloorName.Visible = floorVisible;
+                    this.btnFloorIcon.Visible = floorVisible;
+                }
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鎴块棿鑿滃崟鎺т欢_______________________
+
+        /// <summary>
+        /// 鍒濆鍖栨埧闂磋彍鍗曟帶浠�
+        /// </summary>
+        private void InitRoomMenuControl()
+        {
+            //褰撳墠妤煎眰鐨勫叏閮ㄦ埧闂�
+            var lisrRoom = HdlRoomLogic.Current.GetRoomsByCurrentFloorIdAppendLoveRoom();
+            //鎴块棿鑿滃崟鎺т欢
+            var roomSwitchContr = new RoomDeviceGroupMenuControl(lisrRoom);
+            roomSwitchContr.Y = Application.GetRealHeight(-55);
+            this.functionSceneAutoBodyView.AddChidren(roomSwitchContr);
+            //璁剧疆鍒濆鍊�
+            roomSwitchContr.SetDefultIndex(HdlRoomLogic.Current.CurrentRoom.Id);
+            //閫夋嫨浜嬩欢
+            roomSwitchContr.SelectRoomEvent += (selectRoom) =>
+            {
+                HdlRoomLogic.Current.CurrentRoom = selectRoom;
+                //鍦烘櫙
+                if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 0)
+                {
+                    //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
+                    this.functionSceneBodyView.RemoveAll();
+                    HdlThreadLogic.Current.RunMainInThread(() =>
+                    {
+                        //鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
+                        this.RefreshSceneView(selectRoom);
+                    });
+                }
+                //鍔熻兘
+                else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 1)
+                {
+                    //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
+                    this.functionSceneBodyView.RemoveAll();
+                    HdlThreadLogic.Current.RunMainInThread(() =>
+                    {
+                        //鍒锋柊璁惧鍒嗘敮鎺т欢
+                        this.RefreshFunctionView(selectRoom);
+                    });
+                }
+            };
+
+            //鍔熻兘鍜屽満鏅痓odyView
+            this.functionSceneBodyView = new FrameLayout();
+            functionSceneBodyView.Y = roomSwitchContr.Bottom;
+            functionSceneBodyView.Height = functionSceneAutoBodyView.Height - roomSwitchContr.Bottom;
+            functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
+
+            //鎵ц鍒濆鍖� 
+            roomSwitchContr.InitControl();
+        }
+
+        #endregion
+
+        #region 鈻� 鍔熻兘鍒嗘敮___________________________
+
+        /// <summary>
+        /// 鍒锋柊鍔熻兘鍒嗘敮鎺т欢
+        /// </summary>
+        /// <param name="room"></param>
+        private void RefreshFunctionView(Common.Room room)
+        {
+            //鑾峰彇鍒嗙粍鍚庣殑璁惧
+            var dicGroupDevice = this.GetAllGroupDevice(room);
+            if (dicGroupDevice.Count == 0)
+            {
+                this.ShowNoFunctionTip();
+                return;
+            }
+
+            //璁惧鑿滃崟鐨勭櫧鑹茶儗鏅�
+            var functionBack1 = new FrameLayout();
+            functionBack1.X = ControlCommonResourse.XXLeft;
+            functionBack1.Height = Application.GetRealHeight(160);
+            functionBack1.Width = Application.GetRealWidth(1028);
+            functionBack1.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+            functionSceneBodyView.AddChidren(functionBack1);
+            functionBack1.SetCornerWithSameRadius(Application.GetRealHeight(17), HDLUtils.RectCornerTopLeft);
+            var functionBack2 = new FrameLayout();
+            functionBack2.X = ControlCommonResourse.XXLeft;
+            functionBack2.Y = functionBack1.Bottom - Application.GetRealHeight(50);
+            functionBack2.Height = Application.GetRealHeight(279 - 160 + 50);
+            functionBack2.Width = Application.GetRealWidth(1028);
+            functionBack2.BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor;
+            functionSceneBodyView.AddChidren(functionBack2);
+            functionBack2.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
+
+            //璁惧鑿滃崟鐨勫乏鍙虫粦鍔ㄧ殑鎺т欢
+            var HorizontalView = new HorizontalScrolViewLayout();
+            HorizontalView.X = Application.GetRealWidth(CommonFormResouce.X_Left);
+            HorizontalView.Height = Application.GetRealHeight(279);
+            HorizontalView.Width = Application.GetRealWidth(1028);
+            functionSceneBodyView.AddChidren(HorizontalView);
+
+            //璁惧鐨勮儗鏅鍣�
+            var frameDeviceBack = new FrameLayout();
+            frameDeviceBack.X = ControlCommonResourse.XXLeft;
+            frameDeviceBack.Y = HorizontalView.Bottom + Application.GetRealHeight(35);
+            frameDeviceBack.BackgroundColor = UserCenterColor.Current.White;
+            frameDeviceBack.Width = bodyFrameLayout.Width;
+            frameDeviceBack.Height = functionSceneBodyView.Height - HorizontalView.Bottom - Application.GetRealHeight(35);
+            frameDeviceBack.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+            functionSceneBodyView.AddChidren(frameDeviceBack);
+
+            //璁惧鍒楄〃鎺т欢
+            var listDeviceView = new VerticalListControl(35);
+            listDeviceView.Y = Application.GetRealHeight(11);
+            listDeviceView.Width = Application.GetRealWidth(1022);
+            listDeviceView.Height = frameDeviceBack.Height - Application.GetRealHeight(11);
+            listDeviceView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+            frameDeviceBack.AddChidren(listDeviceView);
+
+            //涓婁竴娆¢�夋嫨鐨勮彍鍗�
+            MainPage.Controls.DeviceFunctionUnallocatedControl oldSelectContr = null;
+            DeviceRowInfo nowSelectDeviceInfo = null;
+            foreach (int Textid in dicGroupDevice.Keys)
+            {
+                var rowInfo = dicGroupDevice[Textid];
+
+                //璁惧绫诲瀷鐨勫鍣�
+                var devieFrame = new FrameLayout();
+                devieFrame.Width = Application.GetRealWidth(220);
+                HorizontalView.AddChidren(devieFrame);
+
+                //鑿滃崟鍥剧墖鎺т欢
+                var deviceObjContr = new MainPage.Controls.DeviceFunctionUnallocatedControl();
+                devieFrame.AddChidren(deviceObjContr);
+                deviceObjContr.InitControl(Language.StringByID(Textid), rowInfo.IconPath, rowInfo.IconPathSelected, rowInfo.listDeviceKeys);
+                deviceObjContr.ButtonClickEvent += (sender, e) =>
+                {
+                    //閫夋嫨鐨勬槸鍚屼竴涓笢瑗跨殑璇�,涓嶅鐞�
+                    if (nowSelectDeviceInfo.TextId != rowInfo.TextId)
+                    {
+                        //涓婁竴娆$殑鑿滃崟鍙栨秷,鏈鑿滃崟閫夋嫨
+                        oldSelectContr.SetSelectStatu(false);
+                        deviceObjContr.SetSelectStatu(true);
+                        oldSelectContr = deviceObjContr;
+
+                        nowSelectDeviceInfo = rowInfo;
+                        HdlThreadLogic.Current.RunMainInThread(() =>
+                        {
+                            //鍒濆鍖栬澶囧垪琛ㄦ帶浠�
+                            this.InitListDeviceControls(listDeviceView, rowInfo, room);
+                        });
+                    }
+                };
+
+                if (nowSelectDeviceInfo == null)
+                {
+                    //璁剧疆鍒濆閫夋嫨
+                    nowSelectDeviceInfo = rowInfo;
+                    //璁板綍鍒濆閫夋嫨鐨勮彍鍗曟帶浠�
+                    oldSelectContr = deviceObjContr;
+                    deviceObjContr.SetSelectStatu(true);
+                }
+            }
+            if (nowSelectDeviceInfo != null)
+            {
+                //鍒濆鍖栭粯璁ょ殑璁惧鍒楄〃鎺т欢
+                this.InitListDeviceControls(listDeviceView, nowSelectDeviceInfo, room);
+            }
+        }
+
+        /// <summary>
+        /// 鎻愮ず娌℃湁鍔熻兘
+        /// </summary>
+        private void ShowNoFunctionTip()
+        {
+            var noFunction = new Button()
+            {
+                Y = Application.GetRealHeight(320),
+                Width = Application.GetMinRealAverage(757),
+                Height = Application.GetMinRealAverage(435),
+                UnSelectedImagePath = "Item/NoFunction.png",
+                Gravity = Gravity.CenterHorizontal
+            };
+            functionSceneBodyView.AddChidren(noFunction);
+
+            var noFunctionTip = new Button()
+            {
+                Y = noFunction.Bottom + Application.GetRealHeight(32),
+                Height = Application.GetRealHeight(200),
+                Width = Application.GetRealWidth(700),
+                Gravity = Gravity.CenterHorizontal,
+                Text = Language.StringByID(R.MyInternationalizationString.NoFunction).Replace("{\\r\\n}", "\r\n"),
+                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                TextAlignment = TextAlignment.Center,
+                IsMoreLines = true
+            };
+            functionSceneBodyView.AddChidren(noFunctionTip);
+        }
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖栬澶囧垪琛ㄦ帶浠禵________________
+
+        /// <summary>
+        /// 鍒濆鍖栬澶囧垪琛ㄦ帶浠�
+        /// </summary>
+        /// <param name="listView"></param>
+        /// <param name="rowInfo"></param>
+        private void InitListDeviceControls(VerticalListControl listView, DeviceRowInfo rowInfo, Room i_room)
+        {
+            //鍏堟竻绌�
+            listView.RemoveAll();
+
+            var listDevice = new List<CommonDevice>();
+            for (int i = 0; i < rowInfo.listDeviceKeys.Count; i++)
+            {
+                var device = LocalDevice.Current.GetDevice(rowInfo.listDeviceKeys[i]);
+
+                //鑾峰彇璁惧绫诲瀷鐨�
+                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                //鏂伴闈㈡澘涓嬬殑鍥炶矾涓嶆樉绀猴紝锛堝鏂伴銆佹俯/婀垮害浼犳劅鍣ㄥ垯涓嶆樉绀猴級
+                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                {
+                    continue;
+                }
+
+                if (device != null)
+                {
+                    listDevice.Add(device);
+                }
+                else
+                {
+                    rowInfo.listDeviceKeys.RemoveAt(i);
+                    i--;
+                }
+            }
+
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                var listContr = new List<Controls.DeviceRowCommon>();
+                foreach (var device in listDevice)
+                {
+                    Controls.DeviceRowCommon cardContr = null;
+                    //绐楀笜
+                    if (device.Type == DeviceType.WindowCoveringDevice)
+                    {
+                        cardContr = new Controls.DeviceCurtainRowControl(listView.rowSpace / 2);
+                    }
+                    //缁х數鍣�
+                    else if (device.Type == DeviceType.OnOffOutput)
+                    {
+                        cardContr = new Controls.DeviceRelayRowControl(listView.rowSpace / 2);
+                    }
+                    //绌烘皵寮�鍏�
+                    else if (device.Type == DeviceType.AirSwitch)
+                    {
+                        cardContr = new Controls.DeviceAirSwitchRowControl(listView.rowSpace / 2);
+                    }
+                    //绌鸿皟
+                    else if (device.Type == DeviceType.Thermostat)
+                    {
+                        cardContr = new Controls.DeviceAcRowControl(listView.rowSpace / 2);
+                    }
+                    //褰╃伅(璋冨厜鍣�)
+                    else if (device.Type == DeviceType.DimmableLight)
+                    {
+                        cardContr = new Controls.DeviceColorLightRowControl(listView.rowSpace / 2);
+                    }
+                    //浼犳劅鍣�
+                    else if (device.Type == DeviceType.IASZone)
+                    {
+                        cardContr = new Controls.DeviceSensorRowControl(listView.rowSpace / 2);
+                    }
+                    //娓╂箍搴�
+                    else if (device.Type == DeviceType.TemperatureSensor)
+                    {
+                        cardContr = new Controls.DeviceTemperatureRowControl(listView.rowSpace / 2);
+                    }
+                    //闂ㄩ攣
+                    else if (device.Type == DeviceType.DoorLock)
+                    {
+                        cardContr = new Controls.DeviceDoorLockRowControl(listView.rowSpace / 2);
+                    }
+                    //鏃犳硶璇嗗埆
+                    else
+                    {
+                        cardContr = new Controls.DeviceRowCommon(listView.rowSpace / 2);
+                        //娌℃湁鐘舵�佸姛鑳�
+                        cardContr.hadStatuFunction = false;
+                    }
+
+                    //鍒濆鍖栧崱鐗�
+                    listView.AddChidren(cardContr);
+                    cardContr.InitControl(device);
+                    //鎺т欢璁板綍鍒扮紦瀛樹腑
+                    this.dicDeviceRowControl[LocalDevice.Current.GetDeviceMainKeys(device)] = cardContr;
+                    //鍔犵紦瀛�,鐒跺悗鍙戝懡浠�
+                    listContr.Add(cardContr);
+                    //鎺т欢琚Щ闄ょ殑鍥炶皟鍑芥暟
+                    cardContr.RowNeedRemoveEvent += () =>
+                    {
+                        string myKeys = LocalDevice.Current.GetDeviceMainKeys(cardContr.device);
+                        rowInfo.listDeviceKeys.Remove(myKeys);
+                        this.dicDeviceRowControl.Remove(myKeys);
+
+                        if (rowInfo.listDeviceKeys.Count == 0)
+                        {
+                            //鍦ㄥ闈㈡竻绌�(鐗规晥鐨勯棶棰�)
+                            this.functionSceneBodyView.RemoveAll();
+                            HdlThreadLogic.Current.RunMainInThread(() =>
+                            {
+                                //鍒锋柊璁惧鍒嗘敮鎺т欢
+                                this.RefreshFunctionView(i_room);
+                            });
+                        }
+                    };
+                }
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    for (int i = 0; i < listContr.Count; i++)
+                    {
+                        if (listView.Parent == null)
+                        {
+                            return;
+                        }
+                        System.Threading.Thread.Sleep(200);
+                        //鍙戦�佽幏鍙栫姸鎬佺殑鍛戒护
+                        listContr[i].SendStatuComand();
+                    }
+
+                }, ShowErrorMode.NO);
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鍦烘櫙鍒嗘敮___________________________
+
+        /// <summary>
+        /// 鍒锋柊鍦烘櫙鍒嗘敮鎺т欢
+        /// </summary>
+        /// <param name="room"></param>
+        private void RefreshSceneView(Room room)
+        {
+            var listScene = new List<SceneUI>();
+            foreach (var sceneId in room.ListSceneId)
+            {
+                var scene = HdlSceneLogic.Current.GetSceneUIBySceneId(sceneId);
+                if (scene != null)
+                {
+                    listScene.Add(scene);
+                }
+            }
+            if (listScene.Count == 0)
+            {
+                this.ShowNoSceneTip();
+                return;
+            }
+
+            var dicSceneContr = new Dictionary<int, SceneCategoryView>();
+            //涓讳汉锛岀鐞嗗憳涓撶敤鍒锋柊鎺т欢
+            VerticalListRefreshControl listview1 = null;
+            //鎴愬憳涓撶敤涓嶈兘鍒锋柊鐨勬帶浠�
+            VerticalListControl listview2 = null;
+            //if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+            //{
+            //    listview1 = new VerticalListRefreshControl();
+            //    functionSceneBodyView.AddChidren(listview1);
+            //}
+            //else
+            {
+                listview2 = new VerticalListControl();
+                functionSceneBodyView.AddChidren(listview2);
+            }
+          
+            foreach (var scene in listScene)
+            {
+                //鍦烘櫙鍗$墖鎺т欢
+                var sceneView = new SceneCategoryView();
+                listview1?.AddChidren(sceneView);
+                listview2?.AddChidren(sceneView);
+                sceneView.InitControl(scene, room);
+
+                dicSceneContr[scene.Id] = sceneView;
+            }
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                if (listview1 != null)
+                {
+                    //鎵撳紑鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+                    this.StartAllDelayScene(dicSceneContr, listview1);
+                }
+                else
+                {
+                    //鎵撳紑鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+                    this.StartAllDelayScene(dicSceneContr, listview2);
+                }
+            }, ShowErrorMode.NO);
+        }
+
+        /// <summary>
+        /// 鎵撳紑鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+        /// </summary>
+        /// <param name="dicSceneContr"></param>
+        private async void StartAllDelayScene(Dictionary<int, SceneCategoryView> dicSceneContr, ViewGroup listview)
+        {
+            string hourText = Language.StringByID(R.MyInternationalizationString.Hour);
+            string minuText = Language.StringByID(R.MyInternationalizationString.Minute);
+            string secondText = Language.StringByID(R.MyInternationalizationString.Second);
+
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Config.Instance.Home.IsVirtually == true)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //寮�鍚欢鏃剁壒鏁�
+                    foreach (var myContr in dicSceneContr.Values)
+                    {
+                        if (myContr.scene.RemainTime > 0)
+                        {
+                            //寮�鍚満鏅欢鏃剁壒鏁�
+                            this.StartSceneDelayApeal(myContr, listview, myContr.scene.RemainTime, hourText, minuText, secondText);
+                        }
+                    }
+                }, ShowErrorMode.NO);
+                return;
+            }
+
+            //璇诲彇鍏ㄩ儴鐨勫欢鏃舵椂闂�
+            var result = await Scene.CatDelaySceneAsync();
+            if (result == null || result.catDelaySceneResponseData == null ||
+                result.catDelaySceneResponseData.DelayScenesList.Count == 0)
+            {
+                //鍑洪敊涓嶉笩瀹�
+                return;
+            }
+
+            foreach (var data in result.catDelaySceneResponseData.DelayScenesList)
+            {
+                if (dicSceneContr.ContainsKey(data.ScenesId) == false)
+                {
+                    //褰撳墠鐨勭晫闈㈡病鏈夋樉绀鸿繖涓満鏅�
+                    continue;
+                }
+                var seceneContr = dicSceneContr[data.ScenesId];
+                //淇濆瓨缂撳瓨鏃堕棿
+                seceneContr.scene.RemainTime = data.RemainTime;
+                int remainTime = data.RemainTime;
+                if (remainTime <= 0)
+                {
+                    continue;
+                }
+                //寮�鍚満鏅欢鏃剁壒鏁�
+                this.StartSceneDelayApeal(seceneContr, listview, remainTime, hourText, minuText, secondText);
+            }
+        }
+
+        /// <summary>
+        /// 寮�鍚満鏅欢鏃剁壒鏁�
+        /// </summary>
+        /// <param name="sceneContr"></param>
+        /// <param name="remainTime"></param>
+        /// <param name="hourText"></param>
+        /// <param name="minuText"></param>
+        /// <param name="secondText"></param>
+        private void StartSceneDelayApeal(SceneCategoryView sceneContr, ViewGroup listview, int remainTime,
+            string hourText, string minuText, string secondText)
+        {
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾)
+                HdlSceneLogic.Current.StartDelayTimeThread(sceneContr.scene);
+                while (remainTime > 0 && this.Parent != null)
+                {
+                    System.Threading.Thread.Sleep(1000);
+                    Application.RunOnMainThread(() =>
+                    {
+                        sceneContr.SetTimeText(this.GetTimeString(remainTime, hourText, minuText, secondText));
+                    });
+                    remainTime--;
+                }
+                Application.RunOnMainThread(() =>
+                {
+                    if (listview.Parent != null)
+                    {
+                        sceneContr.SetTimeImage();
+                        //寮�鍚疞oading鐗规晥
+                        sceneContr.StartLoadingApreal();
+                    }
+                });
+            });
+        }
+
+        /// <summary>
+        /// 鏄剧ず娌℃湁鍦烘櫙
+        /// </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()
+            {
+                Y = noFunction.Bottom + Application.GetRealHeight(32),
+                Height = Application.GetRealHeight(200),
+                Width = Application.GetRealWidth(700),
+                Gravity = Gravity.CenterHorizontal,
+                Text = Language.StringByID(R.MyInternationalizationString.NoScene).Replace("{\\r\\n}", "\r\n"),
+                TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                TextAlignment = TextAlignment.Center,
+                IsMoreLines = true
+            };
+            functionSceneBodyView.AddChidren(noScenceTip);
+        }
+
+
+        #endregion
+
+        #region 鈻� 涓�鑸澶囩姸鎬佷笂鎶__________________
+
+        /// <summary>
+        /// 娣诲姞涓�鑸澶囩姸鎬佷笂鎶ヤ簨浠�
+        /// </summary>
+        private void AddNormalDeviceReportEvent()
+        {
+            //璁惧灞炴�т笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceStatus", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //澶勭悊涓�鑸澶囩殑涓婃姤鏁版嵁
+                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+                    {
+                        //鍒锋柊鍗$墖淇℃伅
+                        var locadevice = LocalDevice.Current.GetDevice(mainKeys);
+                        if (report.DeviceStatusReport.CluterID == 513 && report.DeviceStatusReport.AttriBute[0].AttributeId == 28)
+                        {
+                            //绌鸿皟鏄壒娈婄殑,瀹冪殑寮�鍏虫槸灞炴�т笂鎶ユ潵鐫�.宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
+                            this.dicDeviceRowControl[mainKeys].SetHadGetResponeResultStatu();
+                        }
+                        this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
+                    }
+                }, ShowErrorMode.NO);
+            });
+
+            //璁惧鍦ㄧ嚎涓婃姤(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceOnline", ReceiveComandDiv.A璁惧鍦ㄧ嚎涓婃姤, (report) =>
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+                    {
+                        //鍒锋柊鍗$墖鐘舵��
+                        this.dicDeviceRowControl[mainKeys].SetRowOnlineStatu(report.IsOnline == 1);
+                        return;
+                    }
+
+                }, ShowErrorMode.NO);
+            });
+
+            //璁惧鎺у埗鍙嶉涓婃姤
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewDeviceRespone", ReceiveComandDiv.A鑺傜偣鎺у埗鍙嶉, (report) =>
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+                    {
+                        //璁惧鍗$墖
+                        var deviceCardContr = this.dicDeviceRowControl[mainKeys];
+                        //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
+                        deviceCardContr.SetHadGetResponeResultStatu();
+                    }
+
+                }, ShowErrorMode.NO);
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 浼犳劅鍣ㄧ姸鎬佷笂鎶____________________
+
+        /// <summary>
+        /// 娣诲姞浼犳劅鍣ㄧ姸鎬佷笂鎶ヤ簨浠�
+        /// </summary>
+        private void AddSensorDeviceReportEvent()
+        {
+            //浼犳劅鍣ㄤ笂鎶�(缂撳瓨鐨勪慨鏀逛氦鐢� HdlGatewayReceiveLogic 澶勭悊)
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("UserHomeViewSensor", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (report) =>
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //澶勭悊浼犳劅鍣ㄤ笂鎶ユ暟鎹�
+                    string mainKeys = LocalDevice.Current.GetDeviceMainKeys(report);
+                    if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
+                    {
+                        //鏈湴璁惧瀵硅薄
+                        var locadevice = LocalDevice.Current.GetDevice(mainKeys);
+                        //鍒锋柊鍗$墖淇℃伅
+                        this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
+                    }
+
+                }, ShowErrorMode.NO);
+            });
+        }
+
+        #endregion
+
+        #region 鈻� 鏁村悎璁惧___________________________
+
+        /// <summary>
+        /// 鑾峰彇鍒嗙粍鍚庣殑璁惧
+        /// </summary>
+        /// <returns></returns>
+        private Dictionary<int, DeviceRowInfo> GetAllGroupDevice(Common.Room room)
+        {
+            //鍏ㄩ儴鐨勮澶�
+            var listDeviceTemp = HdlRoomLogic.Current.GetRoomListDevice(room);
+            var listDevice = new List<CommonDevice>();
+            foreach (var device in listDeviceTemp)
+            {
+                //鍒ゆ柇璇ヨ澶囪兘鍚︽樉绀哄湪鍒嗙被
+                if (LocalDevice.Current.CanShowInHomeHomeMainPage(device) == false)
+                {
+                    continue;
+                }
+                listDevice.Add(device);
+            }
+
+            //鏍规嵁璁惧鎵�灞炵被鍨嬫帓搴�
+            listDevice = LocalDevice.Current.SortDeviceByBelongType(listDevice);
+            var dic = new Dictionary<int, DeviceRowInfo>();
+            foreach (var device in listDevice)
+            {
+                var typeInfo = LocalDevice.Current.GetDeviceBelongEnumInfo(device);
+                //鎸夋墍灞濱D鍒嗙粍
+                if (dic.ContainsKey(typeInfo.BeloneTextId) == false)
+                {
+                    dic[typeInfo.BeloneTextId] = new DeviceRowInfo();
+                    string path1 = string.Empty;
+                    string path2 = string.Empty;
+                    //鑾峰彇鍥剧墖
+                    LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
+                    dic[typeInfo.BeloneTextId].IconPath = path1;
+                    dic[typeInfo.BeloneTextId].IconPathSelected = path2;
+                    dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
+                }
+                dic[typeInfo.BeloneTextId].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
+            }
+            return dic;
+        }
+
+        #endregion
+
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
+
+        /// <summary>
+        /// 鐣岄潰鍏抽棴
+        /// </summary>
+        public override void CloseFormBefore()
+        {
+            //鎶婇潤鎬佸彉閲忕殑杩欎釜涓滆タ缃┖
+            instance = null;
+
+            base.CloseFormBefore();
+        }
+
+        #endregion
+
+        #region 鈻� 涓�鑸柟娉昣__________________________
+
+        /// <summary>
+        /// 鑾峰彇鏃堕棿鐨勭炕璇戞枃鏈�
+        /// </summary>
+        /// <param name="second"></param>
+        /// <param name="hourText">灏忔椂鐨勬枃鏈�</param>
+        /// <param name="minuText">鍒嗙殑鏂囨湰</param>
+        /// <param name="secondText">绉掔殑鏂囨湰</param>
+        /// <returns></returns>
+        private string GetTimeString(int second, string hourText, string minuText, string secondText)
+        {
+            string timeStr = string.Empty;
+            int hour = second / 3600;
+            int minu = second % 3600 / 60;
+            int sec = second % 60;
+            if (hour > 0)
+            {
+                timeStr += hour + hourText;
+            }
+            if (minu > 0)
+            {
+                timeStr += minu + minuText;
+            }
+            if (sec > 0)
+            {
+                timeStr += sec + secondText;
+            }
+            return timeStr;
+        }
+
+        #endregion
+
+        #region 鈻� 缁撴瀯浣揰____________________________
+
+        /// <summary>
+        /// 璁惧琛屼俊鎭�
+        /// </summary>
+        private class DeviceRowInfo
+        {
+            /// <summary>
+            /// 鏂囨湰ID,鐩墠鐢ㄦ潵鍋氫富閿�
+            /// </summary>
+            public int TextId = 0;
+            /// <summary>
+            /// 鍥炬爣
+            /// </summary>
+            public string IconPath = string.Empty;
+            /// <summary>
+            /// 鍥炬爣
+            /// </summary>
+            public string IconPathSelected = string.Empty;
+            /// <summary>
+            /// 璁惧鍥炶矾涓婚敭
+            /// </summary>
+            public List<string> listDeviceKeys = new List<string>();
+        }
+
+        #endregion
+
+        #region 鈼� 鑷姩鍖朹_________________________
+
+        /// <summary>
+        /// 鑷姩鍖栧姛鑳戒唬鐮佸叆鍙�
+        /// </summary>
+        private void ShowAutotion()
+        {
+            Shared.Phone.Device.Logic.SkipView.ShowAutotionView(functionSceneAutoBodyView);
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0