From c1de48884fa145a16a0f8bcee93274dcfaa0ff82 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期四, 07 五月 2020 10:40:28 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev-tzy' into dev-2020xm

---
 ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs |  173 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 103 insertions(+), 70 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
old mode 100644
new mode 100755
index 913be70..5784b2d
--- a/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
+++ b/ZigbeeApp/Shared/Phone/Category/CategoryMainForm.cs
@@ -155,7 +155,7 @@
                 frameSwitchBack.AddChidren(btnFloorName);
                 btnFloorName.ButtonClickEvent += (sender, e) =>
                 {
-                    var floors = new Device.Category.SelectFloor();
+                    var floors = new SelectFloorForm();
                     AddChidren(floors);
                     floors.Init(580, 330, Direction.Right);
                     floors.changeFloor = true;
@@ -248,7 +248,8 @@
                 //鑷姩鍖�
                 else if (UserCenterResourse.ResidenceOption.CategoryPageSwitchIndex == 2)
                 {
-                    this.ShowAutotion();
+                    //鑷姩鍖栧姛鑳戒唬鐮佸叆鍙�
+                    Device.Logic.SkipView.ShowAutotionView(functionSceneAutoBodyView);
                     //闅愯棌妤煎眰
                     floorVisible = false;
                     //鏄剧ず鍙充笂瑙掔殑鍔犲彿
@@ -315,7 +316,7 @@
             functionSceneBodyView.Height = functionSceneAutoBodyView.Height - roomSwitchContr.Bottom;
             functionSceneAutoBodyView.AddChidren(functionSceneBodyView);
 
-            //鎵ц鍒濆鍖� 
+            //鎵ц鍒濆鍖�
             roomSwitchContr.InitControl();
         }
 
@@ -438,8 +439,8 @@
             var noFunction = new Button()
             {
                 Y = Application.GetRealHeight(320),
-                Width = Application.GetMinRealAverage(757),
-                Height = Application.GetMinRealAverage(435),
+                Width = this.GetPictrueRealSize(757),
+                Height = this.GetPictrueRealSize(435),
                 UnSelectedImagePath = "Item/NoFunction.png",
                 Gravity = Gravity.CenterHorizontal
             };
@@ -476,14 +477,14 @@
             var listDevice = new List<CommonDevice>();
             for (int i = 0; i < rowInfo.listDeviceKeys.Count; i++)
             {
-                var device = LocalDevice.Current.GetDevice(rowInfo.listDeviceKeys[i]);
-
-                //鑾峰彇璁惧绫诲瀷鐨�
-                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
-                //鏂伴闈㈡澘涓嬬殑鍥炶矾涓嶆樉绀猴紝锛堝鏂伴銆佹俯/婀垮害浼犳劅鍣ㄥ垯涓嶆樉绀猴級
-                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
-                {
-                    continue;
+                var device = LocalDevice.Current.GetDevice(rowInfo.listDeviceKeys[i]);
+
+                //鑾峰彇璁惧绫诲瀷鐨�
+                var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                //鏂伴闈㈡澘涓嬬殑鍥炶矾涓嶆樉绀猴紝锛堝鏂伴銆佹俯/婀垮害浼犳劅鍣ㄥ垯涓嶆樉绀猴級
+                if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                {
+                    continue;
                 }
 
                 if (device != null)
@@ -506,56 +507,56 @@
                     //绐楀笜
                     if (device.Type == DeviceType.WindowCoveringDevice)
                     {
-                        cardContr = new Controls.DeviceCurtainRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceCurtainRowControl();
                     }
                     //缁х數鍣�
                     else if (device.Type == DeviceType.OnOffOutput)
                     {
-                        cardContr = new Controls.DeviceRelayRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceRelayRowControl();
                     }
                     //绌烘皵寮�鍏�
                     else if (device.Type == DeviceType.AirSwitch)
                     {
-                        cardContr = new Controls.DeviceAirSwitchRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceAirSwitchRowControl();
                     }
                     //绌鸿皟
                     else if (device.Type == DeviceType.Thermostat)
                     {
-                        cardContr = new Controls.DeviceAcRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceAcRowControl();
                     }
                     // 鏂伴
                     else if (device.Type == DeviceType.FreshAir)
                     {
-                        cardContr = new Controls.DeviceAcRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceFreshAirRowControl();
                     }
                     //褰╃伅(璋冨厜鍣�)
                     else if (device.Type == DeviceType.DimmableLight)
                     {
-                        cardContr = new Controls.DeviceColorLightRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceColorLightRowControl();
                     }
                     //浼犳劅鍣�
                     else if (device.Type == DeviceType.IASZone)
                     {
-                        cardContr = new Controls.DeviceSensorRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceSensorRowControl();
                     }
                     //娓╂箍搴�
                     else if (device.Type == DeviceType.TemperatureSensor)
                     {
-                        cardContr = new Controls.DeviceTemperatureRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceTemperatureRowControl();
                     }
                     //闂ㄩ攣
                     else if (device.Type == DeviceType.DoorLock)
                     {
-                        cardContr = new Controls.DeviceDoorLockRowControl(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceDoorLockRowControl();
                     }
                     //鏃犳硶璇嗗埆
                     else
                     {
-                        cardContr = new Controls.DeviceRowCommon(listView.rowSpace / 2);
+                        cardContr = new Controls.DeviceRowCommon();
                         //娌℃湁鐘舵�佸姛鑳�
                         cardContr.hadStatuFunction = false;
                     }
-
+                    cardContr.chidrenYaxis = listView.rowSpace / 2;
                     //鍒濆鍖栧崱鐗�
                     listView.AddChidren(cardContr);
                     cardContr.InitControl(device);
@@ -638,8 +639,8 @@
             {
                 listview2 = new VerticalListControl();
                 functionSceneBodyView.AddChidren(listview2);
-            }
-
+            }
+
             foreach (var scene in listScene)
             {
                 //鍦烘櫙鍗$墖鎺т欢
@@ -654,23 +655,45 @@
             {
                 if (listview1 != null)
                 {
-                    //鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
-                    this.GetAllDelayScene(dicSceneContr, listview1);
+                    //鎵撳紑鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+                    this.StartAllDelayScene(dicSceneContr, listview1);
                 }
                 else
                 {
-                    //鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
-                    this.GetAllDelayScene(dicSceneContr, listview2);
+                    //鎵撳紑鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+                    this.StartAllDelayScene(dicSceneContr, listview2);
                 }
             }, ShowErrorMode.NO);
         }
 
         /// <summary>
-        /// 鑾峰彇鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
+        /// 鎵撳紑鍏ㄩ儴鍦烘櫙鐨勫欢鏃舵椂闂�
         /// </summary>
         /// <param name="dicSceneContr"></param>
-        private async void GetAllDelayScene(Dictionary<int, SceneCategoryView> dicSceneContr, ViewGroup listview)
+        private async void StartAllDelayScene(Dictionary<int, SceneCategoryView> dicSceneContr, ViewGroup listview)
         {
+            string hourText = Language.StringByID(R.MyInternationalizationString.Hour);
+            string minuText = Language.StringByID(R.MyInternationalizationString.Minute);
+            string secondText = Language.StringByID(R.MyInternationalizationString.Second);
+
+            //濡傛灉褰撳墠浣忓畢鏄櫄鎷熶綇瀹�
+            if (Config.Instance.Home.IsVirtually == true)
+            {
+                HdlThreadLogic.Current.RunMain(() =>
+                {
+                    //寮�鍚欢鏃剁壒鏁�
+                    foreach (var myContr in dicSceneContr.Values)
+                    {
+                        if (myContr.scene.RemainTime > 0)
+                        {
+                            //寮�鍚満鏅欢鏃剁壒鏁�
+                            this.StartSceneDelayApeal(myContr, listview, myContr.scene.RemainTime, hourText, minuText, secondText);
+                        }
+                    }
+                }, ShowErrorMode.NO);
+                return;
+            }
+
             //璇诲彇鍏ㄩ儴鐨勫欢鏃舵椂闂�
             var result = await Scene.CatDelaySceneAsync();
             if (result == null || result.catDelaySceneResponseData == null ||
@@ -679,10 +702,6 @@
                 //鍑洪敊涓嶉笩瀹�
                 return;
             }
-
-            string hourText = Language.StringByID(R.MyInternationalizationString.Hour);
-            string minuText = Language.StringByID(R.MyInternationalizationString.Minute);
-            string secondText = Language.StringByID(R.MyInternationalizationString.Second);
 
             foreach (var data in result.catDelaySceneResponseData.DelayScenesList)
             {
@@ -699,30 +718,45 @@
                 {
                     continue;
                 }
-                HdlThreadLogic.Current.RunThread(() =>
+                //寮�鍚満鏅欢鏃剁壒鏁�
+                this.StartSceneDelayApeal(seceneContr, listview, remainTime, hourText, minuText, secondText);
+            }
+        }
+
+        /// <summary>
+        /// 寮�鍚満鏅欢鏃剁壒鏁�
+        /// </summary>
+        /// <param name="sceneContr"></param>
+        /// <param name="remainTime"></param>
+        /// <param name="hourText"></param>
+        /// <param name="minuText"></param>
+        /// <param name="secondText"></param>
+        private void StartSceneDelayApeal(SceneCategoryView sceneContr, ViewGroup listview, int remainTime,
+            string hourText, string minuText, string secondText)
+        {
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾)
+                HdlSceneLogic.Current.StartDelayTimeThread(sceneContr.scene);
+                while (remainTime > 0 && this.Parent != null)
                 {
-                    //寮�鍚唴閮ㄥ欢鏃舵椂闂寸嚎绋�(鏃ㄥ湪鍏ㄩ儴鍦版柟鐨勫悓涓�鍦烘櫙鏃堕棿鍚屾)
-                    HdlSceneLogic.Current.StartDelayTimeThread(seceneContr.scene);
-                    while (remainTime > 0 && this.Parent != null)
-                    {
-                        System.Threading.Thread.Sleep(1000);
-                        Application.RunOnMainThread(() =>
-                        {
-                            seceneContr.SetTimeText(this.GetTimeString(remainTime, hourText, minuText, secondText));
-                        });
-                        remainTime--;
-                    }
+                    System.Threading.Thread.Sleep(1000);
                     Application.RunOnMainThread(() =>
                     {
-                        if (listview.Parent != null)
-                        {
-                            seceneContr.SetTimeImage();
-                            //寮�鍚疞oading鐗规晥
-                            seceneContr.StartLoadingApreal();
-                        }
+                        sceneContr.SetTimeText(this.GetTimeString(remainTime, hourText, minuText, secondText));
                     });
+                    remainTime--;
+                }
+                Application.RunOnMainThread(() =>
+                {
+                    if (listview.Parent != null)
+                    {
+                        sceneContr.SetTimeImage();
+                        //寮�鍚疞oading鐗规晥
+                        sceneContr.StartLoadingApreal();
+                    }
                 });
-            }
+            });
         }
 
         /// <summary>
@@ -733,8 +767,8 @@
             var noFunction = new Button()
             {
                 Y = Application.GetRealHeight(320),
-                Width = Application.GetMinRealAverage(757),
-                Height = Application.GetMinRealAverage(435),
+                Width = this.GetPictrueRealSize(757),
+                Height = this.GetPictrueRealSize(435),
                 UnSelectedImagePath = "Item/NoFunction.png",
                 Gravity = Gravity.CenterHorizontal
             };
@@ -780,6 +814,11 @@
                             //绌鸿皟鏄壒娈婄殑,瀹冪殑寮�鍏虫槸灞炴�т笂鎶ユ潵鐫�.宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
                             this.dicDeviceRowControl[mainKeys].SetHadGetResponeResultStatu();
                         }
+                        if (report.DeviceStatusReport.CluterID == 514 && report.DeviceStatusReport.AttriBute[0].AttributeId == 0)
+                        {
+                            //鏂伴鏄壒娈婄殑,瀹冪殑寮�鍏虫槸灞炴�т笂鎶ユ潵鐫�.宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
+                            this.dicDeviceRowControl[mainKeys].SetHadGetResponeResultStatu();
+                        }
                         this.dicDeviceRowControl[mainKeys].RefreshControlInfo(locadevice);
                     }
                 }, ShowErrorMode.NO);
@@ -794,7 +833,8 @@
                     if (this.dicDeviceRowControl.ContainsKey(mainKeys) == true)
                     {
                         //鍒锋柊鍗$墖鐘舵��
-                        this.dicDeviceRowControl[mainKeys].SetRowOnlineStatu(report.IsOnline == 1);
+                        bool bolOnline = LocalDevice.Current.CheckDeviceIsOnline(report);
+                        this.dicDeviceRowControl[mainKeys].SetRowOnlineStatu(bolOnline);
                         return;
                     }
 
@@ -886,6 +926,11 @@
                     LocalDevice.Current.GetDeviceObjectIcon(typeInfo.ConcreteType, ref path1, ref path2);
                     dic[typeInfo.BeloneTextId].IconPath = path1;
                     dic[typeInfo.BeloneTextId].IconPathSelected = path2;
+                    if (device.Type == DeviceType.FreshAir)
+                    {
+                        dic[typeInfo.BeloneTextId].IconPath = "Device/FreshAirEpoint.png";
+                        dic[typeInfo.BeloneTextId].IconPathSelected = "Device/FreshAirEpointSelected.png";
+                    }
                     dic[typeInfo.BeloneTextId].TextId = typeInfo.BeloneTextId;
                 }
                 dic[typeInfo.BeloneTextId].listDeviceKeys.Add(LocalDevice.Current.GetDeviceMainKeys(device));
@@ -966,18 +1011,6 @@
             /// 璁惧鍥炶矾涓婚敭
             /// </summary>
             public List<string> listDeviceKeys = new List<string>();
-        }
-
-        #endregion
-
-        #region 鈼� 鑷姩鍖朹_________________________
-
-        /// <summary>
-        /// 鑷姩鍖栧姛鑳戒唬鐮佸叆鍙�
-        /// </summary>
-        private void ShowAutotion()
-        {
-            Shared.Phone.Device.Logic.SkipView.ShowAutotionView(functionSceneAutoBodyView);
         }
 
         #endregion

--
Gitblit v1.8.0