From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 09:07:13 +0800
Subject: [PATCH] 新云端Ver1.3

---
 ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs |  227 +++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 182 insertions(+), 45 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs
index fbc388a..ad9af3c 100755
--- a/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs
+++ b/ZigbeeApp/Shared/Phone/MainPage/Controls/DeviceCard/Base/DeviceCardCommon.cs
@@ -50,6 +50,10 @@
         /// </summary>
         private IconViewControl btnCollect = null;
         /// <summary>
+        /// 鐢垫睜鎺т欢
+        /// </summary>
+        private IconViewControl btnBattery = null;
+        /// <summary>
         /// 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋�  0:娌℃湁鑾峰彇寰楀埌  1:宸茬粡鑾峰彇寰楀埌
         /// </summary>
         private int ResponeResult = 0;
@@ -57,6 +61,10 @@
         /// 鍒ゆ柇鏄惁鏈夊紑鍏冲姛鑳�
         /// </summary>
         private bool isHadOpenSwitch = true;
+        /// <summary>
+        /// 褰撳墠閫夋嫨鐨勬埧闂�
+        /// </summary>
+        public Common.Room nowSelectRoom = null;
 
         #endregion
 
@@ -79,25 +87,27 @@
         /// 鍒濆鍖栨帶浠�
         /// </summary>
         /// <param name="i_device">鎸囧畾璁惧</param>
-        public virtual void InitControl(CommonDevice i_device)
+        /// <param name="i_nowSelectRoom">褰撳墠閫夋嫨鐨勬埧闂�(鏈夌偣鐢ㄥ)</param>
+        public virtual void InitControl(CommonDevice i_device, Common.Room i_nowSelectRoom)
         {
             this.device = i_device;
+            this.nowSelectRoom = i_nowSelectRoom;
             //鑳屾櫙鍥剧墖
             this.btnBackGroud = new PicViewControl(this.Width, this.Height, false);
             btnBackGroud.UnSelectedImagePath = "Item/FunctionCardView.png";
             btnBackGroud.SelectedImagePath = "Item/FunctionCardViewSelected.png";
             btnBackGroud.Gravity = Gravity.CenterHorizontal;
-            this.AddChidren(btnBackGroud, ChidrenBindMode.BindEventOnly);
+            this.AddChidren(btnBackGroud, ChidrenBindMode.BindEvent);
 
             //璁惧鍚嶇О鎺т欢
-            this.btnDeviceName = new NormalViewControl(320, 63, true);
+            this.btnDeviceName = new NormalViewControl(360, 63, true);
             btnDeviceName.X = HdlControlLogic.Current.GetPictrueRealSize(40);
             btnDeviceName.Y = HdlControlLogic.Current.GetPictrueRealSize(17);
             btnDeviceName.TextSize = 16;
             btnDeviceName.TextColor = UserCenterColor.Current.TextGrayColor1;
             btnDeviceName.SelectedTextColor = UserCenterColor.Current.White;
-            btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device);
-            this.AddChidren(btnDeviceName, ChidrenBindMode.BindEventOnly);
+            btnDeviceName.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(i_device);
+            this.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent);
 
             //鏀堕泦鎺т欢
             this.btnCollect = new IconViewControl(107);
@@ -115,7 +125,7 @@
                 {
                     //鍙栨秷鏀惰棌
                     HdlRoomLogic.Current.DeleteLoveDevice(i_device);
-                    if (HdlRoomLogic.Current.CurrentRoom.IsLove == true)
+                    if (this.nowSelectRoom.IsLove == true)
                     {
                         //濡傛灉褰撳墠鎴块棿鏄垜鐨勫枩鐖辩殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑浜嬩欢
                         this.CardNeedRemoveEvent?.Invoke();
@@ -136,22 +146,22 @@
             fraDeviceRound.X = HdlControlLogic.Current.GetPictrueRealSize(44);
             fraDeviceRound.Y = HdlControlLogic.Current.GetPictrueRealSize(101);
             fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor;
-            this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEventOnly);
+            this.AddChidren(fraDeviceRound, ChidrenBindMode.BindEvent);
 
             //璁惧鍥炬爣鎺т欢
             this.btnDeviceIcon = new IconViewControl(86);
             btnDeviceIcon.Gravity = Gravity.Center;
             fraDeviceRound.AddChidren(btnDeviceIcon);
-            this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEventOnly);
+            this.ChangedChidrenBindMode(fraDeviceRound, ChidrenBindMode.BindEvent);
 
             //鐘舵�佹枃鏈帶浠�
-            this.btnStatu = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(300), HdlControlLogic.Current.GetPictrueRealSize(63), false);
+            this.btnStatu = new NormalViewControl(HdlControlLogic.Current.GetPictrueRealSize(400), HdlControlLogic.Current.GetPictrueRealSize(63), false);
             btnStatu.X = HdlControlLogic.Current.GetPictrueRealSize(46);
             btnStatu.Y = HdlControlLogic.Current.GetPictrueRealSize(236);
             btnStatu.TextColor = UserCenterColor.Current.TextColor1;
             btnStatu.SelectedTextColor = Common.ZigbeeColor.Current.GXCTextSelectedColor;
             btnStatu.IsBold = true;
-            this.AddChidren(btnStatu, ChidrenBindMode.BindEventOnly);
+            this.AddChidren(btnStatu, ChidrenBindMode.BindEvent);
 
             //寮�鍏虫帶浠�(涓嶅姞鍏ョ埗鎺т欢涓�)
             this.btnSwitch = new PicViewControl(109, 104);
@@ -159,6 +169,21 @@
             btnSwitch.Y = HdlControlLogic.Current.GetPictrueRealSize(202);
             btnSwitch.UnSelectedImagePath = "Item/Switch1.png";
             btnSwitch.SelectedImagePath = "Item/SwitchSelected1.png";
+
+            //鐢垫睜鎺т欢
+            if (this.device.Type == DeviceType.IASZone)
+            {
+                this.btnBattery = new IconViewControl(69);
+                btnBattery.X = HdlControlLogic.Current.GetPictrueRealSize(348);
+                btnBattery.Y = HdlControlLogic.Current.GetPictrueRealSize(236);
+                btnBattery.UnSelectedImagePath = "Item/Battery.png";
+                btnBattery.SelectedImagePath = "Item/BatterySelected.png";
+                this.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
+                if (this.device.IsBatteryDown == false)
+                {
+                    btnBattery.Visible = false;
+                }
+            }
 
             //鍒锋柊淇℃伅
             this.RefreshControlInfo(i_device);
@@ -194,9 +219,9 @@
                 btnCollect.IsSelected = collect;
             }
             //璁惧鍥炬爣涔熷埛鏂�
-            Common.LocalDevice.Current.SetDeviceIconToControl2(btnDeviceIcon, i_device);
+            HdlDeviceCommonLogic.Current.SetDeviceIconToControl2(btnDeviceIcon, i_device);
             //鍚嶅瓧鍒锋柊
-            this.btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device);
+            this.btnDeviceName.Text = HdlDeviceCommonLogic.Current.GetDeviceEpointName(i_device);
             //妫�娴嬭澶囨槸鍚︽槸鎵撳紑鐘舵��
             bool isOpen = this.CheckIsOpenStatu(i_device);
             if (this.isHadOpenSwitch == true && i_device.HadReadDeviceStatu == false)
@@ -205,6 +230,13 @@
                 //绛夊緟缃戝叧鍥炲鍚庝細閲嶆柊鍒锋柊,涓嶇劧涓�鐩存槸鍏抽棴鐘舵��
                 isOpen = false;
             }
+            //濡傛灉鏄紶鎰熷櫒绫�,鍒欓粯璁ゆ槸鍏崇殑鏁堟灉
+            if (this.device.Type == DeviceType.PMSensor || this.device.Type == DeviceType.IASZone
+                || this.device.Type == DeviceType.TemperatureSensor)
+            {
+                isOpen = false;
+            }
+
             this.SetCardOpenStatu(isOpen);
         }
 
@@ -215,36 +247,15 @@
         public void SetCardOpenStatu(bool isOpen)
         {
             //璁惧鐘舵�佸繀椤诲埛鏂�
-            this.btnStatu.Text = HdlDeviceOtherLogic.Current.GetDeviceStatu(this.device);
-
-            if (this.btnBackGroud.IsSelected == isOpen)
-            {
-                //鐘舵�佷竴鏍�,鍒欎笉闇�瑕佸鐞�
-                return;
-            }
-            //鑳屾櫙鍥剧墖
-            this.btnBackGroud.IsSelected = isOpen;
-            //璁惧鍚嶇О鎺т欢
-            this.btnDeviceName.IsSelected = isOpen;
-            this.btnDeviceName.IsBold = isOpen;
-            //璁惧鐨勮儗鏅渾鍦堝浘
-            if (isOpen == true)
-            {
-                fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionBackgroundColor;
-            }
-            else
-            {
-                fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor;
-            }
-            //璁惧鍥炬爣鎺т欢
-            this.btnDeviceIcon.IsSelected = isOpen;
-            //鐘舵�佹枃鏈帶浠�
-            this.btnStatu.IsSelected = isOpen;
+            this.btnStatu.Text = HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device);
             //寮�鍏虫帶浠�
-            if (btnSwitch != null)
+            if (btnSwitch != null && this.btnSwitch.IsSelected != isOpen)
             {
                 this.btnSwitch.IsSelected = isOpen;
             }
+
+            //鍒囨崲鍗$墖鐘舵�佺壒鏁�
+            this.SwitchCardStatuAppeal(isOpen);
         }
 
         /// <summary>
@@ -296,7 +307,7 @@
             //濡傛灉杩欎釜鍑芥暟琚噸鍐欑殑璇�,鍒欎唬琛ㄨ繖涓澶囨湁寮�鍏冲姛鑳�
             this.isHadOpenSwitch = false;
             //榛樿鐢ㄥ湪绾跨姸鎬佹潵鍒ゆ柇
-            return i_device.IsOnline == 1;
+            return HdlDeviceCommonLogic.Current.CheckDeviceIsOnline(i_device);
         }
 
 
@@ -308,10 +319,9 @@
         /// 娣卞害鍗$墖淇℃伅鐨勮繑鍥炰簨浠�(搴曞眰涓撶敤)
         /// </summary>
         /// <param name="device">璁惧</param>
-        /// <param name="room">鎴块棿</param>
-        public void CardDetailInfoBackEvent(CommonDevice device, Common.Room room)
+        public void CardDetailInfoBackEvent(CommonDevice device)
         {
-            if (HdlRoomLogic.Current.CurrentRoom.IsLove == true)
+            if (this.nowSelectRoom.IsLove == true)
             {
                 //濡傛灉鏄富椤靛彇娑堟悳钘忕殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟
                 if (HdlRoomLogic.Current.IsCollectInRoom(device) == false)
@@ -324,7 +334,7 @@
             {
                 //濡傛灉杩欎釜璁惧鏀瑰彉浜嗘埧闂寸殑璇�,鍥炶皟鍗$墖琚垹闄ょ殑鍑芥暟
                 var nowRoom = HdlRoomLogic.Current.GetRoomByDevice(device);
-                if (nowRoom == null || nowRoom.Id != HdlRoomLogic.Current.CurrentRoom.Id)
+                if (nowRoom == null || nowRoom.Id != this.nowSelectRoom.Id)
                 {
                     this.CardNeedRemoveEvent?.Invoke();
                     return;
@@ -356,7 +366,7 @@
 
             HdlThreadLogic.Current.RunThread(() =>
             {
-                int waitime = 30;
+                int waitime = 40;
                 while (waitime > 0)
                 {
                     System.Threading.Thread.Sleep(100);
@@ -366,8 +376,15 @@
                         break;
                     }
                     waitime--;
+                    //2绉掔殑鏃跺��,杩樻槸鎺ュ彈涓嶅埌鐨勮瘽,寮哄埗鍐嶆鍒锋柊璁惧鐘舵��
+                    if (waitime == 20)
+                    {
+                        //浠庢柊鍙戦�佽幏鍙栬澶囩殑鐘舵��(寮哄埗)
+                        this.device.HadReadDeviceStatu = false;
+                        this.SendStatuComand();
+                    }
                 }
-                if (waitime <= 0)
+                if (waitime <= 0 && this.Parent != null)
                 {
                     //娌℃湁鑾峰彇寰楀埌缁撴灉
                     HdlThreadLogic.Current.RunMain(() =>
@@ -391,6 +408,43 @@
             this.ResponeResult = 1;
         }
 
+        /// <summary>
+        /// 鎺ユ敹缃戝叧鍥炲鐨勭姸鎬�(true:宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍥炲 false:杩樻病鏈夋帴鏀跺埌缃戝叧鍥炲)
+        /// </summary>
+        /// <returns></returns>
+        public bool ReceiveResponeResultStatu()
+        {
+            return this.ResponeResult == 1;
+        }
+
+        #endregion
+
+        #region 鈻� 鏄剧ず浣庣數閲廮________________________
+
+        /// <summary>
+        /// 鍒锋柊鐢垫睜鐢甸噺鐘舵��
+        /// </summary>
+        public void RefreshBatteryStatu()
+        {
+            if (this.btnBattery == null) { return; }
+            if (this.device.IsBatteryDown == true)
+            {
+                //鐢甸噺浣�,鏄剧ず鍥炬爣
+                if (this.btnBattery.Visible == false)
+                {
+                    this.btnBattery.Visible = true;
+                }
+            }
+            else
+            {
+                //鐢甸噺瓒冲,闅愯棌鍥炬爣
+                if (this.btnBattery.Visible == true)
+                {
+                    this.btnBattery.Visible = false;
+                }
+            }
+        }
+
         #endregion
 
         #region 鈻� 涓�鑸柟娉昣__________________________
@@ -416,6 +470,89 @@
 
         #endregion
 
+        #region 鈻� 鍗$墖闂儊鐗规晥_______________________
+
+        /// <summary>
+        /// 鏄惁澶勪簬鐗规晥涓�
+        /// </summary>
+        private bool isAppeal = false;
+        /// <summary>
+        /// 寮�鍚崱鐗囬棯鐑佺壒鏁�
+        /// </summary>
+        public void StartCardLightAppeal()
+        {
+            //璁惧鐘舵�佸繀椤诲埛鏂�
+            this.btnStatu.Text = HdlDeviceCommonLogic.Current.GetMainPageDeviceStatuText(this.device);
+
+            if (this.isAppeal == true) { return; }
+            this.isAppeal = true;
+
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //闂儊5绉�,闂撮殧400姣
+                int count = 5000 / 400;
+                bool isOpen = false;
+                while (this.Parent != null && count >= 0)
+                {
+                    //闂儊鐗规晥
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        isOpen = !isOpen;
+                        this.SwitchCardStatuAppeal(isOpen);
+                    });
+                    System.Threading.Thread.Sleep(400);
+                    count--;
+                }
+                if (this.Parent != null && isOpen == false)
+                {
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        //缁撴潫鏃�,榛樿涓烘墦寮�鐗规晥
+                        this.SwitchCardStatuAppeal(true);
+                    }, ShowErrorMode.NO);
+                }
+                this.isAppeal = false;
+
+            }, ShowErrorMode.NO);
+        }
+
+        /// <summary>
+        /// 鍒囨崲鍗$墖鐘舵�佺壒鏁�
+        /// </summary>
+        public void SwitchCardStatuAppeal(bool isOpen)
+        {
+            if (this.btnBackGroud.IsSelected == isOpen)
+            {
+                //鐘舵�佷竴鏍�,鍒欎笉闇�瑕佸鐞�
+                return;
+            }
+            //鑳屾櫙鍥剧墖
+            this.btnBackGroud.IsSelected = isOpen;
+            //璁惧鍚嶇О鎺т欢
+            this.btnDeviceName.IsSelected = isOpen;
+            this.btnDeviceName.IsBold = isOpen;
+            //璁惧鐨勮儗鏅渾鍦堝浘
+            if (isOpen == true)
+            {
+                fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionBackgroundColor;
+            }
+            else
+            {
+                fraDeviceRound.BackgroundColor = Common.ZigbeeColor.Current.GXCForFunctionUnSelectedBackgroundColor;
+            }
+            //璁惧鍥炬爣鎺т欢
+            this.btnDeviceIcon.IsSelected = isOpen;
+            //鐘舵�佹枃鏈帶浠�
+            this.btnStatu.IsSelected = isOpen;
+            //鐢垫睜鎺т欢
+            if (this.btnBattery != null && this.btnBattery.Visible == true)
+            {
+                this.btnBattery.IsSelected = isOpen;
+            }
+        }
+
+        #endregion
+
         #region 鈻� 鎺т欢鎽ф瘉___________________________
 
         /// <summary>

--
Gitblit v1.8.0