From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码

---
 ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs |  333 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 333 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
new file mode 100755
index 0000000..b436761
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
@@ -0,0 +1,333 @@
+锘縰sing System;
+using System.Collections.Generic;
+using Shared.Common;
+using Shared.Phone.UserCenter;
+using ZigBee.Device;
+
+namespace Shared.Phone.MainPage.ControlForm
+{
+    /// <summary>
+    /// PM2.5浼犳劅鍣ㄧ被鍨嬬殑娣卞害鍗$墖鐣岄潰
+    /// </summary>
+    public class DevicePmSensorDetailCardForm : DeviceDetailCardCommonForm
+    {
+        #region 鈻� 鍙橀噺澹版槑___________________________
+        /// <summary>
+        /// 鐣岄潰涓婂彲浠ユ搷浣滅殑鎺т欢
+        /// </summary>
+        private List<ButtonBase> listControl = new List<ButtonBase>();
+        /// <summary>
+        /// 鐣岄潰涓婂彲浠ユ搷浣滅殑鎺т欢
+        /// </summary>
+        private List<FrameLayout> listFrameLayout = new List<FrameLayout>();
+        /// <summary>
+        /// 鎺т欢
+        /// </summary>
+        private PMSensor pMSensor = null;
+        /// <summary>
+        /// 鐘舵�佹帶浠�
+        /// </summary>
+        private NormalViewControl btnStatu = null;
+        /// <summary>
+        /// 褰撳墠鐨勬枃鏈�
+        /// </summary>
+        private string CurrentText = string.Empty;
+
+        /// <summary>
+        /// 璁惧鍚嶇О鎺т欢
+        /// </summary>
+        private NormalViewControl btnDeviceName = null;
+
+        #endregion
+
+        #region 鈻� 鍒濆鍖朹____________________________
+        public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
+        {
+            //宸︽粦涓嶈兘
+            this.ScrollEnabled = true;
+            this.pMSensor = (PMSensor)this.device;
+            //鍏堟竻绌�
+            this.listControl = new List<ButtonBase>();
+            InitPmControl(frameWhiteBack);
+            UpdateStatus();
+        }
+
+        /// <summary>
+        /// 鍒濆鍖朠M2.5浼犳劅鍣ㄦ帶浠�
+        /// </summary>
+        /// <param name="frameWhiteBack"></param>
+        private void InitPmControl(FrameLayout frameWhiteBack)
+        {
+            //婀垮害瀹瑰櫒
+            var frameHumidityPic = new FrameLayout();
+            frameHumidityPic.X = Application.GetMinRealAverage(138);
+            frameHumidityPic.Y = Application.GetRealHeight(242);
+            frameHumidityPic.Width = Application.GetMinRealAverage(311);
+            frameHumidityPic.Height = Application.GetMinRealAverage(351);
+            frameHumidityPic.BackgroundImagePath = "PM2.5Sensor/HumidityPic.png";
+            frameWhiteBack.AddChidren(frameHumidityPic);
+
+            //婀垮害鏂囨湰
+            var btnHumidityText = new NormalViewControl(311, 49, true);
+            btnHumidityText.Y = Application.GetRealHeight(45);
+            btnHumidityText.TextID = R.MyInternationalizationString.Humidity;
+            btnHumidityText.TextSize = 12;
+            btnHumidityText.TextColor = ZigbeeColor.Current.XMWhite;
+            btnHumidityText.TextAlignment = TextAlignment.Center;
+            frameHumidityPic.AddChidren(btnHumidityText);
+
+            //婀垮害鏂囨湰瀹瑰櫒
+            var frameHumidityTextFrameLayout = new FrameLayout();
+            frameHumidityTextFrameLayout.Gravity = Gravity.CenterHorizontal;
+            frameHumidityTextFrameLayout.Y = Application.GetRealHeight(113);
+            frameHumidityTextFrameLayout.Height = Application.GetRealHeight(160);
+            frameHumidityPic.AddChidren(frameHumidityTextFrameLayout);
+
+            //婀垮害鏁版嵁
+            var btnHumidityStatus = new NormalViewControl(193, 160, true);
+            btnHumidityStatus.Text = "20";
+            btnHumidityStatus.TextSize = 30;
+            btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
+            btnHumidityStatus.TextAlignment = TextAlignment.BottomRight;
+            frameHumidityTextFrameLayout.AddChidren(btnHumidityStatus);
+
+            //婀垮害鍗曚綅
+            var btnHumidityUnit = new NormalViewControl(50, 140, true);
+            btnHumidityUnit.X = btnHumidityStatus.Right;
+            btnHumidityUnit.Text = "%";
+            btnHumidityUnit.TextSize = 14;
+            btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
+            btnHumidityUnit.TextAlignment = TextAlignment.BottomLeft;
+            frameHumidityTextFrameLayout.AddChidren(btnHumidityUnit);
+
+            //娓╁害瀹瑰櫒
+            var frameTemperaturePic = new FrameLayout();
+            frameTemperaturePic.X = Application.GetMinRealAverage(518);
+            frameTemperaturePic.Y = Application.GetRealHeight(242);
+            frameTemperaturePic.Width = Application.GetMinRealAverage(311);
+            frameTemperaturePic.Height = Application.GetMinRealAverage(351);
+            frameTemperaturePic.BackgroundImagePath = "PM2.5Sensor/TemperaturePic.png";
+            frameWhiteBack.AddChidren(frameTemperaturePic);
+            //娓╁害鏂囨湰
+            var btnTemperatureText = new NormalViewControl(311, 49, true);
+            btnTemperatureText.Y = Application.GetRealHeight(45);
+            btnTemperatureText.TextID = R.MyInternationalizationString.Temperature;
+            btnTemperatureText.TextSize = 12;
+            btnTemperatureText.TextColor = ZigbeeColor.Current.XMWhite;
+            btnTemperatureText.TextAlignment = TextAlignment.Center;
+            frameTemperaturePic.AddChidren(btnTemperatureText);
+
+            // 娓╁害鏂囨湰瀹瑰櫒
+            var frameTemperatureTextFrameLayout = new FrameLayout();
+            frameTemperatureTextFrameLayout.Gravity = Gravity.CenterHorizontal;
+            frameTemperatureTextFrameLayout.Y = Application.GetRealHeight(113);
+            frameTemperatureTextFrameLayout.Height = Application.GetRealHeight(160);
+            frameTemperaturePic.AddChidren(frameTemperatureTextFrameLayout);
+
+            //娓╁害鏁版嵁
+            var btnTemperatureStatus = new NormalViewControl(193, 160, true);
+            btnTemperatureStatus.Text = "20";
+            btnTemperatureStatus.TextSize = 30;
+            btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
+            btnTemperatureStatus.TextAlignment = TextAlignment.BottomRight;
+            frameTemperatureTextFrameLayout.AddChidren(btnTemperatureStatus);
+
+            //娓╁害鍗曚綅
+            var btnTemperatureUnit = new NormalViewControl(50, 140, true);
+            btnTemperatureUnit.X = btnTemperatureStatus.Right;
+            btnTemperatureUnit.Text = "鈩�";
+            btnTemperatureUnit.TextSize = 14;
+            btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
+            btnTemperatureUnit.TextAlignment = TextAlignment.BottomLeft;
+            frameTemperatureTextFrameLayout.AddChidren(btnTemperatureUnit);
+
+            //PM2.5浼犳劅鍣ㄧ殑PM2.5瀹瑰櫒
+            var framePmPic = new FrameLayout();
+            framePmPic.X = Application.GetMinRealAverage(138);
+            framePmPic.Y = Application.GetRealHeight(662);
+            framePmPic.Width = Application.GetMinRealAverage(311);
+            framePmPic.Height = Application.GetMinRealAverage(351);
+            framePmPic.BackgroundImagePath = "PM2.5Sensor/PmPic.png";
+            frameWhiteBack.AddChidren(framePmPic);
+            //PM2.5鏂囨湰
+            var btnPmText = new NormalViewControl(311, 49, true);
+            btnPmText.Y = Application.GetRealHeight(45);
+            btnPmText.Text = "PM2.5";
+            btnPmText.TextSize = 12;
+            btnPmText.TextColor = ZigbeeColor.Current.XMWhite;
+            btnPmText.TextAlignment = TextAlignment.Center;
+            framePmPic.AddChidren(btnPmText);
+
+            // PM2.5鏂囨湰瀹瑰櫒
+            var framePmTextFrameLayout = new FrameLayout();
+            framePmTextFrameLayout.Y = Application.GetRealHeight(113);
+            framePmTextFrameLayout.Gravity = Gravity.CenterHorizontal;
+            framePmTextFrameLayout.Height = Application.GetRealHeight(160);
+            framePmPic.AddChidren(framePmTextFrameLayout);
+
+            //PM2.5鏁版嵁
+            var btnPmStatus = new NormalViewControl(162, 160, true);
+            btnPmStatus.Text = "155";
+            btnPmStatus.TextSize = 30;
+            btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
+            btnPmStatus.TextAlignment = TextAlignment.BottomRight;
+            framePmTextFrameLayout.AddChidren(btnPmStatus);
+
+            //PM2.5鍗曚綅  锛堢4涓紝listControl銆�3銆戯級
+            var btnPmUnit = new NormalViewControl(144, 148, true);
+            btnPmUnit.X = btnPmStatus.Right;
+            btnPmUnit.Text = "渭g/m鲁";
+            btnPmUnit.TextSize = 14;
+            btnPmUnit.TextColor = ZigbeeColor.Current.XMWhite;
+            btnPmUnit.TextAlignment = TextAlignment.BottomLeft;
+            framePmTextFrameLayout.AddChidren(btnPmUnit);
+
+            this.listControl.Add(btnHumidityStatus);//锛堢1涓紝listControl銆�0銆戯級
+            this.listControl.Add(btnTemperatureStatus);//锛堢2涓紝listControl銆�1銆戯級
+            this.listControl.Add(btnPmStatus);//锛堢3涓紝listControl銆�2銆戯級
+            this.listControl.Add(btnPmUnit);//锛堢4涓紝listControl銆�3銆戯級
+            this.listControl.Add(btnHumidityUnit);//锛堢5涓紝listControl銆�4銆戯級
+            this.listControl.Add(btnTemperatureUnit);//锛堢6涓紝listControl銆�5銆戯級
+            this.listFrameLayout.Add(frameHumidityTextFrameLayout);//锛堢1涓紝listControl銆�0銆戯級
+            this.listFrameLayout.Add(frameTemperatureTextFrameLayout);//锛堢2涓紝listControl銆�1銆戯級
+            this.listFrameLayout.Add(framePmTextFrameLayout);//锛堢3涓紝listControl銆�2銆戯級
+        }
+        #endregion
+
+        #region 鈻� 鏄惁鑾峰彇缃戝叧鍙嶉鐨勭粨鏋淿____________
+
+        /// <summary>
+        /// 妫�娴嬬綉鍏崇殑鍙嶉缁撴灉(灞炴�т笂鎶ョ殑瀵硅薄锛歞evice.DeviceStatusReport)
+        /// </summary>
+        /// <param name="comandDiv">鍛戒护鍖哄垎</param>
+        /// <param name="report">涓婃姤鏁版嵁</param>
+        /// <returns></returns>
+        public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
+        {
+            if (comandDiv == ReceiveComandDiv.A璁惧灞炴�т笂鎶�)
+            {
+                if (report.DeviceStatusReport.CluterID == 1026)
+                {
+                    var attriButeList = report.DeviceStatusReport.AttriBute;
+                    foreach (var attList in attriButeList)
+                    {
+                        if (attList.AttributeId == 0)
+                        {
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                UpdateStatus();
+                            });
+
+                            //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
+                            return true;
+                        }
+                    }
+                }
+                if (report.DeviceStatusReport.CluterID == 1029)
+                {
+                    var attriButeList = report.DeviceStatusReport.AttriBute;
+                    foreach (var attList in attriButeList)
+                    {
+                        if (attList.AttributeId == 0)
+                        {
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                UpdateStatus();
+                            });
+
+                            //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
+                            return true;
+                        }
+                    }
+                }
+                if (report.DeviceStatusReport.CluterID == 1066)
+                {
+                    var attriButeList = report.DeviceStatusReport.AttriBute;
+                    foreach (var attList in attriButeList)
+                    {
+                        if (attList.AttributeId == 0)
+                        {
+                            HdlThreadLogic.Current.RunMain(() =>
+                            {
+                                UpdateStatus();
+                            });
+
+                            //宸茬粡鎺ユ敹鍒扮綉鍏崇殑鍙嶉
+                            return true;
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+        #endregion
+
+        #region 鈻� 鍒锋柊鐘舵�乢____________
+        /// <summary>
+        /// 鍒锋柊鐘舵��
+        /// </summary>
+        private void UpdateStatus()
+        {
+            //璁剧疆鐘舵�佹枃瀛�
+            this.listControl[0].Text = pMSensor.currentHumidity.ToString();
+            this.listControl[1].Text = pMSensor.currentTemperature.ToString();
+            this.listControl[2].Text = pMSensor.currentPmData.ToString();
+            //璁剧疆鐘舵�佹枃瀛�
+            var curText = Language.StringByID(R.MyInternationalizationString.AirQuality) + QuailityType();
+            this.SetStatuText(curText);
+            this.listControl[0].Width = this.listControl[0].GetRealWidthByText();
+            this.listControl[4].X = this.listControl[0].Right;
+            this.listControl[1].Width = this.listControl[1].GetRealWidthByText();
+            this.listControl[5].X = this.listControl[1].Right;
+            this.listControl[2].Width = this.listControl[2].GetRealWidthByText();
+            this.listControl[3].X = this.listControl[2].Right;
+            this.listControl[3].Width = this.listControl[3].GetRealWidthByText();
+            this.listFrameLayout[0].Width = this.listControl[0].Width + this.listControl[4].Width;
+            this.listFrameLayout[1].Width = this.listControl[1].Width + this.listControl[5].Width;
+            this.listFrameLayout[2].Width = this.listControl[2].Width + this.listControl[3].Width;
+            this.listFrameLayout[0].Gravity = Gravity.CenterHorizontal;
+            this.listFrameLayout[1].Gravity = Gravity.CenterHorizontal;
+            this.listFrameLayout[2].Gravity = Gravity.CenterHorizontal;
+        }
+
+        /// <summary>
+        /// 璐ㄩ噺绛夌骇
+        /// </summary>
+        private string QuailityType()
+        {
+            string curQuality = string.Empty;
+
+            if (pMSensor.currentPmData <= 35 && pMSensor.currentPmData >= 0)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.ExcellentAirQuality);
+            }
+            else if (pMSensor.currentPmData <= 75 && pMSensor.currentPmData > 35)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.GoodAirQuality);
+            }
+            else if (pMSensor.currentPmData <= 115 && pMSensor.currentPmData > 75)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.LightPollution);
+            }
+            else if (pMSensor.currentPmData <= 150 && pMSensor.currentPmData > 115)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.Moderatelyolluted);
+            }
+            else if (pMSensor.currentPmData <= 250 && pMSensor.currentPmData > 150)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.HeavyPollution);
+            }
+            else if (pMSensor.currentPmData > 250)
+            {
+                curQuality = Language.StringByID(R.MyInternationalizationString.SeriousPollution);
+            }
+            else
+            {
+                curQuality = "";
+            }
+            //璁剧疆鐘舵�佹枃瀛�
+            return curQuality;
+        }
+        #endregion
+    }
+}

--
Gitblit v1.8.0