From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001
From: hxb <hxb@hdlchina.com.cn>
Date: 星期二, 30 八月 2022 09:37:38 +0800
Subject: [PATCH] 合并了IOS的代码

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs |  131 ++++++++++++++++++++++++++++---------------
 1 files changed, 85 insertions(+), 46 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
index 6b7a615..867258a 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitListForm.cs
@@ -24,6 +24,10 @@
         /// 婵�娲荤殑璁惧鍦板潃
         /// </summary>
         private string actionDeviceKeys = null;
+        /// <summary>
+        /// 鎺ユ敹鍥炲鐨勭鐐�
+        /// </summary>
+        private HashSet<int> listReceivePoint = new HashSet<int>();
 
         #endregion
 
@@ -36,6 +40,11 @@
         public void ShowForm(string i_diviceMac)
         {
             this.listDevice = Common.LocalDevice.Current.GetDevicesByMac(i_diviceMac);
+            //鏀堕泦鍏ㄩ儴绔偣
+            foreach (var device in this.listDevice)
+            {
+                listReceivePoint.Add(device.DeviceEpoint);
+            }
             //璁剧疆澶撮儴淇℃伅
             base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uIndoorUnitSettion));
 
@@ -57,7 +66,7 @@
 
             var frameTemp = new FrameLayout();
             frameTemp.Height = Application.GetRealHeight(69);
-            listView.AddChidrenFrame(frameTemp);
+            listView.AddChidren(frameTemp);
 
             HdlThreadLogic.Current.RunMainInThread(() =>
             {
@@ -68,7 +77,7 @@
                 }
                 var frameTemp2 = new FrameLayout();
                 frameTemp2.Height = Application.GetRealHeight(29);
-                listView.AddChidrenFrame(frameTemp2);
+                listView.AddChidren(frameTemp2);
 
                 //鏁版嵁鎺ユ敹
                 this.StartReceiveDataEvent();
@@ -86,21 +95,21 @@
         {
             var rowInfo = new RowControlInfo();
 
-            var frameTable = new FrameLayoutControl();
+            var frameTable = new FrameLayoutStatuControl();
             frameTable.UseClickStatu = false;
             frameTable.Width = Application.GetRealWidth(994);
             frameTable.Height = Application.GetRealHeight(337);
             frameTable.BackgroundImagePath = "Item/IndoorUnitGround.png";
             frameTable.Gravity = Gravity.CenterHorizontal;
-            listView.AddChidrenFrame(frameTable);
+            listView.AddChidren(frameTable);
 
             //璁惧鍥炬爣
             var btnIconBack = new FrameLayout();
             btnIconBack.X = Application.GetRealWidth(46);
             btnIconBack.Y = Application.GetRealHeight(43);
-            btnIconBack.Height = Application.GetMinRealAverage(112);
-            btnIconBack.Width = Application.GetMinRealAverage(112);
-            btnIconBack.Radius = (uint)Application.GetMinRealAverage(112) / 2;
+            btnIconBack.Height = this.GetPictrueRealSize(112);
+            btnIconBack.Width = this.GetPictrueRealSize(112);
+            btnIconBack.Radius = (uint)this.GetPictrueRealSize(112) / 2;
             btnIconBack.BackgroundColor = 0xfff5f6fa;
             frameTable.AddChidren(btnIconBack, ChidrenBindMode.NotBind);
             rowInfo.btnIconBack = btnIconBack;
@@ -109,15 +118,15 @@
             btnIcon.Gravity = Gravity.Center;
             Common.LocalDevice.Current.SetDeviceIconToControl(btnIcon, device);
             btnIconBack.AddChidren(btnIcon);
-            frameTable.ChangedChidrenBindMode(btnIconBack, ChidrenBindMode.BindEventOnly);
+            frameTable.ChangedChidrenBindMode(btnIconBack, ChidrenBindMode.BindEvent);
             rowInfo.btnIcon = btnIcon;
 
             //璁惧鍚嶇О
-            var btnDeviceName = new NormalViewControl(400, 60, true);
+            var btnDeviceName = new NormalViewControl(700, 60, true);
             btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device);
             btnDeviceName.X = Application.GetRealWidth(193);
             btnDeviceName.Y = Application.GetRealHeight(45);
-            frameTable.AddChidren(btnDeviceName, ChidrenBindMode.BindEventOnly);
+            frameTable.AddChidren(btnDeviceName, ChidrenBindMode.BindEvent);
             rowInfo.btnDeviceName = btnDeviceName;
             //鎴块棿
             var btnRoom = new NormalViewControl(400, 50, true);
@@ -125,17 +134,27 @@
             btnRoom.Y = btnDeviceName.Bottom + Application.GetRealHeight(12);
             btnRoom.TextSize = 12;
             btnRoom.TextColor = UserCenterColor.Current.TextGrayColor1;
-            btnRoom.Text = Common.Room.CurrentRoom.GetRoomNameByDevice(device);
-            frameTable.AddChidren(btnRoom, ChidrenBindMode.BindEventOnly);
+            btnRoom.Text = HdlRoomLogic.Current.GetRoomNameByDevice(device);
+            frameTable.AddChidren(btnRoom, ChidrenBindMode.BindEvent);
             rowInfo.btnRoom = btnRoom;
             //鎽勬皬搴�
             var btnValue = new NormalViewControl(300, 60, true);
             btnValue.Y = Application.GetRealHeight(58);
             btnValue.X = frameTable.Width - Application.GetRealWidth(300 + 58);
             btnValue.TextAlignment = TextAlignment.CenterRight;
-            btnValue.TextID = R.MyInternationalizationString.uGetting;
-            frameTable.AddChidren(btnValue, ChidrenBindMode.BindEventOnly);
+            frameTable.AddChidren(btnValue, ChidrenBindMode.BindEvent);
             rowInfo.btnValue = btnValue;
+            //瀹ゅ唴娓╁害
+            if (device.currentLocalTemperature == 0)
+            {
+                //0鈩�
+                btnValue.Text = "0.0鈩�";
+            }
+            else
+            {
+                btnValue.Text = device.currentLocalTemperature + ".0鈩�";
+            }
+
             //璀﹀憡鍥炬爣
             var btnWarningIcon = new IconViewControl(69);
             btnWarningIcon.X = btnIconBack.X;
@@ -164,28 +183,46 @@
             {
                 if (btnSwitch.IsSelected == false)
                 {
-                    //鎵撳紑绌鸿皟
-                    var result = await HdlDeviceAirConditionerLogic.Current.OpenAirConditioner(device);
-                    if (result == false)
+                    //濡傛灉涓嶆槸铏氭嫙浣忓畢鐨勮瘽
+                    if (Common.Config.Instance.Home.IsVirtually == false)
                     {
-                        return;
+                        //鎵撳紑绌鸿皟
+                        var result = await HdlDeviceAirConditionerLogic.Current.OpenAirConditioner(device);
+                        if (result == false)
+                        {
+                            return;
+                        }
                     }
                     btnIcon.IsSelected = true;
                     btnIconBack.BackgroundColor = 0xfffef1ed;
                 }
                 else
                 {
-                    //鍏抽棴绌鸿皟
-                    var result = await HdlDeviceAirConditionerLogic.Current.CloseAirConditioner(device);
-                    if (result == false)
+                    //濡傛灉涓嶆槸铏氭嫙浣忓畢鐨勮瘽
+                    if (Common.Config.Instance.Home.IsVirtually == false)
                     {
-                        return;
+                        //鍏抽棴绌鸿皟
+                        var result = await HdlDeviceAirConditionerLogic.Current.CloseAirConditioner(device);
+                        if (result == false)
+                        {
+                            return;
+                        }
                     }
                     btnIcon.IsSelected = false;
                     btnIconBack.BackgroundColor = 0xfff5f6fa;
                 }
                 btnSwitch.IsSelected = !btnSwitch.IsSelected;
+                //濡傛灉鏄櫄鎷熶綇瀹呯殑璇�
+                if (Common.Config.Instance.Home.IsVirtually == true)
+                {
+                    device.currentSystemMode = btnSwitch.IsSelected == true ? 3 : 0;
+                }
             };
+            //濡傛灉鏄睍绀烘ā鏉跨殑璇�
+            if (Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                btnSwitch.CanClick = false;
+            }
 
             frameTable.ButtonClickEvent += (sender, e) =>
             {
@@ -207,25 +244,31 @@
         /// </summary>
         private void SetReadAttributeComand()
         {
+            //濡傛灉鏄櫄鎷熶綇瀹呮垨鑰呭睍绀烘ā鏉跨殑璇�
+            if (Common.Config.Instance.Home.IsShowTemplate == true || Common.Config.Instance.Home.IsVirtually == true)
+            {
+                return;
+            }
             HdlThreadLogic.Current.RunThread(() =>
             {
-                for (int i = 0; i < listDevice.Count; i++)
+                while (this.listReceivePoint.Count > 0 && this.Parent != null)
                 {
-                    if (i != 0 && i % 5 == 0)
+                    for (int i = 0; i < listDevice.Count; i++)
                     {
-                        //璇诲彇5涓悗锛岄棿闅斾竴娈垫椂闂�
-                        System.Threading.Thread.Sleep(200);
                         if (this.Parent == null)
                         {
                             return;
                         }
+                        //宸茬粡鍙戦�佽繃浜�,灏变笉鐢ㄥ啀鍙戦��
+                        if (this.listReceivePoint.Contains(listDevice[i].DeviceEpoint) == true)
+                        {
+                            //璇诲彇鐘舵��
+                            HdlDeviceAttributeLogic.Current.SendThermostatStatuComand(listDevice[i]);
+                            System.Threading.Thread.Sleep(200);
+                        }
                     }
-                    //鑾峰彇褰撳墠瀹ゆ俯
-                    ((AC)listDevice[i]).ReadLocalTemperature();
-                    //鑾峰彇寮�鍏崇姸鎬�(澶勪簬鏌愮宸ヤ綔鐘舵��,鍗充负鎵撳紑鐘舵��)
-                    ((AC)listDevice[i]).ReadSystemMode();
-                    //娓呮礂婊ょ綉
-                    listDevice[i].ReadAttri(Cluster_ID.Thermostat, AttriButeId.FilterCleaningStatus);
+                    //3绉掑悗鍐嶆寰幆
+                    System.Threading.Thread.Sleep(3000);
                 }
             });
         }
@@ -246,6 +289,13 @@
                 {
                     return;
                 }
+                var localDevice = Common.LocalDevice.Current.GetDevice(mainkeys);
+                if (localDevice == null)
+                {
+                    return;
+                }
+                //宸茬粡鎺ユ敹鍒版暟鎹�,鍒欑Щ闄ょ鐐�
+                this.listReceivePoint.Remove(device.DeviceEpoint);
 
                 var rowInfo = dicControl[mainkeys];
                 for (int i = 0; i < device.DeviceStatusReport.AttriBute.Count; i++)
@@ -256,25 +306,14 @@
                         HdlThreadLogic.Current.RunMain(() =>
                         {
                             //瀹ゅ唴娓╁害
-                            if (data.AttriButeData == 0)
+                            if (((AC)localDevice).currentLocalTemperature == 0)
                             {
                                 //0鈩�
                                 rowInfo.btnValue.Text = "0.0鈩�";
                             }
-                            else if (data.AttriButeData > 32767)
-                            {
-                                //璐熸暟(鐗规畩澶勭悊)
-                                string strValue = (data.AttriButeData - 65536).ToString();
-                                //灏忔暟鐐归渶瑕佷竴浣�
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
-                            }
                             else
                             {
-                                //灏忔暟鐐归渶瑕佷竴浣�
-                                string strValue = data.AttriButeData.ToString();
-                                strValue = strValue.Substring(0, strValue.Length - 1);
-                                rowInfo.btnValue.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�";
+                                rowInfo.btnValue.Text = ((AC)localDevice).currentLocalTemperature + ".0鈩�";
                             }
                         });
                     }
@@ -340,7 +379,7 @@
                 {
                     var contr = dicControl[this.actionDeviceKeys];
                     contr.btnDeviceName.Text = Common.LocalDevice.Current.GetDeviceEpointName(device);
-                    contr.btnRoom.Text = Common.Room.CurrentRoom.GetRoomNameByDevice(device);
+                    contr.btnRoom.Text = HdlRoomLogic.Current.GetRoomNameByDevice(device);
                 }
             }
             this.actionDeviceKeys = null;

--
Gitblit v1.8.0