From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001
From: 陈嘉乐 <cjl@hdlchina.com.cn>
Date: 星期五, 10 七月 2020 10:52:13 +0800
Subject: [PATCH] 2020-07-10-01

---
 ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs | 1373 +++++++++++++++++++++--------------------------------------
 1 files changed, 492 insertions(+), 881 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs
index 6b5a256..777464d 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Safety/SafetyManagementMainForm.cs
@@ -1,342 +1,276 @@
-锘縰sing System;
+锘縰sing System;
 using System.Collections.Generic;
 using System.Threading.Tasks;
 using ZigBee.Device;
 
-namespace Shared.Phone.UserCenter.Safety
-{
-    /// <summary>
-    /// 瀹夐槻绠$悊鐨勪富鐣岄潰鈽�
-    /// </summary>
-    public class SafetyManagementMainForm : UserCenterCommonForm
-    {
-        #region 鈻� 鍙橀噺澹版槑___________________________
-
-        /// <summary>
-        /// 妗屽竷鎺т欢锛岀敤浜庡瓨鏀炬垨鑰呯Щ闄ゅ姛鑳藉潡鎺т欢(Tab鎺т欢涓撶敤)
-        /// </summary>
-        private FrameLayout frameLayoutDraw = null;
+namespace Shared.Phone.UserCenter.Safety
+{
+    /// <summary>
+    /// 瀹夐槻绠$悊鐨勪富鐣岄潰鈽�
+    /// </summary>
+    public class SafetyManagementMainForm : EditorCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+
+        /// <summary>
+        /// 妗屽竷鎺т欢锛岀敤浜庡瓨鏀炬垨鑰呯Щ闄ゅ姛鑳藉潡鎺т欢(Tab鎺т欢涓撶敤)
+        /// </summary>
+        private FrameLayout frameLayoutDraw = null;
+        /// <summary>
+        /// 瀹夐槻鎺т欢
+        /// </summary>
+        private SafetyMasterControl garrisonControl = null;
         /// <summary>
         /// Tab鐨勯�夋嫨銆�1锛氬畨闃茶褰昑ab  2锛氫紶鎰熷櫒鐘舵�乀ab
-        /// </summary>
-        private int TabSelectIndex = 2;
-        /// <summary>
-        /// 鍦ㄥ甯冮槻鐨勬甯冩帶浠�,涓変釜鍥炬爣(璁剧疆浜嗗唴閮ㄩ槻鍖虹殑)
-        /// </summary>
-        private StatuFrameLayout frameTableThreeIcon = null;
-        /// <summary>
-        /// 甯冮槻鐨勬甯冩帶浠�,涓や釜鍥炬爣(娌℃湁璁剧疆鍐呴儴闃插尯鐨�)
-        /// </summary>
-        private StatuFrameLayout frameTableTwoIcon = null;
-        /// <summary>
-        /// 甯冮槻鐨勫浘鏍�(娌℃湁璁剧疆鍐呴儴闃插尯鏄剧ず鐨勫浘鏍�)
         /// </summary>
-        private IconViewControl btnAtHomeIconTwo = null;
-        /// <summary>
-        /// 鍦ㄥ甯冮槻鐨勫浘鏍�(璁剧疆浜嗗唴閮ㄩ槻鍖烘樉绀虹殑鍥炬爣)
-        /// </summary>
-        private IconViewControl btnAtHomeIconThree = null;
-        /// <summary>
-        /// 绂诲甯冮槻鐨勫浘鏍�
-        /// </summary>
-        private IconViewControl btnRemoveHomeIcon = null;
+        private int TabSelectIndex = 2;
         /// <summary>
         /// 鍦ㄧ嚎鐘舵�佺殑閿�
         /// </summary>
         private object objOnlineLock = new object();
 
-        #endregion
+        #endregion
 
         #region 鈻� 鍒濆鍖朹____________________________
 
-        /// <summary>
-        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
-        /// </summary>
-        public void ShowForm()
-        {
-            //璁剧疆澶撮儴淇℃伅
-            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.SafetyManagement));
-
-            //鍒濆鍖栦腑閮ㄤ俊鎭�
-            this.InitMiddleFrame();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
-        /// </summary>
-        private void InitMiddleFrame()
-        {
-            //鍒濆鍖栧ご閮ㄧ殑閭d笁涓浘鏍�
-            FrameLayout frameLayout = this.InitTopImageControl();
-            //鍒濆鍖朤ab鎺т欢
-            this.InitTabSwitchControl(frameLayout.Bottom);
-            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
-            {
-                //鍒濆鍖栧彸涓婅鍥炬爣
-                this.InitTopRightIcon();
-            }
-            //鍒濆鍖栧叏閮ㄥ唴瀛樹俊鎭�
-            this.InitAllMemoryData();
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栧ご閮ㄧ殑閭d笁涓浘鏍�
-        /// </summary>
-        private FrameLayout InitTopImageControl()
-        {
-            int height = 400;
-            //涓変釜鍥炬爣鐨勫悇鑷猣rameLayout鐨勫搴�
-            int width = 320;
-
-            //鏈�澶栧眰
-            var frameLayout = new FrameLayout();
-            frameLayout.Height = Application.GetRealHeight(height);
-            bodyFrameLayout.AddChidren(frameLayout);
+        /// <summary>
+        /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓)
+        /// </summary>
+        public void ShowForm()
+        {
+            //璁剧疆澶撮儴淇℃伅
+            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.SafetyManagement));
 
-            #region 鈻� 涓や釜鍥剧殑(寰堥夯鐑︾殑涓滆タ)_____
-
-            //鍖呭惈涓や釜鍥剧殑妗屽竷 -> 娌℃湁璁剧疆鍐呴儴闃插尯(鑷充簬搴曢儴)
-            this.frameTableTwoIcon = new StatuFrameLayout(width * 2, height);
-            frameTableTwoIcon.Gravity = Gravity.Center;
-            frameTableTwoIcon.Visible = false;
-            frameLayout.AddChidren(frameTableTwoIcon);
-            //甯冮槻鐨勬甯�
-            var frameGarrison = new StatuFrameLayout(width, height);
-            frameTableTwoIcon.AddChidren(frameGarrison);
-            //甯冮槻鐨勫浘鏍�
-            this.btnAtHomeIconTwo = new IconViewControl(162);
-            btnAtHomeIconTwo.Y = Application.GetRealHeight(90);
-            btnAtHomeIconTwo.UnSelectedImagePath = "Safeguard/ProtectionAtHome.png";
-            btnAtHomeIconTwo.SelectedImagePath = "Safeguard/ProtectionAtHomeSelected.png";
-            btnAtHomeIconTwo.Gravity = Gravity.CenterHorizontal;
-            frameGarrison.AddChidren(btnAtHomeIconTwo, ChidrenBindMode.BindEventOnly);
-            //甯冮槻鐨勬枃瀛�
-            var btnAtHomeViewTwo = new ViewNormalControl(width, true);
-            btnAtHomeViewTwo.Y = btnAtHomeIconTwo.Bottom;
-            btnAtHomeViewTwo.TextID = R.MyInternationalizationString.uAtHomeGarrison;
-            btnAtHomeViewTwo.TextAlignment = TextAlignment.Center;
-            frameGarrison.AddChidren(btnAtHomeViewTwo, ChidrenBindMode.BindEventOnly);
-            //鍦ㄥ甯冮槻
-            frameGarrison.MouseUpEvent = (sender, e) =>
-            {
-                if (btnAtHomeIconTwo.IsSelected == false)
-                {
-                    this.SetSafetyGarrisonModeInAtHome();
-                }
-            };
+            //鍒濆鍖栦腑閮ㄤ俊鎭�
+            this.InitMiddleFrame();
+        }
 
-            //鎾ら槻鐨勬甯�
-            var frameReGarrisonTwo = new StatuFrameLayout(width, height);
-            frameReGarrisonTwo.X = frameGarrison.Right;
-            frameTableTwoIcon.AddChidren(frameReGarrisonTwo);
-            //鎾ら槻鐨勫浘鏍�
-            var btnReGarrisonIconTwo = new IconViewControl(162);
-            btnReGarrisonIconTwo.Y = btnAtHomeIconTwo.Y;
-            btnReGarrisonIconTwo.UnSelectedImagePath = "Safeguard/WithdrawGarrison.png";
-            btnReGarrisonIconTwo.SelectedImagePath = "Safeguard/WithdrawGarrisonSelected.png";
-            btnReGarrisonIconTwo.Gravity = Gravity.CenterHorizontal;
-            frameReGarrisonTwo.AddChidren(btnReGarrisonIconTwo);
-            //鎾ら槻鐨勬枃瀛�
-            var btnReGarrisonTextTwo = new ViewNormalControl(width, true);
-            btnReGarrisonTextTwo.Y = btnAtHomeViewTwo.Y;
-            btnReGarrisonTextTwo.TextID = R.MyInternationalizationString.uWithdrawGarrison;
-            btnReGarrisonTextTwo.TextAlignment = TextAlignment.Center;
-            frameReGarrisonTwo.AddChidren(btnReGarrisonTextTwo, ChidrenBindMode.BindEventOnly);
+        /// <summary>
+        /// 鍒濆鍖栦腑閮ㄤ俊鎭�
+        /// </summary>
+        private void InitMiddleFrame()
+        {
+            //娓呯┖bodyFrame
+            this.ClearBodyFrame();
 
-            //鎾ら槻
-            frameReGarrisonTwo.MouseUpEvent = (sender, e) =>
-            {
-                this.RemoveSafetyGarrisonMode();
-            };
+            //鍒濆鍖栧彸涓婅鍥炬爣
+            this.InitTopRightIcon();
 
-            #endregion
+            //鍒濆鍖栧叏閮ㄥ唴瀛樹俊鎭�
+            this.InitAllMemoryData();
+        }
 
+        /// <summary>
+        /// 鍒濆鍖朤ab鎺т欢
+        /// </summary>
+        private void InitTabSwitchControl()
+        {
+            var frameBack = new FrameLayout();
+            frameBack.Height = Application.GetRealHeight(1300);
+            frameBack.Y = Application.GetRealHeight(444);
+            frameBack.BackgroundColor = 0xa1ffffff;
+            frameBack.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
+            bodyFrameLayout.AddChidren(frameBack);
 
-            #region 鈻� 涓変釜鍥剧殑(寰堥夯鐑︾殑涓滆タ)_____
-
-            //鍖呭惈涓変釜鍥剧殑 -> 璁剧疆浜嗗唴閮ㄩ槻鍖�(鑷充簬涓婇儴)
-            this.frameTableThreeIcon = new StatuFrameLayout(width * 3, height);
-            this.frameTableThreeIcon.Visible = false;
-            frameTableThreeIcon.Gravity = Gravity.Center;
-            frameLayout.AddChidren(frameTableThreeIcon);
-            //鍦ㄥ甯冮槻鐨勬甯�
-            var frameAtHome = new StatuFrameLayout(width, height);
-            frameTableThreeIcon.AddChidren(frameAtHome);
-            //鍦ㄥ甯冮槻鐨勫浘鏍�
-            this.btnAtHomeIconThree = new IconViewControl(162);
-            btnAtHomeIconThree.Y = Application.GetRealHeight(90);
-            btnAtHomeIconThree.UnSelectedImagePath = "Safeguard/ProtectionAtHome.png";
-            btnAtHomeIconThree.SelectedImagePath = "Safeguard/ProtectionAtHomeSelected.png";
-            btnAtHomeIconThree.Gravity = Gravity.CenterHorizontal;
-            frameAtHome.AddChidren(btnAtHomeIconThree, ChidrenBindMode.BindEventOnly);
-            //鍦ㄥ甯冮槻鐨勬枃瀛�
-            var btnAtHomeView = new ViewNormalControl(width, true);
-            btnAtHomeView.Y = btnAtHomeIconThree.Bottom;
-            btnAtHomeView.TextID = R.MyInternationalizationString.uAtHomeGarrison;
-            btnAtHomeView.TextAlignment = TextAlignment.Center;
-            frameAtHome.AddChidren(btnAtHomeView, ChidrenBindMode.BindEventOnly);
-            //鍦ㄥ甯冮槻
-            frameAtHome.MouseUpEvent = (sender, e) =>
-            {
-                if (btnAtHomeIconThree.IsSelected == false)
-                {
-                    this.SetSafetyGarrisonModeInAtHome();
-                }
-            };
-
-            //绂诲甯冮槻鐨勬甯�
-            var frameRemoveHome = new StatuFrameLayout(width, height);
-            frameRemoveHome.X = frameAtHome.Right;
-            frameTableThreeIcon.AddChidren(frameRemoveHome);
-            //绂诲甯冮槻鐨勫浘鏍�
-            this.btnRemoveHomeIcon = new IconViewControl(162);
-            btnRemoveHomeIcon.Y = btnAtHomeIconTwo.Y;
-            btnRemoveHomeIcon.UnSelectedImagePath = "Safeguard/ProtectionRemoveHome.png";
-            btnRemoveHomeIcon.SelectedImagePath = "Safeguard/ProtectionRemoveHomeSelected.png";
-            btnRemoveHomeIcon.Gravity = Gravity.CenterHorizontal;
-            frameRemoveHome.AddChidren(btnRemoveHomeIcon, ChidrenBindMode.BindEventOnly);
-            //绂诲甯冮槻鐨勬枃瀛�
-            var btnRemoveHomeView = new ViewNormalControl(width, true);
-            btnRemoveHomeView.Y = btnAtHomeView.Y;
-            btnRemoveHomeView.TextID = R.MyInternationalizationString.uRemoveHomeGarrison;
-            btnRemoveHomeView.TextAlignment = TextAlignment.Center;
-            frameRemoveHome.AddChidren(btnRemoveHomeView, ChidrenBindMode.BindEventOnly);
-            //绂诲甯冮槻
-            frameRemoveHome.MouseUpEvent = (sender, e) =>
-            {
-                if (btnRemoveHomeIcon.IsSelected == false)
-                {
-                    this.SetSafetyGarrisonModeInRemoveHome();
-                }
-            };
-
-            //鎾ら槻鐨勬甯�
-            var frameReGarrisonThree = new StatuFrameLayout(width, height);
-            frameReGarrisonThree.X = frameRemoveHome.Right;
-            frameTableThreeIcon.AddChidren(frameReGarrisonThree);
-            //鎾ら槻鐨勫浘鏍�
-            var btnReGarrisonIconThree = new IconViewControl(162);
-            btnReGarrisonIconThree.Y = btnAtHomeIconTwo.Y;
-            btnReGarrisonIconThree.UnSelectedImagePath = "Safeguard/WithdrawGarrison.png";
-            btnReGarrisonIconThree.SelectedImagePath = "Safeguard/WithdrawGarrisonSelected.png";
-            btnReGarrisonIconThree.Gravity = Gravity.CenterHorizontal;
-            frameReGarrisonThree.AddChidren(btnReGarrisonIconThree);
-            //鎾ら槻鐨勬枃瀛�
-            var btnReGarrisonTextThree = new ViewNormalControl(width, true);
-            btnReGarrisonTextThree.Y = btnAtHomeView.Y;
-            btnReGarrisonTextThree.TextID = R.MyInternationalizationString.uWithdrawGarrison;
-            btnReGarrisonTextThree.TextAlignment = TextAlignment.Center;
-            frameReGarrisonThree.AddChidren(btnReGarrisonTextThree, ChidrenBindMode.BindEventOnly);
-
-            //鎾ら槻
-            frameReGarrisonThree.MouseUpEvent = (sender, e) =>
-            {
-                this.RemoveSafetyGarrisonMode();
-            };
-
-            #endregion
-
-            return frameLayout;
-        }
-
-        /// <summary>
-        /// 鍒濆鍖朤ab鎺т欢
-        /// </summary>
-        /// <param name="YY">Yy.</param>
-        private void InitTabSwitchControl(int YY)
-        {
-            //Tab鍒囨崲鎺т欢
-            var frameSwich = new FrameLayout();
-            frameSwich.Y = YY;
-            frameSwich.Height = Application.GetRealHeight(150);
-            bodyFrameLayout.AddChidren(frameSwich);
-
-            //瀹夐槻璁板綍
-            var btnLog = new ViewNormalControl(frameSwich.Width / 2, Application.GetRealHeight(100))
-            {
-                Gravity = Gravity.CenterVertical,
-                TextID = R.MyInternationalizationString.uSecurityLog,
-                TextAlignment = TextAlignment.Center
-            };
-            frameSwich.AddChidren(btnLog);
-
-            //浼犳劅鍣ㄧ姸鎬�
-            var btnSensor = new ViewNormalControl(frameSwich.Width / 2, Application.GetRealHeight(100))
-            {
-                Gravity = Gravity.CenterVertical,
-                X = frameSwich.Width / 2,
-                TextID = R.MyInternationalizationString.uSensorStatu,
-                TextColor = UserCenterColor.Current.SelectTextColor,
-                TextAlignment = TextAlignment.Center
-            };
-            frameSwich.AddChidren(btnSensor);
-
-            //绾�
-            var btnLine = new ProgressLine();
-            btnLine.Gravity = Gravity.BottomLeft;
-            frameSwich.AddChidren(btnLine);
-            btnLine.SetValue(50, false);
-
-            //妗屽竷鎺т欢
+            //妗屽竷鎺т欢
             frameLayoutDraw = new FrameLayout();
-            frameLayoutDraw.Y = frameSwich.Bottom;
-            frameLayoutDraw.Height = bodyFrameLayout.Height - frameSwich.Bottom;
-            bodyFrameLayout.AddChidren(frameLayoutDraw);
-
-            //瀹夐槻璁板綍Tab
-            btnLog.MouseUpEventHandler += (sender, e) =>
-            {
-                btnSensor.TextColor = Common.ZigbeeColor.Current.TextColor;
-                btnLog.TextColor = UserCenterColor.Current.SelectTextColor;
-                btnLine.SetValue(50);
+            frameLayoutDraw.Y = Application.GetRealHeight(181);
+            frameLayoutDraw.Height = frameBack.Height - Application.GetRealHeight(181);
+            frameBack.AddChidren(frameLayoutDraw);
+
+            //瀹夐槻璁板綍(鐐瑰嚮鑼冨洿鏈夌偣灏忥紝闇�瑕佹墿澶у畠鐨勭偣鍑昏寖鍥�)
+            var frameLog = new FrameLayoutStatuControl();
+            frameLog.UseClickStatu = false;
+            frameLog.Height = Application.GetRealHeight(123);
+            frameLog.Width = Application.GetRealWidth(273);
+            frameLog.X = Application.GetRealWidth(259);
+            frameLog.Y = Application.GetRealHeight(58);
+            frameBack.AddChidren(frameLog);
+            //鏍囬
+            var btnLog = new NormalViewControl(100, 63, true);
+            btnLog.Width = frameLog.Width;
+            btnLog.TextAlignment = TextAlignment.Center;
+            btnLog.TextID = R.MyInternationalizationString.uSecurityLog;
+            btnLog.TextColor = UserCenterColor.Current.TextGrayColor3;
+            frameLog.AddChidren(btnLog, ChidrenBindMode.BindEvent);
+            //搴曠嚎
+            var btnLogLine = new NormalViewControl(40, 10, true);
+            btnLogLine.Y = Application.GetRealHeight(86);
+            btnLogLine.X = btnLog.X + btnLog.Width / 2 - Application.GetRealWidth(40) / 2;
+            btnLogLine.Radius = (uint)Application.GetRealHeight(10) / 2;
+            btnLogLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
+            frameLog.AddChidren(btnLogLine, ChidrenBindMode.BindEvent);
+            btnLogLine.Visible = false;
+
+            //浼犳劅鍣ㄧ姸鎬�(鐐瑰嚮鑼冨洿鏈夌偣灏忥紝闇�瑕佹墿澶у畠鐨勭偣鍑昏寖鍥�)
+            var frameSensor = new FrameLayoutStatuControl();
+            frameSensor.UseClickStatu = false;
+            frameSensor.Height = frameLog.Height;
+            frameSensor.Width = frameLog.Width;
+            frameSensor.X = frameLog.Right;
+            frameSensor.Y = frameLog.Y;
+            frameBack.AddChidren(frameSensor);
+            //鏍囬
+            var btnSensor = new NormalViewControl(100, 63, true);
+            btnSensor.Width = frameSensor.Width;
+            btnSensor.TextID = R.MyInternationalizationString.uSensorStatu;
+            btnSensor.TextSize = 16;
+            btnSensor.TextAlignment = TextAlignment.Center;
+            btnSensor.TextColor = UserCenterColor.Current.TextColor2;
+            btnSensor.IsBold = true;
+            frameSensor.AddChidren(btnSensor, ChidrenBindMode.BindEvent);
+            //搴曠嚎
+            var btnSensorLine = new NormalViewControl(40, 10, true);
+            btnSensorLine.BackgroundColor = UserCenterColor.Current.TextOrangeColor;
+            btnSensorLine.Y = btnLogLine.Y;
+            btnSensorLine.X = btnSensor.X + btnSensor.Width / 2 - Application.GetRealWidth(40) / 2;
+            btnSensorLine.Radius = (uint)Application.GetRealHeight(10) / 2;
+            frameSensor.AddChidren(btnSensorLine, ChidrenBindMode.BindEvent);
+
+            //瀹夐槻璁板綍Tab
+            frameLog.ButtonClickEvent += (sender, e) =>
+            {
+                //瀛椾綋澶у皬鍜岄鑹插彉鏇�
+                btnSensor.TextColor = UserCenterColor.Current.TextGrayColor3;
+                btnSensor.TextSize = 14;
+                btnSensor.IsBold = false;
+                btnLog.TextColor = UserCenterColor.Current.TextColor2;
+                btnLog.TextSize = 16;
+                btnLog.IsBold = true;
+
+                btnLogLine.Visible = true;
+                btnSensorLine.Visible = false;
+
                 this.TabSelectIndex = 1;
 
                 //鏄剧ず瀹夐槻璁板綍
-                this.SetSafeguardLogToForm();
-            };
-
-            //浼犳劅鍣ㄧ姸鎬乀ab
-            btnSensor.MouseUpEventHandler += (sender, e) =>
-            {
-                btnSensor.TextColor = UserCenterColor.Current.SelectTextColor;
-                btnLog.TextColor = Common.ZigbeeColor.Current.TextColor;
-                btnLine.SetValue(50, false);
-                this.TabSelectIndex = 2;
+                this.SetSafeguardLogToForm();
+            };
+
+            //浼犳劅鍣ㄧ姸鎬乀ab
+            frameSensor.ButtonClickEvent += (sender, e) =>
+            {
+                //瀛椾綋澶у皬鍜岄鑹插彉鏇�
+                btnSensor.TextColor = UserCenterColor.Current.TextColor2;
+                btnSensor.TextSize = 16;
+                btnSensor.IsBold = true;
+                btnLog.TextColor = UserCenterColor.Current.TextGrayColor3;
+                btnLog.TextSize = 14;
+                btnLog.IsBold = false;
+
+                btnLogLine.Visible = false;
+                btnSensorLine.Visible = true;
+
+                this.TabSelectIndex = 2;
 
                 //鏄剧ず浼犳劅鍣ㄥ垪琛�
-                this.SetSensorDataToForm();
-            };
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栧彸涓婅鍥炬爣
-        /// </summary>
-        private void InitTopRightIcon()
-        {
-            var btnIcon = new TopLayoutMostRightView();
-            btnIcon.UnSelectedImagePath = "Item/More.png";
-            btnIcon.SelectedImagePath = "Item/MoreSelected.png";
-            topFrameLayout.AddChidren(btnIcon);
-            btnIcon.MouseUpEventHandler += (sender, e) =>
-            {
-                //鑿滃崟鎺т欢
-                var frameMenu = new TopRightMenuControl(this, 2);
-                //闃插尯鍒楄〃
-                string menu1 = Language.StringByID(R.MyInternationalizationString.uGarrisonAreaList);
-                frameMenu.AddRowMenu(menu1, (obj) =>
+                this.SetSensorDataToForm();
+            };
+        }
+
+        /// <summary>
+        /// 鍒濆鍖栧彸涓婅鍥炬爣
+        /// </summary>
+        private void InitTopRightIcon()
+        {
+            //蹇嵎鏂瑰紡
+            var btnShortCut = new MostRightIconControl(69, 69);
+            btnShortCut.UnSelectedImagePath = "Safeguard/SafetyShortcut.png";
+            btnShortCut.SelectedImagePath = "Safeguard/SafetyShortcutSelected.png";
+
+            if (UserCenterResourse.UserInfo.AuthorityNo == 1 || UserCenterResourse.UserInfo.AuthorityNo == 2)
+            {
+                //蹇嵎鏂瑰紡鍚戝乏绉诲姩
+                btnShortCut.X = Application.GetRealWidth(855);
+
+                var btnIcon = new MostRightIconControl(69, 69);
+                btnIcon.UnSelectedImagePath = "Item/More.png";
+                topFrameLayout.AddChidren(btnIcon);
+                btnIcon.InitControl();
+                btnIcon.ButtonClickEvent += (sender, e) =>
                 {
-                    var form = new GarrisonAreaListMenuForm();
-                    form.AddForm(form);
-                });
-                //瀵嗙爜璁剧疆
-                string menu2 = Language.StringByID(R.MyInternationalizationString.uPasswordSettion);
-                frameMenu.AddRowMenu(menu2, (obj) =>
+                    //鑿滃崟鎺т欢
+                    var frameMenu = new TopRightMenuControl(2, 2);
+                    //闃插尯鍒楄〃
+                    string menu1 = Language.StringByID(R.MyInternationalizationString.uGarrisonAreaList);
+                    frameMenu.AddRowMenu(menu1, "Item/GarrisonList.png", "Item/GarrisonListSelected.png", () =>
+                    {
+                        HdlCheckLogic.Current.CheckSecondarySecurity(() =>
+                        { 
+                            //楠岃瘉鎴愬姛
+                            var form = new GarrisonAreaListMenuForm();
+                            form.AddForm(); 
+                        }, 
+                        () =>
+                        {
+                            //璇峰墠寰�涓汉涓績{0}璁剧疆浜屾瀹夊叏楠岃瘉鏂瑰紡
+                            string msg = Language.StringByID(R.MyInternationalizationString.uGotoCenterAndSetSecondAuthentication).Replace("{0}", "\r\n");
+                            this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                            {
+                                var form = new UserMain.SecondAuthenticationForm();
+                                form.AddForm();
+                            });
+                        });
+                    });
+                    //瀵嗙爜璁剧疆
+                    string menu2 = Language.StringByID(R.MyInternationalizationString.uPasswordSettion);
+                    frameMenu.AddRowMenu(menu2, "Item/PswSettion.png", "Item/PswSettionSelected.png", () =>
+                    {
+                        HdlCheckLogic.Current.CheckSecondarySecurity(() =>
+                        {
+                            //楠岃瘉鎴愬姛
+                            var form = new PasswordMenuForm();
+                            form.AddForm();
+                        },
+                        () =>
+                        {
+                            //璇峰墠寰�涓汉涓績{0}璁剧疆浜屾瀹夊叏楠岃瘉鏂瑰紡
+                            string msg = Language.StringByID(R.MyInternationalizationString.uGotoCenterAndSetSecondAuthentication).Replace("{0}", "\r\n");
+                            this.ShowMassage(ShowMsgType.Confirm, msg, () =>
+                            {
+                                var form = new UserMain.SecondAuthenticationForm();
+                                form.AddForm();
+                            });
+                        });
+                    });
+                };
+            }
+
+            topFrameLayout.AddChidren(btnShortCut);
+            btnShortCut.InitControl();
+            if (UserCenterResourse.ResidenceOption.SafetyShortcut == true)
+            {
+                //浣跨敤蹇嵎鏂瑰紡
+                btnShortCut.IsSelected = true;
+            }
+            btnShortCut.ButtonClickEvent += (sender, e) =>
+            {
+                if (btnShortCut.IsSelected == true)
                 {
-                    var form = new PasswordMainForm();
-                    form.AddForm(form);
-                });
-            };
-        }
+                    //纭畾鍙栨秷涓婚〉鐨勩�屽畨闃层�嶆嵎寰勶紵
+                    this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uCancelSafetyShortcutMsg), () =>
+                    {
+                        UserCenterResourse.ResidenceOption.SafetyShortcut = false;
+                        UserCenterResourse.ResidenceOption.Save();
+                        btnShortCut.IsSelected = false;
+                        //鍙栨秷涓婚〉鐨勩�屽畨闃层�嶆嵎寰勭殑璇�,涓婚〉闇�瑕侀噸鏂板埛鏂�
+                        UserView.UserPage.Instance.RefreshForm = true;
+                    });
+                }
+                else
+                {
+                    //纭畾鍒涘缓銆屽畨闃层�嶆嵎寰勫埌涓婚〉锛�
+                    this.ShowMassage(ShowMsgType.Confirm, Language.StringByID(R.MyInternationalizationString.uCreatSafetyShortcutMsg), () =>
+                    {
+                        UserCenterResourse.ResidenceOption.SafetyShortcut = true;
+                        UserCenterResourse.ResidenceOption.Save();
+                        btnShortCut.IsSelected = true;
+                        //鍒涘缓涓婚〉鐨勩�屽畨闃层�嶆嵎寰勭殑璇�,涓婚〉闇�瑕侀噸鏂板埛鏂�
+                        UserView.UserPage.Instance.RefreshForm = true;
+                    });
+                }
+            };
+        }
 
         #endregion
 
@@ -344,7 +278,7 @@
 
         /// <summary>
         /// 鍒濆鍖栧叏閮ㄥ唴瀛樹俊鎭�
-        /// </summary>
+        /// </summary>
         private async void InitAllMemoryData()
         {
             //寮�鍚繘搴︽潯
@@ -361,7 +295,7 @@
                 this.CloseProgressBar(ShowReLoadMode.YES);
                 //缃戝叧鍥炲瓒呮椂,璇风◢鍚庡啀璇�
                 string msg = Language.StringByID(R.MyInternationalizationString.uGatewayResponseTimeOut);
-                this.ShowTip(msg);
+                this.ShowMassage(ShowMsgType.Tip, msg);
 
                 return;
             }
@@ -370,34 +304,30 @@
             this.SetProgressValue(Language.StringByID(R.MyInternationalizationString.uGarrisonInfoInittingPleaseWait));
 
             //鍒锋柊瀹夐槻淇℃伅
-            result = await this.RefreshSafeguardInfo();
+            result = await HdlSafeguardLogic.Current.ReFreshByGateway();
             if (result == false)
             {
                 //鍏抽棴杩涘害鏉�
                 this.CloseProgressBar(ShowReLoadMode.YES);
-                //缃戝叧鍥炲瓒呮椂,璇风◢鍚庡啀璇�
-                string msg = Language.StringByID(R.MyInternationalizationString.uGatewayResponseTimeOut);
-                this.ShowTip(msg);
-
                 return;
             }
-
-            //鑾峰彇褰撳墠鐨勫畨闃叉ā寮�
-            var data = await Common.LocalSafeguard.Current.GetSafetyMode();
-            if (data != null)
-            {
-                //鏍规嵁甯冮槻妯″紡锛岃缃浘鏍囩殑閫夋嫨鐘舵��
-                this.SetIconStatuByGarrisonMode((GarrisonMode)data.ModeId);
-            }
-
-            //璁剧疆鎸夐挳鍙鐘舵��
-            this.SetButtonVisible();
-
-            //璁剧疆浼犳劅鍣ㄦ暟鎹埌鐢婚潰
-            this.SetSensorDataToForm();
-
             //鍏抽棴杩涘害鏉�
             this.CloseProgressBar();
+
+            //鏁版嵁鍒濆鍖栧畬鎴愬悗
+            Application.RunOnMainThread(() =>
+            {
+                //鍒濆鍖栧ご閮ㄧ殑閭d笁涓浘鏍�
+                garrisonControl = new SafetyMasterControl();
+                garrisonControl.Y = Application.GetRealHeight(46);
+                bodyFrameLayout.AddChidren(garrisonControl);
+                garrisonControl.InitControl();
+                //鍒濆鍖朤ab鎺т欢
+                this.InitTabSwitchControl();
+
+                //璁剧疆浼犳劅鍣ㄦ暟鎹埌鐢婚潰
+                this.SetSensorDataToForm();
+            });
         }
 
         /// <summary>
@@ -420,284 +350,44 @@
             return true;
         }
 
-        /// <summary>
-        /// 鍒锋柊瀹夐槻淇℃伅
-        /// </summary>
-        /// <returns></returns>
-        private async Task<bool> RefreshSafeguardInfo()
-        {
-            int count = 0;
-            while (true)
-            {
-                //浠庣綉鍏冲埛鏂板畨闃蹭俊鎭�,鐩村埌鑳藉璇诲彇涓烘
-                var result = await Common.LocalSafeguard.Current.ReFreshByGateway(ShowErrorMode.NO);
-                if (result == true)
-                {
-                    break;
-                }
-                count++;
-                if (count == 5)
-                {
-                    return false;
-                }
-                await Task.Delay(1000);
-            }
-            return true;
-        }
-
         #endregion
 
-        #region 鈻� 甯冮槻鎾ら槻___________________________
-
-        /// <summary>
-        /// 鍦ㄥ甯冮槻
-        /// </summary>
-        private async void SetSafetyGarrisonModeInAtHome()
-        {
-            //鎵撳紑杩涘害鏉�
-            this.ShowProgressBar();
-
-            //鍦ㄥ甯冮槻
-            GarrisonMode mode = await Common.LocalSafeguard.Current.SetSafetyGarrisonByModel(GarrisonMode.AtHome);
-
-            //鍏抽棴杩涘害鏉�
-            this.CloseProgressBar();
-
-            if (mode == GarrisonMode.None)
-            {
-                return;
-            }
-            //鏍规嵁甯冮槻妯″紡锛岃缃浘鏍囩殑閫夋嫨鐘舵��
-            this.SetIconStatuByGarrisonMode(mode);
-            if (mode == GarrisonMode.RemoveGarrison)
-            {
-                return;
-            }
-
-            //濡傛灉璁剧疆鏈夊唴閮ㄩ槻鍖�
-            if (Common.LocalSafeguard.Current.IsHadInternalDefenseArea() == true)
-            {
-                //鍦ㄥ甯冮槻璁剧疆鎴愬姛
-                string msg = Language.StringByID(R.MyInternationalizationString.uSetAtHomeGarrisonSuccess);
-                this.ShowNormalMsg(msg);
-            }
-            else
-            {
-                //甯冮槻璁剧疆鎴愬姛
-                string msg = Language.StringByID(R.MyInternationalizationString.uSetGarrisonSuccess);
-                this.ShowNormalMsg(msg);
-            }
-            //娣诲姞甯冮槻涓婃姤鐨勮鎺т欢
-            this.AddSafeguardLogPushRow(null);
-        }
-
-        /// <summary>
-        /// 绂诲甯冮槻
-        /// </summary>
-        private async void SetSafetyGarrisonModeInRemoveHome()
-        {
-            //鎵撳紑杩涘害鏉�
-            this.ShowProgressBar();
-
-            //绂诲甯冮槻
-            GarrisonMode mode = await Common.LocalSafeguard.Current.SetSafetyGarrisonByModel(GarrisonMode.RemoveHome);
-
-            //鍏抽棴杩涘害鏉�
-            this.CloseProgressBar();
-
-            if (mode == GarrisonMode.None)
-            {
-                return;
-            }
-            //鏍规嵁甯冮槻妯″紡锛岃缃浘鏍囩殑閫夋嫨鐘舵��
-            this.SetIconStatuByGarrisonMode(mode);
-            if (mode == GarrisonMode.RemoveGarrison)
-            {
-                return;
-            }
-
-            //绂诲甯冮槻璁剧疆鎴愬姛
-            string msg = Language.StringByID(R.MyInternationalizationString.uSetRemoveHomeGarrisonSuccess);
-            this.ShowNormalMsg(msg);
-
-            //娣诲姞甯冮槻涓婃姤鐨勮鎺т欢
-            this.AddSafeguardLogPushRow(null);
-        }
-
-        /// <summary>
-        /// 鎾ら槻
-        /// </summary>
-        private async void RemoveSafetyGarrisonMode()
-        {
-            //鎵撳紑杩涘害鏉�
-            this.ShowProgressBar();
-
-            //鎾ら槻
-            bool result = await Common.LocalSafeguard.Current.RemoveSafetyGarrison(GarrisonMode.RemoveGarrison, false);
-
-            //鍏抽棴杩涘害鏉�
-            this.CloseProgressBar();
-
-            if (result == false)
-            {
-                return;
-            }
-            //鏍规嵁甯冮槻妯″紡锛岃缃浘鏍囩殑閫夋嫨鐘舵��
-            this.SetIconStatuByGarrisonMode(GarrisonMode.RemoveGarrison);
-
-            //鎾ら槻鎴愬姛
-            string msg = Language.StringByID(R.MyInternationalizationString.uRemoveGarrisonSuccess);
-            this.ShowNormalMsg(msg);
-
-            //娣诲姞甯冮槻涓婃姤鐨勮鎺т欢
-            this.AddSafeguardLogPushRow(null);
-        }
-
-        /// <summary>
-        /// 鏍规嵁甯冮槻妯″紡锛岃缃浘鏍囩殑閫夋嫨鐘舵��
-        /// </summary>
-        /// <param name="mode"></param>
-        private void SetIconStatuByGarrisonMode(GarrisonMode mode)
-        {
-            //鍦ㄥ甯冮槻
-            if (mode == GarrisonMode.AtHome)
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    this.btnAtHomeIconTwo.IsSelected = true;
-                    this.btnAtHomeIconThree.IsSelected = true;
-                    this.btnRemoveHomeIcon.IsSelected = false;
-                });
-            }
-            //绂诲甯冮槻
-            else if (mode == GarrisonMode.RemoveHome)
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    this.btnAtHomeIconTwo.IsSelected = false;
-                    this.btnAtHomeIconThree.IsSelected = false;
-                    this.btnRemoveHomeIcon.IsSelected = true;
-                });
-            }
-            //鎾ら槻 
-            else if (mode == GarrisonMode.RemoveGarrison)
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    this.btnAtHomeIconTwo.IsSelected = false;
-                    this.btnAtHomeIconThree.IsSelected = false;
-                    this.btnRemoveHomeIcon.IsSelected = false;
-                });
-            }
-        }
-
-        /// <summary>
-        /// 妫�娴嬫槸鍚﹀凡缁忛厤缃湁鐢ㄦ埛瀵嗙爜,濡傛灉娌℃湁閰嶇疆鏈夊瘑鐮�,鍒欒烦杞晫闈�,骞朵笖杩斿洖false
-        /// </summary>
-        /// <returns></returns>
-        private async Task<bool> CheckHadConfigureUserPsw()
-        {
-            if (UserCenterResourse.UserInfo.AuthorityNo == 3)
-            {
-                //鎴愬憳鐨勬椂鍊欙紝涓嶆娴嬭繖涓笢瑗�
-                return true;
-            }
-            var result = await Common.LocalSafeguard.Current.CheckHadConfigureUserPsw();
-            if (result == -1)
-            {
-                //鍑虹幇寮傚父
-                return false;
-            }
-            if (result == 0)
-            {
-                //璇峰厛璁剧疆鐢ㄦ埛瀵嗙爜,鍐嶆墽琛屾搷浣�
-                string msg = Language.StringByID(R.MyInternationalizationString.uPleaseConfigurePswBeforeOperation);
-                this.ShowTip(msg);
-
-                Application.RunOnMainThread(() =>
-                {
-                    var form = new PasswordMainForm();
-                    form.AddForm(form);
-                });
-                return false;
-            }
-            return true;
-        }
-
-        #endregion
-
-        #region 鈻� 鐣岄潰鍏抽棴___________________________
+        #region 鈻� 鐣岄潰鍏抽棴___________________________
 
         /// <summary>
         /// 鐢婚潰鍏抽棴
         /// </summary>
-        /// <param name="isCloseForm">鏄惁鍏抽棴鐣岄潰,false鐨勬椂鍊�,鍙細璋冪敤鍏抽棴鍑芥暟閲岄潰鐨勯檮鍔犲姛鑳�</param>
-        public override void CloseForm(bool isCloseForm = true)
+        public override void CloseFormBefore()
         {
             //绉婚櫎鍏ㄩ儴鐩戝惉浜嬩欢
             this.RemoveAllListenEvent();
 
-            base.CloseForm(isCloseForm);
-        }
-
+            base.CloseFormBefore();
+        }
+
         /// <summary>
         /// 绉婚櫎鍏ㄩ儴鐩戝惉浜嬩欢
-        /// </summary>
+        /// </summary>
         private void RemoveAllListenEvent()
         {
-            DeviceAttributeLogic.Current.RemoveEvent("SafetyManagementMainFormOnline");
-            DeviceAttributeLogic.Current.RemoveEvent("SafetyManagementMainFormAlarm");
-            DeviceAttributeLogic.Current.RemoveEvent("SafetyManagementMainFormReceivePushOnline");
-        }
-
-        #endregion
-
-        #region 鈻� 涓�鑸柟娉昣__________________________
-
-        /// <summary>
-        /// 璁剧疆甯冮槻鎸夐挳鐨勫彲瑙嗙姸鎬�
-        /// </summary>
-        public void SetButtonVisible()
-        {
-            //璁剧疆鏈夊唴閮ㄩ槻鍖�
-            if (Common.LocalSafeguard.Current.IsHadInternalDefenseArea() == true)
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    //鍦ㄥ甯冮槻鏄剧ず
-                    this.frameTableThreeIcon.Visible = true;
-                    this.frameTableTwoIcon.Visible = false;
-                });
-            }
-            else
-            {
-                Application.RunOnMainThread(() =>
-                {
-                    //鍦ㄥ甯冮槻涓嶆樉绀�
-                    this.frameTableThreeIcon.Visible = false;
-                    this.frameTableTwoIcon.Visible = true;
-                });
-            }
+            HdlGatewayReceiveLogic.Current.RemoveEvent("SafetyManagementMainFormAlarm");
+            HdlGatewayReceiveLogic.Current.RemoveEvent("SafetyManagementMainFormReceivePushOnline");
         }
 
         #endregion
 
-        #region 鈻� 浼犳劅鍣ㄧ浉鍏砡________________________
+        #region 鈻� 浼犳劅鍣ㄧ浉鍏砡________________________
 
         /// <summary>
         /// 浼犳劅鍣ㄧ殑鐘舵�佹帶浠�
         /// </summary>
-        private Dictionary<string, RowMostRightTextView> dicSensorStatuView = new Dictionary<string, RowMostRightTextView>();
-        /// <summary>
-        /// 浼犳劅鍣ㄧ殑鎶ヨ鎺т欢
-        /// </summary>
-        private Dictionary<string, RowMostRightTextView> dicSensorAlertView = new Dictionary<string, RowMostRightTextView>();
+        private Dictionary<string, SafetySensorStatuControl> dicSensorStatuView = new Dictionary<string, SafetySensorStatuControl>();
 
         #region 娣诲姞浼犳劅鍣ㄨ_
 
         /// <summary>
         /// 璁剧疆浼犳劅鍣ㄦ暟鎹埌鐢婚潰
-        /// </summary>
+        /// </summary>
         private void SetSensorDataToForm()
         {
             if (this.TabSelectIndex != 2)
@@ -708,26 +398,29 @@
             this.RemoveAllListenEvent();
 
             this.dicSensorStatuView.Clear();
-            this.dicSensorAlertView.Clear();
 
             //娣诲姞鍒楄〃鎺т欢 
             frameLayoutDraw.RemoveAll();
-            var listView = new VerticalScrolViewLayout();
+            var listView = new VerticalFrameControl(35);
             listView.Height = frameLayoutDraw.Height;
             frameLayoutDraw.AddChidren(listView);
 
-            new System.Threading.Thread(() =>
+            HdlThreadLogic.Current.RunThread(() =>
             {
                 //鑾峰彇瀹夐槻鐨勫叏閮ㄤ紶鎰熷櫒璁惧鐨勪俊鎭�
-                var dicDevice = Common.LocalSafeguard.Current.GetAllSensorDeviceInfo();
+                var dicDevice = HdlSafeguardLogic.Current.GetAllSensorDeviceInfo();
                 var listDevice = new List<CommonDevice>();
 
-                foreach (var zoneId in dicDevice.Keys)
+                HdlThreadLogic.Current.RunMain(() =>
                 {
-                    Application.RunOnMainThread(() =>
+                    foreach (var zoneId in dicDevice.Keys)
                     {
                         foreach (var Info in dicDevice[zoneId])
                         {
+                            if (this.Parent == null)
+                            {
+                                return;
+                            }
                             //娣诲姞琛�
                             this.AddSensorStatuRow(listView, zoneId, Info);
 
@@ -738,19 +431,15 @@
                                 listDevice.Add(tempDevice);
                             }
                         }
-                        //鏈�鍚庝竴涓槻鍖虹殑鏃跺�欙紝寮�鍚悇绉嶇洃瑙嗙嚎绋�
-                        if (zoneId == dicDevice.Count)
-                        {
-                            //寮�鍚紶鎰熷櫒鎶ヨ鐩戣
-                            this.StartCheckDeviceAlarm();
-
-                            //寮�鍚澶囧湪绾跨洃娴�
-                            this.StartCheckDeviceOnline(listDevice);
-                        }
-                    });
-                }
-            })
-            { IsBackground = true }.Start();
+                    }
+                    //璋冩暣鍒楄〃鎺т欢楂樺害
+                    listView.AdjustChidrenFrameHeight(listView.frameTable, Application.GetRealHeight(46));
+                    //寮�鍚紶鎰熷櫒鎶ヨ鐩戣
+                    this.StartCheckDeviceAlarm();
+                    //寮�鍚澶囧湪绾跨洃娴�
+                    this.StartCheckDeviceOnline(listDevice);
+                });
+            });
         }
 
         /// <summary>
@@ -758,8 +447,8 @@
         /// </summary>
         /// <param name="listView"></param>
         /// <param name="zoneID">闃插尯ID</param>
-        /// <param name="sensorInfo">浼犳劅鍣ㄧ殑淇℃伅</param>
-        private void AddSensorStatuRow(VerticalScrolViewLayout listView, int zoneID, Safeguard.ZoneDeviceListData sensorInfo)
+        /// <param name="sensorInfo">浼犳劅鍣ㄧ殑淇℃伅</param>
+        private void AddSensorStatuRow(VerticalFrameControl listView, int zoneID, Safeguard.ZoneDeviceListData sensorInfo)
         {
             CommonDevice device = Common.LocalDevice.Current.GetDevice(sensorInfo.MacAddr, sensorInfo.Epoint);
             if (device == null)
@@ -767,96 +456,60 @@
                 return;
             }
 
-            //璁惧鎺т欢
-            var rowDevice = new DeviceRoomViewRow(listView, device);
-            rowDevice.ChangedChidrenBindMode(rowDevice.btnIcon, ChidrenBindMode.BindEventOnly);
-            rowDevice.ChangedChidrenBindMode(rowDevice.btnDevie, ChidrenBindMode.BindEventOnly);
-            rowDevice.ChangedChidrenBindMode(rowDevice.btnRoom, ChidrenBindMode.BindEventOnly);
-            string GarrisonText = Common.LocalSafeguard.Current.GetGarrisonText(zoneID);
-            rowDevice.btnDevie.Text = rowDevice.btnDevie.Text + "(" + GarrisonText + ")";
-
-            //鐘舵��(鍒濆鍊硷細绂荤嚎)
-            var btnStatu = new RowMostRightTextView();
-            btnStatu.Gravity = Gravity.Frame;
-            btnStatu.Y = rowDevice.btnDevie.Y;
-            if (device.IsOnline == 0)
-            {
-                //绂荤嚎
-                btnStatu.TextID = R.MyInternationalizationString.uOffLine;
-                btnStatu.TextColor = UserCenterColor.Current.Gray;
-            }
-            else
-            {
-                //鍦ㄧ嚎
-                btnStatu.TextID = R.MyInternationalizationString.uOnline;
-                btnStatu.TextColor = UserCenterColor.Current.Green;
-            }
-            rowDevice.AddChidren(btnStatu, ChidrenBindMode.BindEventOnly);
-
-            //鎶ヨ淇℃伅
-            var btnAlert = new RowMostRightTextView();
-            btnAlert.TextColor = UserCenterColor.Current.Red;
-            btnAlert.Gravity = Gravity.Frame;
-            btnAlert.Y = rowDevice.btnRoom.Y;
-            rowDevice.AddChidren(btnAlert);
-            //鎵╁ぇ鎺т欢瀹藉害
-            btnAlert.Width += Application.GetRealWidth(200);
-            btnAlert.X -= Application.GetRealWidth(200);
+            //鑷畾涔変紶鎰熷櫒鐘舵�佹帶浠�
+            var frameDevice = new SafetySensorStatuControl();
+            listView.AddChidren(frameDevice);
+            frameDevice.InitControl(device);
+            //娣诲姞闃村奖鐗规晥
+            frameDevice.SetViewShadow(true);
 
             string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
-            this.dicSensorStatuView[mainkeys] = btnStatu;
-            this.dicSensorAlertView[mainkeys] = btnAlert;
-        }
-
+            this.dicSensorStatuView[mainkeys] = frameDevice;
+        }
+
         #endregion
 
-        #region 浼犳劅鍣ㄦ姤璀
+        #region 浼犳劅鍣ㄦ姤璀
 
         /// <summary>
         /// 寮�鍚紶鎰熷櫒鎶ヨ鐩戣
-        /// </summary>
+        /// </summary>
         private void StartCheckDeviceAlarm()
         {
-            DeviceAttributeLogic.Current.AddSafetyAlarmEvent("SafetyManagementMainFormAlarm", this.SetAlarmInfoByInterfaceResult);
-        }
-
-        /// <summary>
-        /// 鏍规嵁鎺ュ彛鎺ㄩ�侊紝璁剧疆鎶ヨ淇℃伅
-        /// </summary>
-        /// <param name="common"></param>
-        /// <param name="safetyDevice">鏄惁鏄畨闃茶澶囨姤璀�</param>
-        private void SetAlarmInfoByInterfaceResult(CommonDevice common, bool safetyDevice)
-        {
-            if (safetyDevice == false)
+            //鏍规嵁鎺ュ彛鎺ㄩ�侊紝璁剧疆鎶ヨ淇℃伅
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("SafetyManagementMainFormAlarm", ReceiveComandDiv.A浼犳劅鍣ㄤ笂鎶�, (device) =>
             {
-                return;
-            }
-            //娣诲姞瀹夐槻璁惧涓婃姤鐨勮鎺т欢
-            this.AddSafeguardLogPushRow(common);
+                if (HdlSafeguardLogic.Current.IsSensorDeviceExist(device) == false)
+                {
+                    //濡傛灉杩欎釜璁惧涓嶅瓨鍦ㄤ簬瀹夐槻锛屽垯涓嶅鐞�
+                    return;
+                }
 
-            string mainkey = Common.LocalDevice.Current.GetDeviceMainKeys(common);
-            if (this.dicSensorAlertView.ContainsKey(mainkey) == false)
-            {
-                return;
-            }
-            var control = this.dicSensorAlertView[mainkey];
-
-            //鑾峰彇浼犳劅鍣ㄦ姤璀︿俊鎭殑缈昏瘧鏂囨湰
-            var msgInfo = Common.LocalSafeguard.Current.GetSensorAlarmInfo(common);
-            if (msgInfo == null)
-            {
-                return;
-            }
-            Application.RunOnMainThread(() =>
-            {
-                control.Text = msgInfo.AlarmMsg;
+                //浼犳劅鍣ㄧ姸鎬�
+                string mainkey = Common.LocalDevice.Current.GetDeviceMainKeys(device);
+                if (this.dicSensorStatuView.ContainsKey(mainkey) == false)
+                {
+                    return;
+                }
+                var control = this.dicSensorStatuView[mainkey];
+                //鑾峰彇浼犳劅鍣ㄦ姤璀︿俊鎭殑缈昏瘧鏂囨湰
+                var msgInfo = HdlAlarmsLogic.Current.GetSensorAlarmInfo(device);
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    control?.SetSensoReportInfo(msgInfo);
+                });
             });
-        }
+        }
 
-        #endregion
-
-        #region 鍦ㄧ嚎鐘舵�乢
-
+        #endregion
+
+        #region 鍦ㄧ嚎鐘舵�乢
+
+        /// <summary>
+        /// 涓婁竴娆¤幏鍙栬澶囧湪绾跨殑鏃堕棿(涓嶈兘璁╁畠姣忕偣涓�娆¢兘鍘昏幏鍙栬澶囩姸鎬�)
+        /// </summary>
+        private DateTime oldGetOnlineTime = new DateTime(1900, 1, 1);
+
         /// <summary>
         /// 寮�鍚澶囧湪绾跨洃娴�
         /// </summary>
@@ -867,10 +520,19 @@
             {
                 return;
             }
-            //娣诲姞鎺ュ彈缃戝叧鑷姩鎺ㄩ�佺殑浜嬩欢
-            DeviceAttributeLogic.Current.AddReceiveDeviceOnlinePushEvent("SafetyManagementMainFormReceivePushOnline", this.ReceiveDeviceStatuPush);
+            if (oldGetOnlineTime.Year != 1900)
+            {
+                var timeValue = (DateTime.Now - oldGetOnlineTime).TotalSeconds;
+                if (timeValue < 10)
+                {
+                    //鏈�灏戣闂撮殧鍗佺,鎵嶅幓閲嶆柊鑾峰彇
+                    return;
+                }
+            }
+            oldGetOnlineTime = DateTime.Now;
+
             //浠庤澶囧垪琛ㄤ腑鑾峰彇鍦ㄧ嚎鐘舵��
-            new System.Threading.Thread(async () =>
+            HdlThreadLogic.Current.RunThread(() =>
             {
                 //棣栧厛鑾峰彇杩欎簺浼犳劅鍣ㄦ墍鍦ㄧ殑缃戝叧
                 var listWay = new List<ZbGateway>();
@@ -878,7 +540,7 @@
                 {
                     ZbGateway realWay = null;
                     //鏄惁瀛樺湪鐪熷疄鐗╃悊缃戝叧
-                    if (Common.LocalGateway.Current.GetRealGateway(ref realWay, device.CurrentGateWayId) == false)
+                    if (HdlGatewayLogic.Current.GetRealGateway(ref realWay, device.CurrentGateWayId) == false)
                     {
                         continue;
                     }
@@ -891,19 +553,27 @@
                         //鐣岄潰鍏抽棴
                         return;
                     }
-                    await Common.LocalDevice.Current.GetDeviceListFromGateway(zbway, this.ReceiveDeviceStatuPush, ShowErrorMode.NO);
+                    int statu = 0;
+                    var list = Common.LocalDevice.Current.GetDeviceListFromGateway(zbway, ref statu, false, ShowErrorMode.NO);
+                    if (statu != -1)
+                    {
+                        for (int i = 0; i < list.Count; i++)
+                        {
+                            //璁剧疆璁惧鍦ㄧ嚎鐘舵��
+                            this.ReceiveDeviceStatuPush(list[i]);
+                        }
+                    }
                 }
-            })
-            { IsBackground = true }.Start();
+            });
         }
 
         /// <summary>
-        /// 鎺ュ彈璁惧鍦ㄧ嚎鎺ㄩ��(涓嶈蹇樿鏈�鍚庡畠浼氭帹閫佷竴涓狽ull鐨勪笢瑗胯繃鏉�)
+        /// 鎺ュ彈璁惧鍦ㄧ嚎鎺ㄩ��
         /// </summary>
         /// <param name="device"></param>
         private void ReceiveDeviceStatuPush(CommonDevice device)
         {
-            if (this.Parent == null || device == null)
+            if (this.Parent == null)
             {
                 //鐣岄潰鍏抽棴
                 return;
@@ -914,69 +584,46 @@
                 string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(device);
                 if (this.dicSensorStatuView.ContainsKey(mainkeys) == true)
                 {
+                    CommonDevice Loacldevice = Common.LocalDevice.Current.GetDevice(mainkeys);
+                    if (Loacldevice == null)
+                    {
+                        return;
+                    }
+                    //鍦ㄧ嚎鐘舵�佷竴鏍风殑璇濓紝涓嶉渶瑕佸埛鏂�
+                    if (Loacldevice.IsOnline == device.IsOnline)
+                    {
+                        return;
+                    }
+                    //淇濆瓨鐘舵��
+                    Loacldevice.IsOnline = device.IsOnline;
+                    Loacldevice.ReSave();
+
                     //鍥犱负杩欐槸鎺ㄩ�佽繃鏉ョ殑锛屾垜涓嶄繚璇侀偅涓�鐬棿杩欎釜涓滆タ浼氫笉浼氳绉婚櫎
                     var control = this.dicSensorStatuView[mainkeys];
-                    CommonDevice Loacldevice = Common.LocalDevice.Current.GetDevice(mainkeys);
-                    if (Loacldevice != null)
-                    {
-                        //鍦ㄧ嚎鐘舵�佷竴鏍风殑璇濓紝涓嶉渶瑕佸埛鏂�
-                        if (Loacldevice.IsOnline == device.IsOnline)
-                        {
-                            return;
-                        }
-                        //淇濆瓨鐘舵��
-                        Loacldevice.IsOnline = device.IsOnline;
-                        Loacldevice.ReSave();
-                    }
-
                     Application.RunOnMainThread(() =>
                     {
                         //璁剧疆鎺т欢鐨勫湪绾跨姸鎬佹枃鏈晥鏋�
-                        this.SetControlOnlineStatu(control, device.IsOnline == 1);
+                        bool bolOnline = Common.LocalDevice.Current.CheckDeviceIsOnline(device);
+                        control?.SetOnlineStatu(bolOnline);
                     });
                 }
             }
         }
 
-        /// <summary>
-        /// 璁剧疆鎺т欢鐨勫湪绾跨姸鎬佹枃鏈晥鏋�
-        /// </summary>
-        /// <param name="button"></param>
-        /// <param name="IsOnline"></param>
-        private void SetControlOnlineStatu(ButtonCommon button, bool IsOnline)
-        {
-            if (IsOnline == true)
-            {
-                //鍦ㄧ嚎
-                button.TextID = R.MyInternationalizationString.uOnline;
-                button.TextColor = UserCenterColor.Current.Green;
-            }
-            else
-            {
-                //绂荤嚎
-                button.TextID = R.MyInternationalizationString.uOffLine;
-                button.TextColor = UserCenterColor.Current.Gray;
-            }
-        }
+        #endregion
 
-        #endregion
-
-        #endregion
+        #endregion
 
         #region 鈻� 瀹夐槻璁板綍鐩稿叧_______________________
 
         /// <summary>
         /// 褰撴棩鐨勫畨闃茶褰曠殑FrameLayout
         /// </summary>
-        private SpecialFrameLayout TodaySafeguardFrame = null;
+        private SafeguardLogControl TodaySafeguardFrame = null;
         /// <summary>
         /// 鍏朵粬鏃ユ湡鐨勫畨闃茶褰曠殑FrameLayout
         /// </summary>
-        private SpecialFrameLayout otherDaySafeguardFrame = null;
-        /// <summary>
-        /// 褰撴棩鐨勫畨闃茶褰曠殑琛�
-        /// </summary>
-        private List<SafeguardLogRowView> listNowDayLogRow = new List<SafeguardLogRowView>();
+        private FrameLayout otherDaySafeguardFrame = null;
 
         /// <summary>
         /// 璁剧疆瀹夐槻璁板綍鍒扮晫闈�
@@ -991,143 +638,100 @@
             this.RemoveAllListenEvent();
 
             this.dicSensorStatuView.Clear();
-            this.dicSensorAlertView.Clear();
-            this.listNowDayLogRow.Clear();
 
             frameLayoutDraw.RemoveAll();
-            var listView = new VerticalScrolViewLayout();
+            var listView = new VerticalFrameControl(0);
             listView.Height = frameLayoutDraw.Height;
             frameLayoutDraw.AddChidren(listView);
 
-            var frame = new SpecialFrameLayout(listView.Height, 0);
-            listView.AddChidren(frame);
-
-            new System.Threading.Thread(() =>
+            HdlThreadLogic.Current.RunThread(() =>
             {
-                var dicInfo = Common.LocalSafeguard.Current.GetSafeguardAlarmInfo();
+                var dicAlarm = HdlAlarmsLogic.Current.GetSafeguardAlarmInfo();
+                var dicInfo = new Dictionary<string, Dictionary<int, List<SafeguardAlarmInfo>>>();
+                //杩欓噷涓嶆樉绀哄竷闃插拰鎾ら槻鐨勪俊鎭�
+                foreach (var day in dicAlarm.Keys)
+                {
+                    var listInfo = new Dictionary<int, List<SafeguardAlarmInfo>>();
+                    foreach (var info in dicAlarm[day])
+                    {
+                        if (info.AlarmType == SafeguardAlarmType.Sensor)
+                        {
+                            //鍙浼犳劅鍣ㄧ殑
+                            if (listInfo.ContainsKey(info.ZoneId) == false)
+                            {
+                                listInfo[info.ZoneId] = new List<SafeguardAlarmInfo>();
+                            }
+                            listInfo[info.ZoneId].Add(info);
+                        }
+                    }
+                    //濡傛灉娌℃湁浼犳劅鍣ㄧ殑鎶ヨ淇℃伅,鍒欏綋涓嶅瓨鍦ㄥ鐞�
+                    if (listInfo.Count > 0)
+                    {
+                        dicInfo[day] = listInfo;
+                    }
+                }
+                dicAlarm = null;
+
                 Application.RunOnMainThread(() =>
                 {
+                    if (this.Parent == null)
+                    {
+                        return;
+                    }
                     //鍒濆鍖栧綋鏃ョ殑瀹夐槻璁板綍鎺т欢
-                    this.InitTodaySafeguardLogControl(frame, dicInfo);
+                    string nowDayKey = DateTime.Now.ToString("yyyyMMdd");
+                    Dictionary<int, List<SafeguardAlarmInfo>> nowDayData = null;
+                    if (dicInfo.ContainsKey(nowDayKey) == true)
+                    {
+                        nowDayData = dicInfo[nowDayKey];
+                        //绉婚櫎鎺夊綋鏃ヨ褰�
+                        dicInfo.Remove(nowDayKey);
+                    }
+                    //鎵ц鍒濆鍖�
+                    TodaySafeguardFrame = new SafeguardLogControl();
+                    TodaySafeguardFrame.Y = Application.GetRealHeight(10);
+                    listView.AddChidren(TodaySafeguardFrame);
+                    TodaySafeguardFrame.InitControl(nowDayKey, nowDayData);
+
                     //鍒濆鍖栧叾浠栨棩鏈熺殑瀹夐槻璁板綍鎺т欢
-                    this.InitOtherDaySafeguardLogControl(frame, dicInfo);
-
-                    //鎺т欢鍐呴儴bug瀵瑰簲
-                    frame.RemoveFromParent();
-                    listView.AddChidren(frame);
-
+                    if (dicInfo.Count > 0)
+                    {
+                        otherDaySafeguardFrame = new FrameLayout();
+                        otherDaySafeguardFrame.Height = Application.GetRealHeight(10);
+                        listView.AddChidren(otherDaySafeguardFrame);
+                        foreach (var dayText in dicInfo.Keys)
+                        {
+                            //鎵ц鍒濆鍖�
+                            var contr = new SafeguardLogControl();
+                            if (otherDaySafeguardFrame.ChildrenCount > 0)
+                            {
+                                contr.Y = otherDaySafeguardFrame.GetChildren(otherDaySafeguardFrame.ChildrenCount - 1).Bottom + Application.GetRealHeight(35);
+                            }
+                            otherDaySafeguardFrame.AddChidren(contr);
+                            contr.InitControl(dayText, dicInfo[dayText]);
+                        }
+                        //璋冩暣楂樺害
+                        otherDaySafeguardFrame.Height = otherDaySafeguardFrame.GetChildren(otherDaySafeguardFrame.ChildrenCount - 1).Bottom;
+                    }
+                    //璋冩暣妗屽竷楂樺害
+                    listView.AdjustTableHeight();
                     //寮�鍚紶鎰熷櫒鎶ヨ鐩戣
                     this.StartCheckDeviceAlarm();
                 });
-            })
-            { IsBackground = true }.Start();
+            });
         }
 
         /// <summary>
-        /// 鍒濆鍖栧綋鏃ョ殑瀹夐槻璁板綍鎺т欢
+        /// 娣诲姞瀹夐槻璁惧涓婃姤鐨勮鎺т欢(瀹夐槻鎺ㄩ�佷細璋冪敤杩欎釜涓滆タ)
         /// </summary>
-        /// <param name="frameLayout"></param>
-        /// <param name="dicInfo"></param>
-        private void InitTodaySafeguardLogControl(SpecialFrameLayout frameLayout, Dictionary<string, List<SafeguardAlarmInfo>> dicInfo)
+        /// <param name="device">璁惧瀵硅薄</param>
+        public void AddSafeguardLogPushRow(CommonDevice device)
         {
-            string nowDayKey = DateTime.Now.ToString("yyyyMMdd");
-            string month = nowDayKey.Substring(4, 2);
-            string day = nowDayKey.Substring(6, 2);
-
-            //鏃ユ湡
-            var btnDayTitle = new ViewNormalControl(800, true);
-            btnDayTitle.TextSize = 18;
-            btnDayTitle.Y = Application.GetRealHeight(30);
-            btnDayTitle.X = ControlCommonResourse.XXLeft;
-            btnDayTitle.Text = month + Language.StringByID(R.MyInternationalizationString.Month) + day + Language.StringByID(R.MyInternationalizationString.Day);
-            frameLayout.AddChidren(btnDayTitle);
-
-            //璁板綍瀹瑰櫒
-            this.TodaySafeguardFrame = new SpecialFrameLayout(100, 0);
-            this.TodaySafeguardFrame.Y = btnDayTitle.Bottom;
-            frameLayout.AddChidren(this.TodaySafeguardFrame);
-
-            //娌℃湁璁板綍
-            if (dicInfo.ContainsKey(nowDayKey) == false)
-            {
-                //浠婃棩鏃犱换浣曟姤璀﹁褰�
-                var btnView = new ViewNormalControl(800, true);
-                btnView.TextSize = 16;
-                btnView.TextAlignment = TextAlignment.Center;
-                btnView.TextID = R.MyInternationalizationString.uNowDayNotHadAlarmLog;
-                btnView.TextColor = UserCenterColor.Current.TextGrayColor;
-                btnView.Gravity = Gravity.CenterHorizontal;
-                this.TodaySafeguardFrame.AddChidren(btnView, HeightAutoMode.IncreaseOnly);
-                return;
-            }
-
-            //娣诲姞璁板綍琛�
-            foreach (var info in dicInfo[nowDayKey])
-            {
-                var row = new SafeguardLogRowView(this.TodaySafeguardFrame, info);
-                this.listNowDayLogRow.Add(row);
-            }
-            //璋冩暣鎺т欢楂樺害
-            this.TodaySafeguardFrame.IncreaseHeightByMode(null);
-            frameLayout.IncreaseHeightByMode(null);
-            //绉婚櫎褰撴棩
-            dicInfo.Remove(nowDayKey);
-        }
-
-        /// <summary>
-        /// 鍒濆鍖栧叾浠栨棩鏈熺殑瀹夐槻璁板綍鎺т欢
-        /// </summary>
-        /// <param name="frameLayout"></param>
-        /// <param name="dicInfo"></param>
-        private void InitOtherDaySafeguardLogControl(SpecialFrameLayout frameLayout, Dictionary<string, List<SafeguardAlarmInfo>> dicInfo)
-        {
-            //璁板綍瀹瑰櫒
-            this.otherDaySafeguardFrame = new SpecialFrameLayout(100, 0);
-            this.otherDaySafeguardFrame.Y = this.TodaySafeguardFrame.Bottom;
-            frameLayout.AddChidren(this.otherDaySafeguardFrame);
-            if (dicInfo.Count == 0)
+            if (this.TabSelectIndex != 1 || HdlAlarmsLogic.Current.listSafetyAlarmInfo.Count == 0)
             {
                 return;
             }
-            foreach (string dayText in dicInfo.Keys)
-            {
-                string month = dayText.Substring(4, 2);
-                string day = dayText.Substring(6, 2);
-                //鏃ユ湡
-                var btnDayTitle = new ViewNormalControl(800, true);
-                btnDayTitle.X = ControlCommonResourse.XXLeft;
-                btnDayTitle.TextSize = 18;
-                btnDayTitle.Text = month + Language.StringByID(R.MyInternationalizationString.Month) + day + Language.StringByID(R.MyInternationalizationString.Day);
-                var view = this.otherDaySafeguardFrame.GetChildren(this.otherDaySafeguardFrame.ChildrenCount - 1);
-                if (view != null)
-                {
-                    btnDayTitle.Y = view.Bottom;
-                }
-                this.otherDaySafeguardFrame.AddChidren(btnDayTitle);
-                //娣诲姞璁板綍琛�
-                foreach (var info in dicInfo[dayText])
-                {
-                    var row = new SafeguardLogRowView(this.otherDaySafeguardFrame, info);
-                }
-            }
-
-            //璋冩暣鎺т欢楂樺害
-            this.otherDaySafeguardFrame.IncreaseHeightByMode(null);
-            frameLayout.IncreaseHeightByMode(null);
-        }
-
-        /// <summary>
-        /// 娣诲姞瀹夐槻璁惧涓婃姤鐨勮鎺т欢
-        /// </summary>
-        /// <param name="device">璁惧瀵硅薄锛屼负null鏃舵槸甯冮槻</param>
-        private void AddSafeguardLogPushRow(CommonDevice device)
-        {
-            if (this.TabSelectIndex != 1 || Common.LocalSafeguard.Current.listAlarmInfo.Count == 0)
-            {
-                return;
-            }
-            var info = Common.LocalSafeguard.Current.listAlarmInfo[0];
-
+            var info = HdlAlarmsLogic.Current.listSafetyAlarmInfo[0];
             if (device != null)
             {
                 string mainkey1 = Common.LocalDevice.Current.GetDeviceMainKeys(info.DeviceAddr, info.DeviceEpoint);
@@ -1141,46 +745,52 @@
 
             Application.RunOnMainThread(() =>
             {
-                if (this.listNowDayLogRow.Count == 0)
+                if (this.TodaySafeguardFrame != null)
                 {
-                    //娓呯┖msg
-                    this.TodaySafeguardFrame.RemoveAll();
+                    //娣诲姞鎶ヨ淇℃伅
+                    var value = this.TodaySafeguardFrame.AddSafeguardAlarmInfo(info);
+                    if (value > 0)
+                    {
+                        //鍏朵粬鏃ユ湡鐨凢rameLayout寰�涓嬬Щ鍔�
+                        if (this.otherDaySafeguardFrame != null)
+                        {
+                            this.otherDaySafeguardFrame.Y += value;
+                        }
+                        //妗屽竷鎺т欢
+                        var contrTable = (FrameLayout)this.TodaySafeguardFrame.Parent;
+                        //鍒楄〃鎺т欢
+                        var listview = (VerticalFrameControl)contrTable.Parent;
+                        //璋冩暣妗屽竷楂樺害
+                        listview?.AdjustTableHeight();
+                    }
                 }
-                //娣诲姞琛�(缃《)
-                var row = new SafeguardLogRowView(null, info);
-                this.TodaySafeguardFrame.AddChidren(row);
-                row.InitControl();
-
-                int height = row.Height;
-                //鍘熸湁鎺т欢寰�涓嬬Щ鍔�
-                for (int i = 0; i < this.listNowDayLogRow.Count; i++)
-                {
-                    this.listNowDayLogRow[i].Y += height;
-                }
-                //鍙樻洿澶у皬
-                this.TodaySafeguardFrame.IncreaseHeightByMode(null);
-                //鍏朵粬鏃ユ湡寰�涓嬬Щ鍔�
-                this.otherDaySafeguardFrame.Y = this.TodaySafeguardFrame.Bottom;
-
-                //鍙樻洿鐖跺鍣ㄥぇ灏�
-                var fatherFrame = (SpecialFrameLayout)this.otherDaySafeguardFrame.Parent;
-                fatherFrame.IncreaseHeightByMode(null);
-
-                this.listNowDayLogRow.Add(row);
             });
         }
 
-        #endregion
+        /// <summary>
+        /// 闃插尯鎺ㄩ��
+        /// </summary>
+        /// <param name="garrison"></param>
+        public void GarrisonModePush(GarrisonMode garrison)
+        {
+            HdlThreadLogic.Current.RunMain(() =>
+            {
+                garrisonControl?.SetIconStatuByGarrisonMode(garrison);
+            });
+        }
 
-        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
+        #endregion
+
+        #region 鈻� 鐣岄潰閲嶆柊婵�娲讳簨浠禵__________________
 
         /// <summary>
         /// 鑷韩鐨勪笂灞傜晫闈㈠叧闂悗,瀹冭嚜韬浜庢渶涓婂眰鏃�,瑙﹀彂鐨勪簨浠�
-        /// </summary>
-        public override void FormActionAgainEvent()
+        /// </summary>
+        public override int FormActionAgainEvent()
         {
             //璁剧疆甯冮槻鎸夐挳鐨勫彲瑙嗙姸鎬�
-            this.SetButtonVisible();
+            garrisonControl?.SetButtonVisible();
+
             if (this.TabSelectIndex == 1)
             {
                 //璁剧疆瀹夐槻璁板綍鍒扮晫闈�
@@ -1191,8 +801,9 @@
                 //璁剧疆浼犳劅鍣ㄦ暟鎹埌鐢婚潰
                 this.SetSensorDataToForm();
             }
+            return 1;
         }
 
-        #endregion
-    }
-}
+        #endregion
+    }
+}

--
Gitblit v1.8.0