From bba578c2f0acf2eca747edcb69426771e0cadd32 Mon Sep 17 00:00:00 2001
From: WJC <wjc@hdlchina.com.cn>
Date: 星期一, 23 三月 2020 18:20:50 +0800
Subject: [PATCH] 2020-03-23-3

---
 ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs | 1472 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 1,472 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
new file mode 100644
index 0000000..f582b6d
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
@@ -0,0 +1,1472 @@
+锘縰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;
+                //鍒锋柊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()
+        {
+            //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()
+        {
+            // functionSceneAutoBodyView.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+            #region   ---鎺ㄨ崘妯℃澘鐨勭粍浠�
+            //鎺ㄨ崘妯℃澘鑳屾櫙鎺т欢
+            var bjFrameLayout = new FrameLayout
+            {
+                Width = Application.GetRealWidth(1080 - 58),
+                Height = Application.GetRealHeight(170),
+                BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
+                X = Application.GetRealWidth(58),
+                //Radius = (uint)Application.GetRealHeight(50),
+                Y = Application.GetRealHeight(30),
+
+            };
+            functionSceneAutoBodyView.AddChidren(bjFrameLayout);
+            bjFrameLayout.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerBottomLeft);
+            //鍥炬爣鎺т欢
+            var sigBtn = new Button
+            {
+                Width = Application.GetMinRealAverage(84),
+                Height = Application.GetMinRealAverage(84),
+                UnSelectedImagePath = "ZigeeLogic/sign.png",
+                X = Application.GetRealWidth(58),
+                Gravity = Gravity.CenterVertical,
+            };
+            bjFrameLayout.AddChidren(sigBtn);
+            //鎺ㄨ崘妯℃澘鏂囨湰鎺т欢
+            var recommendtextBtn = new Button
+            {
+                Width = Application.GetMinRealAverage(300),
+                Height = Application.GetMinRealAverage(84),
+                X = sigBtn.Right + Application.GetRealWidth(35),
+                TextAlignment = TextAlignment.CenterLeft,
+                //Text = "鎺ㄨ崘妯℃澘",
+                TextID = MyInternationalizationString.logictemplate,
+                Gravity = Gravity.CenterVertical,
+                TextColor = ZigbeeColor.Current.LogicBtnSelectedColor,
+                TextSize = 15,
+            };
+            bjFrameLayout.AddChidren(recommendtextBtn);
+            //鎺ㄨ崘妯℃澘寮�鍏虫帶浠�
+            var recommendswitchBtn = new Button
+            {
+                Width = Application.GetRealWidth(104),
+                Height = Application.GetRealHeight(63),
+                UnSelectedImagePath = "ZigeeLogic/logicclose.png",
+                SelectedImagePath = "ZigeeLogic/logicopen.png",
+                X = bjFrameLayout.Width - Application.GetRealWidth(104 + 58),
+                Gravity = Gravity.CenterVertical,
+            };
+            bjFrameLayout.AddChidren(recommendswitchBtn);
+            #endregion
+            //榛樿鎺ㄨ崘妯℃澘宸﹀彸鍙粦鎺т欢
+            var scenehorizontalScrol = new HorizontalScrolViewLayout
+            {
+                Width = Application.GetRealWidth(1080 - 58),
+                X = Application.GetRealWidth(58),
+                Y = bjFrameLayout.Bottom + Application.GetRealHeight(30),
+                Height = Application.GetRealHeight(0),
+            };
+            functionSceneAutoBodyView.AddChidren(scenehorizontalScrol);
+            //鏄剧ず鑷姩鍖栧垪琛ㄤ笂涓嬪彲婊戞帶浠�
+            var logicScrolView = new VerticalRefreshLayout//VerticalScrolViewLayout
+            {
+                Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30),
+                //BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,/
+                X = Application.GetRealWidth(58),
+                Y = scenehorizontalScrol.Bottom,
+            };
+            functionSceneAutoBodyView.AddChidren(logicScrolView);
+            logicScrolView.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
+            bool no = false;
+            //鏄剧ず榛樿妯℃澘鐨勭晫闈簨浠�
+            recommendswitchBtn.MouseUpEventHandler += (sender, e) =>
+            {
+                int Yheight = 0;
+                recommendswitchBtn.IsSelected = !recommendswitchBtn.IsSelected;
+                scenehorizontalScrol.RemoveAll();
+                if (recommendswitchBtn.IsSelected)
+                {
+                    no = true;
+                    scenehorizontalScrol.Height = Application.GetRealHeight(246);
+                    Yheight = 20;
+                    for (int i = 1; i < 4; i++)
+                    {
+
+                        var frameLayout = new FrameLayout
+                        {
+                            Width = Application.GetMinRealAverage(369 + 46),
+                            Height = Application.GetMinRealAverage(246),
+                        };
+                        scenehorizontalScrol.AddChidren(frameLayout);
+                        var logiciocnBtn = new Button
+                        {
+                            Width = Application.GetMinRealAverage(369),
+                            Height = Application.GetMinRealAverage(246),
+                            UnSelectedImagePath = "ZigeeLogic/" + i + ".png",
+                            Tag = i,
+                        };
+                        frameLayout.AddChidren(logiciocnBtn);
+
+                        var logicnameBtn = new Button
+                        {
+                            Width = Application.GetMinRealAverage(250),
+                            Height = Application.GetMinRealAverage(80),
+                            X = Application.GetRealWidth(23),
+                            Y = Application.GetRealHeight(246 - 23 - 80),
+                            TextAlignment = TextAlignment.CenterLeft,
+                            TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+                            TextSize = 14,
+                        };
+                        frameLayout.AddChidren(logicnameBtn);
+
+                        if (i == 1)
+                        {
+                            logicnameBtn.Text = Language.StringByID(MyInternationalizationString.onlight);
+                        }
+                        else if (i == 2)
+                        {
+                            logicnameBtn.Text = Language.StringByID(MyInternationalizationString.offlight);
+                        }
+                        else if (i == 3)
+                        {
+                            logicnameBtn.Text = Language.StringByID(MyInternationalizationString.automation1);
+                        }
+
+
+                        EventHandler<MouseEventArgs> iconclick = (sender1, e1) =>
+                        {
+                            Common.Logic.CurrentLogic = new Common.Logic();
+                            Common.Logic.CurrentLogic.IsEnable = 1;//榛樿涓哄紑
+                            if (logiciocnBtn.Tag.ToString() == "3")
+                            {
+                                Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
+                                //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
+                                var addLogicPage = new Device.Logic.AddLogicPage();
+                                HomePage.Instance.AddChidren(addLogicPage);
+                                HomePage.Instance.PageIndex += 1;
+                                addLogicPage.Show();
+                            }
+                            else
+                            {
+
+                                Common.Logic.CurrentLogic.LogicName = logicnameBtn.Text;
+                                //Common.Logic.CurrentLogic.LogicCustomPushText = Common.Logic.CurrentLogic.LogicName + Language.StringByID(MyInternationalizationString.defaulttext);
+                                Device.Logic.TemplatePage templatePage = new Device.Logic.TemplatePage();
+                                Device.Logic.TemplatePage.s = logiciocnBtn.Tag.ToString();
+                                HomePage.Instance.AddChidren(templatePage);
+                                HomePage.Instance.PageIndex += 1;
+                                templatePage.Show();
+                            }
+                        };
+                        logiciocnBtn.MouseUpEventHandler += iconclick;
+                        logicnameBtn.MouseUpEventHandler += iconclick;
+                    }
+                }
+                else
+                {
+                    no = false;
+                    scenehorizontalScrol.Height = Application.GetRealHeight(0);
+                    Yheight = 0;
+                }
+                logicScrolView.Y = scenehorizontalScrol.Bottom + Yheight;
+                logicScrolView.Height = functionSceneAutoBodyView.Height - bjFrameLayout.Height - bjFrameLayout.Y - scenehorizontalScrol.Height - Application.GetRealHeight(30) - Yheight;
+                Automationview(logicScrolView, no);
+            };
+            //涓嬫媺鍒锋柊鑷姩鍖栧垪琛ㄧ殑浜嬩欢
+            logicScrolView.BeginHeaderRefreshingAction += () =>
+            {
+                //閲嶆柊鍒锋柊logic鍒楄〃
+                Common.Logic.LogicList.Clear();
+                Read(logicScrolView, no);
+                //鍏抽棴鍒锋柊View锛�
+                logicScrolView.EndHeaderRefreshing();
+            };
+
+            Read(logicScrolView, no);
+
+        }
+        /// <summary>
+        /// 璇诲彇鑷姩鍖栧垪琛ㄦ暟鎹紱
+        /// </summary>
+        /// <param name="logicScrolView"></param>
+        private async void Read(VerticalRefreshLayout logicScrolView, bool no)
+        {
+            CommonPage.Loading.Start();
+            if (Common.Logic.LogicList.Count == 0)
+            {
+                var Idlist = await Device.Logic.Send.GetLogicId(0);
+                if (Idlist.Count != 0)
+                {
+                    var listlogic = await Device.Logic.Send.ReadList(Idlist.Count, 0);
+                    //foreach鍙兘闆嗗悎宸茶淇敼,鏋氫妇鎿嶄綔鍙兘涓嶄細鎵ц,鍙兘鍑虹幇宕╂簝(寤鸿for)銆�
+                    for (int j = 0; j < listlogic.Count; j++)
+                    {
+                        var logic = listlogic[j];
+                        if (logic.LogicType != 0)
+                        {
+                            continue;
+                        }
+                        Common.Logic.LogicList.Add(logic);
+                    }
+                }
+            }
+            //鑷姩鍖�
+            Automationview(logicScrolView, no);
+            CommonPage.Loading.Hide();
+        }
+        /// <summary>
+        /// 鍔犺浇鑷姩鍖栧垪琛ㄧ晫闈�
+        /// </summary>
+        /// <param name="refresview">Refresview.</param>
+        private async void Automationview(VerticalRefreshLayout refresview, bool no)
+        {
+            refresview.RemoveAll();
+            if (Common.Logic.LogicList.Count == 0 && no == false)
+            {
+                //灏辨槸涓轰簡鏄剧ず寮曞娣诲姞鍥炬爣;
+                refresview.BackgroundColor = 0x00000000;
+                var noFrameLayout = new FrameLayout
+                {
+                    Height = Application.GetRealHeight(434 + 200 + 32 + 160),
+                    //BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
+                };
+                refresview.AddChidren(noFrameLayout);
+
+
+                var noIconBtn = new Button
+                {
+                    Y = Application.GetRealHeight(160),
+                    Width = Application.GetMinRealAverage(756),
+                    Height = Application.GetMinRealAverage(434),
+                    UnSelectedImagePath = "Item/NoFunction.png",
+                    X = Application.GetRealWidth(104),
+                };
+                noFrameLayout.AddChidren(noIconBtn);
+
+                var noTextBtn = new Button()
+                {
+                    Y = noIconBtn.Bottom,
+                    Height = Application.GetRealHeight(200) + Application.GetRealHeight(32),
+                    Width = Application.GetRealWidth(700),
+                    //Gravity = Gravity.CenterHorizontal,
+                    Text = Language.StringByID(MyInternationalizationString.automationaddtext).Replace("{\\r\\n}", "\r\n"),
+                    TextColor = ZigbeeColor.Current.GXCPlaceHolderTextColor,
+                    TextAlignment = TextAlignment.Center,
+                    IsMoreLines = true,
+                    X = Application.GetRealWidth(190 - 58),
+                };
+                noFrameLayout.AddChidren(noTextBtn);
+
+            }
+            else
+            {
+
+                if (Common.Logic.LogicList.Count == 0 && no == true)
+                {
+                    ///鏀瑰彉婊戝姩view鐨勯鑹诧紱
+                    refresview.BackgroundColor = 0x00000000;
+                }
+                else
+                {
+                    refresview.BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor;
+                }
+            }
+
+            foreach (var logic in Common.Logic.LogicList)
+            {
+                var fLayout = new FrameLayout
+                {
+                    Height = Application.GetRealHeight(190 + 30),
+                    Width = Application.GetRealWidth(1080 - 58),
+                    BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
+                };
+                refresview.AddChidren(fLayout);
+
+                var logicRowlayout = new RowLayout
+                {
+                    Height = Application.GetRealHeight(190 + 30),
+                    Width = Application.GetRealWidth(1080 - 58),
+                    LineColor = ZigbeeColor.Current.LogicBackgroundColor,
+                    BackgroundColor = ZigbeeColor.Current.LogicBackgroundColor,
+                    SubViewWidth = Application.GetRealWidth(184),//鏀瑰彉缂栬緫鎺т欢瀹藉害澶氬皯锛�
+
+                };
+                fLayout.AddChidren(logicRowlayout);
+
+                var logicnameBtn = new Button
+                {
+                    Height = Application.GetRealHeight(58),
+                    Width = Application.GetRealWidth(350),
+                    Text = logic.LogicName,
+                    X = Application.GetRealWidth(12 + 46),
+                    Y = Application.GetRealHeight(30),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = ZigbeeColor.Current.LogicTextBlackColor,
+                    TextSize = 14,
+                };
+                logicRowlayout.AddChidren(logicnameBtn);
+
+                var logicswitchBtn = new Button
+                {
+                    Width = Application.GetRealWidth(104),
+                    Height = Application.GetRealHeight(63),
+                    UnSelectedImagePath = "ZigeeLogic/logicclose.png",
+                    SelectedImagePath = "ZigeeLogic/logicopen.png",
+                    X = logicRowlayout.Width - Application.GetRealWidth(104 + 58),
+                    Y = Application.GetRealHeight(58 + 30 + 9 + 30),
+
+                };
+                logicRowlayout.AddChidren(logicswitchBtn);
+
+                logicswitchBtn.MouseUpEventHandler += (sender1, e1) =>
+                {
+                    logicswitchBtn.IsSelected = !logicswitchBtn.IsSelected;
+                    if (logicswitchBtn.IsSelected)
+                    {
+                        //閫昏緫寮�
+                        logic.IsEnable = 1;
+                        StatusColor(logic, logicRowlayout, 1);
+                    }
+                    else
+                    {
+                        //閫昏緫鍏�
+                        logic.IsEnable = 0;
+                        StatusColor(logic, logicRowlayout, 0);
+                    }
+                    Device.Logic.Send.LogicControlSwitch(logic);
+                    //Logic.Send.AddModifyLogic(logic);
+                };
+                if (logic.IsEnable == 1)
+                {
+                    logicswitchBtn.IsSelected = true;
+                    StatusColor(logic, logicRowlayout, 1);
+                }
+                else if (logic.IsEnable == 0)
+                {
+                    logicswitchBtn.IsSelected = false;
+                    StatusColor(logic, logicRowlayout, 0);
+                }
+                ///缂栬緫
+                var edit = new Button
+                {
+                    BackgroundColor = ZigbeeColor.Current.LogicEditBlackColor1,
+                    Text = Language.StringByID(MyInternationalizationString.edit),
+                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+                };
+                logicRowlayout.AddRightView(edit);
+                edit.MouseUpEventHandler += (sender, e) =>
+                {
+                    Common.Logic.CurrentLogic = logic;
+                    var logicCommunalPage = new Device.Logic.LogicCommunalPage();
+                    HomePage.Instance.AddChidren(logicCommunalPage);
+                    HomePage.Instance.PageIndex += 1;
+                    logicCommunalPage.Show(() => { logicnameBtn.Text = logic.LogicName; Automationview(refresview, no); });
+
+                };
+
+                ///鍒犻櫎
+                var del = new Button
+                {
+                    BackgroundColor = ZigbeeColor.Current.LogicDelBlackColor1,
+                    Text = Language.StringByID(MyInternationalizationString.del),
+                    TextColor = ZigbeeColor.Current.LogicBtnSaveTextColor,
+                };
+                logicRowlayout.AddRightView(del);
+                del.MouseUpEventHandler += (sender, e) =>
+                {
+                    var alert = new Alert(Language.StringByID(MyInternationalizationString.tip), Language.StringByID(MyInternationalizationString.doyouwanttodelete),
+                                             Language.StringByID(MyInternationalizationString.cancel), Language.StringByID(MyInternationalizationString.confrim));
+                    alert.ResultEventHandler += (sender1, e1) =>
+                    {
+                        if (e1)
+                        {
+                            Common.Logic.LogicList.Remove(logic);
+                            Automationview(refresview, no);
+                            Device.Logic.Send.DelLogic(logic.LogicId);
+                        }
+                    };
+                    alert.Show();
+
+                };
+                var line = new Button
+                {
+                    Y = fLayout.Height - 1,
+                    Height = 1,
+                    X = Application.GetRealWidth(58),
+                    Width = Application.GetRealWidth(1080 - 58),
+                    BackgroundColor = ZigbeeColor.Current.LogicRowLayoutLineColor,
+                };
+                fLayout.AddChidren(line);
+            }
+
+        }
+        /// <summary>
+        /// 鏄剧ず鑷姩鍖栬緭鍑哄姛鑳芥ā鍧楀浘鏍囩殑棰滆壊
+        /// </summary>
+        /// <param name="logic"></param>
+        /// <param name="logicRowlayout"></param>
+        /// <param name="intvalue"></param>
+        private void StatusColor(Common.Logic logic, RowLayout logicRowlayout, int intvalue)
+        {
+
+            var logictimeBtn = new Button
+            {
+                Height = Application.GetRealHeight(58),
+                Width = logicRowlayout.Width - Application.GetRealWidth(58 + 12 + 350),
+                Y = Application.GetRealHeight(30),
+                X = Application.GetRealWidth(365),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = ZigbeeColor.Current.LogicListWeekTextColor,
+            };
+            logicRowlayout.AddChidren(logictimeBtn);
+
+            ///鏄剧ず鎵ц鍛ㄦ湡
+            Device.Logic.Method.UpdateWeek(logictimeBtn, logic);
+
+
+            List<string> indexlist = new List<string>();
+            List<string> iconIndexlist = new List<string>();
+            for (int i = 0; i < logic.Actions.Count; i++)
+            {
+                var linkType = logic.Actions[i]["LinkType"].ToString();
+                var d = indexlist.Find((value) => { return value == linkType; });
+                if (d == null)
+                {
+                    indexlist.Add(linkType);
+                }
+            }
+            if (indexlist.Contains("0"))
+            {
+                iconIndexlist.Add("0");
+            }
+            if (indexlist.Contains("2"))
+            {
+                iconIndexlist.Add("2");
+            }
+            if (indexlist.Contains("6"))
+            {
+                iconIndexlist.Add("6");
+            }
+            if (indexlist.Contains("7"))
+            {
+                iconIndexlist.Add("7");
+            }
+            for (int i = 0; i < iconIndexlist.Count; i++)
+            {
+                var iconindex = iconIndexlist[i];
+                var typebjBtn = new FrameLayout
+                {
+                    Width = Application.GetMinRealAverage(82),
+                    Height = Application.GetMinRealAverage(82),
+                    X = Application.GetRealWidth(58) + Application.GetRealWidth(12 + (12 + 82 + 45 + 12) * i),
+                    Y = Application.GetRealHeight(58 + 30 + 30),
+                    Radius = (uint)Application.GetRealHeight(41),
+                    BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor,
+                };
+                logicRowlayout.AddChidren(typebjBtn);
+
+                var typeIconBtn = new Button
+                {
+                    Width = Application.GetMinRealAverage(58),
+                    Height = Application.GetMinRealAverage(58),
+                    Gravity = Gravity.Center,
+
+                };
+                typebjBtn.AddChidren(typeIconBtn);
+
+                var connectIconBtn = new Button
+                {
+                    Y = typebjBtn.Y + Application.GetRealHeight(35),
+                    X = Application.GetRealWidth(58) + Application.GetRealWidth((12 + 82 + 12) + (12 + 45 + 82 + 12) * i),
+                    Width = Application.GetRealWidth(48),
+                    Height = Application.GetRealHeight(15),
+                    UnSelectedImagePath = "ZigeeLogic/connect.png",
+                };
+                logicRowlayout.AddChidren(connectIconBtn);
+                if (iconIndexlist.Count - 1 == i)
+                {
+                    connectIconBtn.Visible = false;
+                }
+                switch (iconindex)
+                {
+                    case "0":
+                        {
+                            if (intvalue == 1)
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/function1.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicFunction1Color;
+                            }
+                            else
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nofunction.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+                            }
+                        }
+                        break;
+                    case "2":
+                        {
+
+                            if (intvalue == 1)
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/scene1.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicScene1Color;
+                            }
+                            else
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/noscene.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+                            }
+
+                        }
+                        break;
+                    case "6":
+                        {
+                            if (intvalue == 1)
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/security1.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicSecurity1Color;
+
+                            }
+                            else
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nosecurity.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+                            }
+
+                        }
+                        break;
+                    case "7":
+                        {
+                            if (intvalue == 1)
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/delay1.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicDelay1Color;
+                            }
+                            else
+                            {
+                                typeIconBtn.UnSelectedImagePath = "ZigeeLogic/nodelay.png";
+                                typebjBtn.BackgroundColor = ZigbeeColor.Current.LogicMiddleBackgroundColor;
+                            }
+
+                        }
+                        break;
+
+                }
+            }
+        }
+
+        #endregion
+    }
+}

--
Gitblit v1.8.0