HDL Home App 第二版本 旧平台金堂用 正在使用
hxb
2022-08-30 25429f085093d89d543a0b90e30d0d62d1b7dac9
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DevicePmSensorDetailCardForm.cs
@@ -11,12 +11,16 @@
    /// </summary>
    public class DevicePmSensorDetailCardForm : DeviceDetailCardCommonForm
    {
        #region ■ 变量声明___________________________
        #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;
@@ -44,7 +48,7 @@
            this.pMSensor = (PMSensor)this.device;
            //先清空
            this.listControl = new List<ButtonBase>();
            InitFreshAirControl(frameWhiteBack);
            InitPmControl(frameWhiteBack);
            UpdateStatus();
        }
@@ -52,7 +56,7 @@
        /// 初始化PM2.5传感器控件
        /// </summary>
        /// <param name="frameWhiteBack"></param>
        private void InitFreshAirControl(FrameLayout frameWhiteBack)
        private void InitPmControl(FrameLayout frameWhiteBack)
        {
            //湿度容器
            var frameHumidityPic = new FrameLayout();
@@ -72,25 +76,29 @@
            btnHumidityText.TextAlignment = TextAlignment.Center;
            frameHumidityPic.AddChidren(btnHumidityText);
            //湿度数据(第1个,listControl【0】)
            var btnHumidityStatus = new NormalViewControl(193, 92, true);
            btnHumidityStatus.Y = Application.GetRealHeight(181);
            //湿度文本容器
            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 = 32;
            btnHumidityStatus.TextSize = 30;
            btnHumidityStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityStatus.TextAlignment = TextAlignment.CenterRight;
            frameHumidityPic.AddChidren(btnHumidityStatus);
            this.listControl.Add(btnHumidityStatus);
            btnHumidityStatus.TextAlignment = TextAlignment.BottomRight;
            frameHumidityTextFrameLayout.AddChidren(btnHumidityStatus);
            //湿度单位
            var btnHumidityUnit = new NormalViewControl(37 + 81, 40, true);
            btnHumidityUnit.Y = Application.GetRealHeight(181 + 46);
            btnHumidityUnit.X = Application.GetRealWidth(190);
            var btnHumidityUnit = new NormalViewControl(50, 140, true);
            btnHumidityUnit.X = btnHumidityStatus.Right;
            btnHumidityUnit.Text = "%";
            btnHumidityUnit.TextSize = 14;
            btnHumidityUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnHumidityUnit.TextAlignment = TextAlignment.CenterLeft;
            frameHumidityPic.AddChidren(btnHumidityUnit);
            btnHumidityUnit.TextAlignment = TextAlignment.BottomLeft;
            frameHumidityTextFrameLayout.AddChidren(btnHumidityUnit);
            //温度容器
            var frameTemperaturePic = new FrameLayout();
@@ -109,25 +117,29 @@
            btnTemperatureText.TextAlignment = TextAlignment.Center;
            frameTemperaturePic.AddChidren(btnTemperatureText);
            //温度数据(第2个,listControl【1】)
            var btnTemperatureStatus = new NormalViewControl(193, 92, true);
            btnTemperatureStatus.Y = Application.GetRealHeight(181);
            // 温度文本容器
            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 = 32;
            btnTemperatureStatus.TextSize = 30;
            btnTemperatureStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureStatus.TextAlignment = TextAlignment.CenterRight;
            frameTemperaturePic.AddChidren(btnTemperatureStatus);
            this.listControl.Add(btnTemperatureStatus);
            btnTemperatureStatus.TextAlignment = TextAlignment.BottomRight;
            frameTemperatureTextFrameLayout.AddChidren(btnTemperatureStatus);
            //温度单位
            var btnTemperatureUnit = new NormalViewControl(40 + 81, 40, true);
            btnTemperatureUnit.Y = Application.GetRealHeight(181 + 46);
            btnTemperatureUnit.X = Application.GetRealWidth(188);
            var btnTemperatureUnit = new NormalViewControl(50, 140, true);
            btnTemperatureUnit.X = btnTemperatureStatus.Right;
            btnTemperatureUnit.Text = "℃";
            btnTemperatureUnit.TextSize = 14;
            btnTemperatureUnit.TextColor = ZigbeeColor.Current.XMWhite;
            btnTemperatureUnit.TextAlignment = TextAlignment.CenterLeft;
            frameTemperaturePic.AddChidren(btnTemperatureUnit);
            btnTemperatureUnit.TextAlignment = TextAlignment.BottomLeft;
            frameTemperatureTextFrameLayout.AddChidren(btnTemperatureUnit);
            //PM2.5传感器的PM2.5容器
            var framePmPic = new FrameLayout();
@@ -146,27 +158,41 @@
            btnPmText.TextAlignment = TextAlignment.Center;
            framePmPic.AddChidren(btnPmText);
            //PM2.5数据(第3个,listControl【2】)
            var btnPmStatus = new NormalViewControl(109 + 40, 92, true);
            btnPmStatus.Y = Application.GetRealHeight(181);
            btnPmStatus.Text = "35";
            btnPmStatus.TextSize = 32;
            btnPmStatus.TextColor = ZigbeeColor.Current.XMWhite;
            btnPmStatus.TextAlignment = TextAlignment.CenterRight;
            framePmPic.AddChidren(btnPmStatus);
            this.listControl.Add(btnPmStatus);
            // 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 btnPmUnit = new NormalViewControl(124 + 15, 43, true);
            btnPmUnit.Y = Application.GetRealHeight(181 + 46);
            btnPmUnit.X = Application.GetRealWidth(150);
            //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.CenterLeft;
            framePmPic.AddChidren(btnPmUnit);
            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
        #endregion
        #region ■ 是否获取网关反馈的结果_____________
@@ -236,31 +262,6 @@
        }
        #endregion
        #region ■ 设置方法
        /// <summary>
        ///命令
        ///0:Off
        ///1:Low
        ///3:High
        ///4:On
        ///5:Auto
        /// 15:Manual
        /// </summary>
        private void SetFanComand(int command)
        {
            //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
            this.StartCheckResponeResult(this.listControl, (result) =>
            {
                //接收到网关回复
                if (result == true)
                {
                }
            });
        }
        #endregion
        #region ■ 刷新状态_____________
        /// <summary>
        /// 刷新状态
@@ -268,11 +269,64 @@
        private void UpdateStatus()
        {
            //设置状态文字
            this.listControl[0].Text = pMSensor.currentTemperature.ToString();
            this.listControl[1].Text = pMSensor.currentHumidity.ToString();
            this.listControl[0].Text = pMSensor.currentHumidity.ToString();
            this.listControl[1].Text = pMSensor.currentTemperature.ToString();
            this.listControl[2].Text = pMSensor.currentPmData.ToString();
            //设置状态文字
            this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
            //设置状态文字
            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
    }