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/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs |  402 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 394 insertions(+), 8 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
index 17e698e..346a4fe 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
@@ -1,4 +1,7 @@
 锘縰sing System;
+using System.Collections.Generic;
+using Shared.Common;
+using ZigBee.Common;
 using ZigBee.Device;
 
 namespace Shared.Phone.UserCenter.DevicePanel
@@ -13,13 +16,50 @@
         /// <summary>
         /// 鍒楄〃鎺т欢
         /// </summary>
-        private VerticalListControl listview = null;
+        private FrameListControl listview = null;
         /// <summary>
         /// 璁惧鐨勬煇涓�鍥炶矾
         /// </summary>
         private CommonDevice deviceObj = null;
+        /// <summary>
+        /// 鏂伴鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindFreshAirName = string.Empty;
+        /// <summary>
+        /// 娓╁害鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindTemperatureName = string.Empty;
+        /// <summary>
+        /// 婀垮害鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindHumidityName = string.Empty;
+        /// <summary>
+        /// PM鐩爣鍚嶅瓧
+        /// </summary>
+        private string bindPmName = string.Empty;
+        /// <summary>
+        /// 琚粦鐩爣鏄柊椋�
+        /// </summary>
+        private CommonDevice bindFreshAirDev;
+        /// <summary>
+        /// 琚粦鐩爣鏄俯搴�
+        /// </summary>
+        private CommonDevice bindTemperatureDev;
+        /// <summary>
+        /// 琚粦鐩爣鏄箍搴�
+        /// </summary>
+        private CommonDevice bindHumidityDev;
+        /// <summary>
+        /// 琚粦鐩爣鏄疨M2.5
+        /// </summary>
+        private CommonDevice bindPMDev;
+        // <summary>
+        /// 鎸夐敭涓缁戝畾鐨勭洰鏍囧垪琛�
+        /// </summary>
+        public List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>();
 
         #endregion
+
         #region 鈻� 鍒濆鍖朹____________________________
 
         /// <summary>
@@ -29,6 +69,8 @@
         public void ShowForm(CommonDevice i_device)
         {
             this.deviceObj = i_device;
+            //鑾峰彇鏁版嵁
+            ReadDoorLockUserInfo(deviceObj);
 
             //璁剧疆澶撮儴淇℃伅
             base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uPanelSettion));
@@ -48,22 +90,26 @@
             //娓呯┖bodyFrame
             this.ClearBodyFrame();
 
+            var listBackControl = new VerticalFrameControl();
+            listBackControl.Height = bodyFrameLayout.Height;
+            bodyFrameLayout.AddChidren(listBackControl);
+
             //鍥剧墖
             var btnPic = new PicViewControl(426, 426);
             btnPic.Y = Application.GetRealHeight(150);
             btnPic.UnSelectedImagePath = "RealDevice/ButtonPanelFangyueFreshAir.png";
             btnPic.Gravity = Gravity.CenterHorizontal;
-            bodyFrameLayout.AddChidren(btnPic);
+            listBackControl.frameTable.AddChidren(btnPic);
 
             //鍒濆鍖栨甯�
             var tableContr = new InformationEditorControl();
-            this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 708, 1028);
+            this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uDeviceEditor), 1028);
 
             //鍒濆鍖栬彍鍗曡
             this.InitMenuRow();
 
             //鍒濆鍖栨甯冨畬鎴�
-            tableContr.FinishInitControl(bodyFrameLayout, this.listview);
+            tableContr.FinishInitControl();
             tableContr = null;
 
             //淇濆瓨
@@ -83,7 +129,67 @@
         private void InitMenuRow()
         {
             this.listview.RemoveAll();
+            //娣诲姞鏂伴鐩爣
+            this.AddFreshAirRow();
+            //PM2.5鏉ユ簮
+            this.AddPMRow();
+            //娣诲姞娓╁害鏉ユ簮
+            this.AddTemperatureSensorRow();
+            //娣诲姞婀垮害鏉ユ簮
+            this.AddHumiditySourceRow();
+            //浜害璋冭妭
+            this.AddLevelRow();
+        }
+        #endregion
+
+        #region 鈻� 鍒濆鍖栨暟鎹甠________________________ 
+
+        /// <summary>
+        /// 鍒濆鍖栨暟鎹�
+        /// </summary>
+        void ReadDoorLockUserInfo(CommonDevice curControlDev)
+        {
+            System.Threading.Tasks.Task.Run(async () =>
+            {
+                try
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        CommonPage.Loading.Start("");
+                    });
+
+                    var result = await GetBindName(curControlDev);
+                    if (!result)
+                    {
+
+                        Application.RunOnMainThread(() =>
+                        {
+                            new Tip() { MaxWidth = 150, Text = Language.StringByID(R.MyInternationalizationString.GwResponseOvertime), Direction = AMPopTipDirection.None, CloseTime = 1 }.Show(Common.CommonPage.Instance);
+                        });
+                    }
+                }
+                catch (Exception ex)
+                {
+                    var mess = ex.Message;
+                }
+                finally
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        this.InitMenuRow();
+                        CommonPage.Loading.Hide();
+                    });
+                }
+            });
+        }
+        #endregion
 
+        #region 鈻� 鏂伴鐩爣_________________________ 
+        /// <summary>
+        ///  鏂伴鐩爣琛�
+        /// </summary>
+        private void AddFreshAirRow()
+        {
             //鏂伴鐩爣
             var rowNewWind = new FrameRowControl(listview.rowSpace / 2);
             listview.AddChidren(rowNewWind);
@@ -92,13 +198,293 @@
             rowNewWind.AddBottomLine();
             //鍙崇澶�
             rowNewWind.AddRightArrow();
-            var btnNewWindStatu = rowNewWind.AddMostRightView("鏂伴1", 700);
+
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindFreshAirName))
+            {
+                msg = bindFreshAirName;
+            }
+            var btnNewWindStatu = rowNewWind.AddMostRightView(msg, 700);
+
             rowNewWind.ButtonClickEvent += (sender, e) =>
             {
-                var form = new PanelFangyueEnvironmentTargetForm();
-                form.AddForm(this.deviceObj, string.Empty, 3);
-            };
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindFreshAirDev, 1);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                addDevicePage.Show();
 
+                addDevicePage.actionFreshAirTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnNewWindStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnNewWindStatu.Text = bindName;
+                        }
+                    });
+                };
+
+            };
+        }
+        #endregion
+
+        /// <summary>
+        /// 鑾峰彇缁戝畾鐩爣
+        /// </summary>
+        /// <param name="curControlDev"></param>
+        /// <returns></returns>
+        private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curDev)
+        {
+            bool result = false;
+            //鑾峰彇闈㈡澘涓瓨鍦ㄧ殑缁戝畾鐩爣
+            FreshAir curControlDev = curDev as FreshAir;
+            var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
+            if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
+            {
+                bindList = panelBindListRes.getAllBindResponseData.BindList;
+                foreach (var bDev in bindList)
+                {
+                    var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
+
+                    if (device.Type == DeviceType.FreshAir)
+                    {
+                        //鑾峰彇璁惧绫诲瀷鐨�
+                        var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
+                        //鏂伴闈㈡澘鐨勬柊椋庤澶囷紝鍒欎笉鏄剧ず
+                        if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
+                        {
+                            continue;
+                        }
+                        if (string.IsNullOrEmpty(bDev.ESName))
+                        {
+                            bindFreshAirName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                        }
+                        else
+                        {
+                            bindFreshAirName = bDev.ESName;
+                        }
+
+                        bindFreshAirDev = device;
+                    }
+                    if (device.Type == DeviceType.TemperatureSensor)
+                    {
+                        var bD = device as TemperatureSensor;
+                        if (bD.SensorDiv == 1)
+                        {
+                            if (string.IsNullOrEmpty(bDev.ESName))
+                            {
+                                bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                            }
+                            else
+                            {
+                                bindTemperatureName = bDev.ESName;
+                            }
+                            bindTemperatureDev = device;
+                        }
+                        if (bD.SensorDiv == 2)
+                        {
+                            if (string.IsNullOrEmpty(bDev.ESName))
+                            {
+                                bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                            }
+                            else
+                            {
+                                bindHumidityName = bDev.ESName;
+                            }
+
+                            bindHumidityDev = device;
+                        }
+                    }
+                    if (device.Type == DeviceType.FreshAirHumiditySensor)
+                    {
+                        if (string.IsNullOrEmpty(bDev.ESName))
+                        {
+                            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                        }
+                        else
+                        {
+                            bindHumidityName = bDev.ESName;
+                        }
+
+                        bindHumidityDev = device;
+                    }
+                    if (device.Type == DeviceType.PMSensor)
+                    {
+                        if (bDev.BindCluster == 1026)
+                        {
+                            bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
+                            bindTemperatureDev = device;
+                        }
+                        if (bDev.BindCluster == 1029)
+                        {
+                            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
+                            bindHumidityDev = device;
+                        }
+                        if (bDev.BindCluster == 1066)
+                        {
+                            if (string.IsNullOrEmpty(bDev.ESName))
+                            {
+                                bindPmName = Common.LocalDevice.Current.GetDeviceEpointName(device);
+                            }
+                            else
+                            {
+                                bindPmName = bDev.ESName;
+                            }
+
+                            bindPMDev = device;
+                        }
+                    }
+                }
+                result = true;
+            }
+            return result;
+        }
+
+        #region 鈻� PM2.5鏉ユ簮_________________________ 
+        /// <summary>
+        ///  PM2.5鏉ユ簮琛�
+        /// </summary>
+        private void AddPMRow()
+        {
+            //PM2.5
+            var rowPM = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowPM);
+            rowPM.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.PM25Source), 600);
+            //搴曠嚎
+            rowPM.AddBottomLine();
+            //鍙崇澶�
+            rowPM.AddRightArrow();
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindPmName))
+            {
+                msg = bindPmName;
+            }
+            var btnPMStatu = rowPM.AddMostRightView(msg, 700);
+            rowPM.ButtonClickEvent += (sender, e) =>
+            {
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindPMDev, 4);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                addDevicePage.Show();
+
+                addDevicePage.actionPMTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnPMStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnPMStatu.Text = bindName;
+                        }
+                    });
+                };
+            };
+        }
+        #endregion
+
+        #region 鈻� 娓╁害鏉ユ簮_________________________ 
+        /// <summary>
+        ///  娓╁害鏉ユ簮琛�
+        /// </summary>
+        private void AddTemperatureSensorRow()
+        {
+            //娓╁害鏉ユ簮
+            var rowTemPerature = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowTemPerature);
+            rowTemPerature.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.TemperatureSource), 600);
+            //搴曠嚎
+            rowTemPerature.AddBottomLine();
+            //鍙崇澶�
+            rowTemPerature.AddRightArrow();
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindTemperatureName))
+            {
+                msg = bindTemperatureName;
+            }
+            var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700);
+            rowTemPerature.ButtonClickEvent += (sender, e) =>
+            {
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindTemperatureDev, 2);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                addDevicePage.Show();
+
+                addDevicePage.actionTemperatureTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnTemperatureStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnTemperatureStatu.Text = bindName;
+                        }
+                    });
+                };
+            };
+        }
+        #endregion
+
+        #region 鈻� 婀垮害鏉ユ簮_________________________ 
+        /// <summary>
+        ///  婀垮害鏉ユ簮琛�
+        /// </summary>
+        private void AddHumiditySourceRow()
+        {
+            //婀垮害
+            var rowHumidity = new FrameRowControl(listview.rowSpace / 2);
+            listview.AddChidren(rowHumidity);
+            rowHumidity.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.HumiditySource), 600);
+            //搴曠嚎
+            rowHumidity.AddBottomLine();
+            //鍙崇澶�
+            rowHumidity.AddRightArrow();
+            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
+            if (!string.IsNullOrEmpty(bindHumidityName))
+            {
+                msg = bindHumidityName;
+            }
+            var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700);
+            rowHumidity.ButtonClickEvent += (sender, e) =>
+            {
+                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindHumidityDev, 3);
+                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
+                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
+                addDevicePage.Show();
+
+                addDevicePage.actionHumidityTarget += (bindName) =>
+                {
+                    Application.RunOnMainThread(() =>
+                    {
+                        if (string.IsNullOrEmpty(bindName))
+                        {
+                            btnHumidityStatu.Text = Language.StringByID(R.MyInternationalizationString.nothing);
+                        }
+                        else
+                        {
+                            btnHumidityStatu.Text = bindName;
+                        }
+                    });
+                };
+            };
+        }
+        #endregion
+
+        #region 鈻� 浜害璋冭妭_________________________ 
+        /// <summary>
+        ///  浜害璋冭妭琛�
+        /// </summary>
+        private void AddLevelRow()
+        {
             //浜害璋冭妭
             var rowLight = new FrameRowControl(listview.rowSpace / 2);
             listview.AddChidren(rowLight);

--
Gitblit v1.8.0