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/Category/Controls/DeviceRow/Base/DeviceRowCommon.cs |   61 ++++++++++++++++++++----------
 1 files changed, 40 insertions(+), 21 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DeviceRowCommon.cs b/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DeviceRowCommon.cs
index afff6e7..8a72cc1 100755
--- a/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DeviceRowCommon.cs
+++ b/ZigbeeApp/Shared/Phone/Category/Controls/DeviceRow/Base/DeviceRowCommon.cs
@@ -53,6 +53,10 @@
         /// 鍒ゆ柇鏄惁鏈夊紑鍏冲姛鑳�
         /// </summary>
         private bool isHadOpenSwitch = true;
+        /// <summary>
+        /// 褰撳墠閫夋嫨鐨勬埧闂�
+        /// </summary>
+        public Common.Room nowSelectRoom = null;
 
         #endregion
 
@@ -61,8 +65,7 @@
         /// <summary>
         /// 鏈垎閰嶇晫闈㈢殑璁惧閫夋嫨鎺т欢
         /// </summary>
-        /// <param name="i_ChidrenYaxis">瀛愭帶浠禮杞村亸绉婚噺(鐪熷疄鍊�,鏈変簺鐣岄潰闇�瑕佽繖绉嶇壒娈婃搷浣�)</param>
-        public DeviceRowCommon(int i_ChidrenYaxis = 0) : base(i_ChidrenYaxis)
+        public DeviceRowCommon()
         {
             this.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft);
             this.Width = Application.GetRealWidth(1022);
@@ -72,9 +75,11 @@
         /// 鍒濆鍖栨帶浠�
         /// </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.frameIconBackGroud = new FrameLayout();
             frameIconBackGroud.Height = this.GetPictrueRealSize(112);
@@ -95,15 +100,21 @@
             Common.LocalDevice.Current.SetDeviceIconToControl(btnDeviceIcon, i_device);
             frameIconBackGroud.AddChidren(btnDeviceIcon);
             //閲嶆柊缁戝畾浜嬩欢
-            this.frameTable.ChangedChidrenBindMode(frameIconBackGroud, ChidrenBindMode.BindEventOnly);
+            this.frameTable.ChangedChidrenBindMode(frameIconBackGroud, ChidrenBindMode.BindEvent);
 
             //璁惧鍚嶅瓧
             this.btnDeviceName = new NormalViewControl(600, 60, true);
+            if (this.device.Type == DeviceType.WindowCoveringDevice)
+            {
+                //绐楀笜鍥犱负鍙宠竟鏈変笁涓寜閽�,鎵�浠ラ渶瑕佹墍鏈夊悕瀛楃殑瀹藉害
+                this.btnDeviceName.Width = Application.GetRealWidth(360);
+            }
             btnDeviceName.X = Application.GetRealWidth(181);
-            btnDeviceName.Y = Application.GetRealHeight(16) + this.chidrenYaxis;
+            //褰撴寚瀹氬疄闄呭潗鏍囨椂,杩欓噷闇�瑕佺殑鍋忕Щ閲忎负2鍊�
+            btnDeviceName.Y = Application.GetRealHeight(16) + this.chidrenYaxis * 2;
             btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(i_device);
             btnDeviceName.SelectedTextColor = Common.ZigbeeColor.Current.GXCTextSelectedColor;
-            this.frameTable.AddChidren(btnDeviceName, ChidrenBindMode.BindEventOnly);
+            this.frameTable.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent);
             
             if (this.hadStatuFunction == false)
             {
@@ -117,10 +128,11 @@
                 //鐘舵��
                 this.btnStatu = new NormalViewControl(600, 50, true);
                 btnStatu.X = Application.GetRealWidth(181);
-                btnStatu.Y = Application.GetRealHeight(70) + this.chidrenYaxis;
+                //褰撴寚瀹氬疄闄呭潗鏍囨椂,杩欓噷闇�瑕佺殑鍋忕Щ閲忎负2鍊�
+                btnStatu.Y = Application.GetRealHeight(70) + this.chidrenYaxis * 2;
                 btnStatu.TextSize = 10;
                 btnStatu.TextColor = UserCenterColor.Current.TextGrayColor1;
-                this.frameTable.AddChidren(btnStatu, ChidrenBindMode.BindEventOnly);
+                this.frameTable.AddChidren(btnStatu, ChidrenBindMode.BindEvent);
             }
 
             //搴曠嚎
@@ -136,17 +148,17 @@
             btnSwitch.SelectedImagePath = "Item/SwitchSelected.png";
 
             //鍒嗕韩鐨勬埧闂�,鍒欎笉鑳界紪杈戝拰鍒犻櫎
-            if (HdlRoomLogic.Current.CurrentRoom.IsSharedRoom == false)
+            if (this.nowSelectRoom.IsSharedRoom == false)
             {
                 //缂栬緫
                 var btnEditor = this.AddEditorControl();
                 btnEditor.ButtonClickEvent += (sender, e) =>
                 {
                     var detailInfo = new MainPage.DeviceDetailInfoForm();
-                    detailInfo.AddForm(i_device, HdlRoomLogic.Current.CurrentRoom);
-                    detailInfo.FormCloseEvent += (curDevice, curRoom) =>
+                    detailInfo.AddForm(i_device, this.nowSelectRoom);
+                    detailInfo.FormCloseEvent += () =>
                     {
-                        if (HdlRoomLogic.Current.CurrentRoom.IsLove == true)
+                        if (this.nowSelectRoom.IsLove == true)
                         {
                             //褰撳墠鏄枩鐖辨埧闂存椂
                             if (HdlRoomLogic.Current.IsCollectInRoom(this.device) == false)
@@ -158,7 +170,8 @@
                                 return;
                             }
                         }
-                        else if (HdlRoomLogic.Current.CurrentRoom.Id != curRoom.Id)
+                        var curRoom = HdlRoomLogic.Current.GetRoomByDevice(this.device);
+                        if (curRoom == null || this.nowSelectRoom.Id != curRoom.Id)
                         {
                             //鍥炶皟鎺т欢琚Щ闄ょ殑浜嬩欢
                             this.RowNeedRemoveEvent?.Invoke();
@@ -181,7 +194,7 @@
                     {
                         //绉婚櫎鏀惰棌(涓嶇浠�涔堟儏鍐�,鏀惰棌閮借绉婚櫎)
                         HdlRoomLogic.Current.DeleteLoveDevice(i_device);
-                        if (HdlRoomLogic.Current.CurrentRoom.IsLove == false)
+                        if (this.nowSelectRoom.IsLove == false)
                         {
                             //浠庢埧闂翠腑绉婚櫎
                             HdlRoomLogic.Current.DeleteDevice(i_device);
@@ -329,7 +342,7 @@
             //濡傛灉杩欎釜鍑芥暟琚噸鍐欑殑璇�,鍒欎唬琛ㄨ繖涓澶囨湁寮�鍏冲姛鑳�
             this.isHadOpenSwitch = false;
             //榛樿鐢ㄥ湪绾跨姸鎬佹潵鍒ゆ柇
-            return i_device.IsOnline == 1;
+            return Common.LocalDevice.Current.CheckDeviceIsOnline(i_device);
         }
 
 
@@ -341,10 +354,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)
@@ -360,7 +372,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.RowNeedRemoveEvent?.Invoke();
@@ -387,7 +399,7 @@
             this.ResponeResult = 0;
             HdlThreadLogic.Current.RunThread(() =>
             {
-                int waitime = 30;
+                int waitime = 40;
                 while (waitime > 0)
                 {
                     System.Threading.Thread.Sleep(100);
@@ -397,8 +409,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(() =>

--
Gitblit v1.8.0