mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
HDL_ON/UI/UI2/FuntionControlView/EnvironmentalScience/EnvironmentalPage.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
@@ -91,7 +92,7 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = MainPage.cityInfo.location,
                Text = MainPage.cityInfo.city,
            };
            topWeatherView.AddChidren(btnLocationText);
@@ -274,7 +275,8 @@
            int index = 0;
            foreach (var sensor in FunctionList.List.GetEnvirSensorsList())
            {
                if(SPK.EvironmentSensorList().Contains(sensor.spk))
                if(SPK.EvironmentSensorList().Contains(sensor.spk) )
                {
                    foreach (var seTemp in sensor.attributes)
                    {
@@ -347,8 +349,8 @@
        /// </summary>
        void LoadSensorDiv(Function sensor,int index)
        {
            var levelColorList = sensorTemp.GetLevelColorList(sensor.spk);
            var levelTextList = sensorTemp.GetLevelTextList(sensor.spk);
            var levelColorList = sensorTemp.GetLevelColorList(sensor);
            var levelTextList = sensorTemp.GetLevelTextList(sensor);
            {
                var sensorTag = sensor.spk + sensor.sid + sensor.deviceId;
                FrameLayout sensorView = new FrameLayout()
@@ -372,6 +374,10 @@
                        imagePath = "FunctionIcon/EnvirSensor/Pm25Bg.png";
                        iconPath = "FunctionIcon/EnvirSensor/Pm25Icon.png";
                        break;
                    case SPK.SensorPm10:
                        imagePath = "FunctionIcon/EnvirSensor/Pm25Bg.png";
                        iconPath = "FunctionIcon/EnvirSensor/Pm10Icon.png";
                        break;
                    case SPK.SensorTVOC:
                        imagePath = "FunctionIcon/EnvirSensor/TvocBg.png";
                        iconPath = "FunctionIcon/EnvirSensor/TvocIcon.png";
@@ -387,6 +393,10 @@
                    case SPK.SensorHcho:
                        imagePath = "FunctionIcon/EnvirSensor/HchoBg.png";
                        iconPath = "FunctionIcon/EnvirSensor/HchoIcon.png";
                        break;
                    case SPK.SensorLight:
                        imagePath = "FunctionIcon/EnvirSensor/IlluminationBg.png";
                        iconPath = "FunctionIcon/EnvirSensor/IlluminationIcon.png";
                        break;
                }
                sensorView.BackgroundImagePath = imagePath;
@@ -409,6 +419,10 @@
                btnIcon.MouseUpEventHandler = (sender, e) =>
                {
                    if (!IsSupportClick(sensor))
                    {
                        return;
                    }
                    #region 
                    var esp = new EnvironmentalSensorPage(sensor);
                    MainPage.BasePageView.AddChidren(esp);
@@ -428,6 +442,10 @@
                sensorView.AddChidren(btnInfoIcon);
                btnInfoIcon.MouseUpEventHandler = (sender, e) =>
                {
                    if (!IsSupportClick(sensor))
                    {
                        return;
                    }
                    LoadInfo(sensor);
                };
@@ -438,15 +456,17 @@
                    Width = Application.GetRealWidth(100),
                    Height = Application.GetRealWidth(32),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = sensorTemp.GetLevelColorList(sensor.spk)[sensorTemp.GetCurLevel(sensor) - 1],
                    TextSize = CSS_FontSize.SubheadingFontSize,
                    TextID = levelTextList[sensorTemp.GetCurLevel(sensor) - 1],
                    Tag = "SensorLevel",
                };
                sensorView.AddChidren(btnLevel);
                btnLevel.MouseUpEventHandler = (sender, e) =>
                {
                    if (!IsSupportClick(sensor))
                    {
                        return;
                    }
                    #region 
                    var esp = new EnvironmentalSensorPage(sensor);
                    MainPage.BasePageView.AddChidren(esp);
@@ -472,6 +492,11 @@
                sensorView.AddChidren(btnSensorValues);
                btnSensorValues.MouseUpEventHandler = (sender, e) =>
                {
                    if (!IsSupportClick(sensor))
                    {
                        return;
                    }
                    #region 
                    var esp = new EnvironmentalSensorPage(sensor);
                    MainPage.BasePageView.AddChidren(esp);
@@ -479,7 +504,18 @@
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    #endregion
                };
                if (!IsSupportClick(sensor))
                {
                    btnLevel.TextID = StringId.guangzhao;
                    btnLevel.TextColor = 0xFF1B2D4D;
                    btnSensorValues.Text = sensor.GetAttrState("illuminance");
                }
                else
                {
                    btnLevel.Text = levelTextList[sensorTemp.GetCurLevel(sensor) - 1];
                    btnLevel.TextColor = sensorTemp.GetLevelColorList(sensor)[sensorTemp.GetCurLevel(sensor) - 1];
                    btnSensorValues.Text = sensor.GetAttrState(FunctionAttributeKey.Value);
                }
            }
        }
@@ -489,31 +525,34 @@
        void LoadInfo(Function sensor)
        {
            List<uint> levelColorList = new List<uint>();
            List<int> levelTextList = new List<int>();
            List<string> levelText = new List<string>();
            List<string> levelTextList = new List<string>();
            //List<string> levelText = new List<string>();
            List<string> intervalList = new List<string>();
            var configs = sensor.GetAttrKeyConfigs(sensor.SpkClassification);
            int i = 0;
            foreach(var info in configs)
            //int i = 0;
            //foreach(var info in configs)
            //{
            //    foreach(var config in info.configs)
            //    {
            //        var color = Convert.ToUInt32(config.color,16);
            //        var text = config.desc;
            //        levelColorList.Add(color);
            //        //levelText.Add(text);
            //        levelTextList.Add(i++);
            //        intervalList.Add(config.start + " ~ " + config.end);
            //    }
            //}
            //if (levelColorList.Count == 0)
            {
                foreach(var config in info.configs)
                {
                    var color = Convert.ToUInt32(config.color,16);
                    var text = config.desc;
                    levelColorList.Add(color);
                    levelText.Add(text);
                    levelTextList.Add(i++);
                }
            }
            if (levelColorList.Count == 0)
            {
                levelColorList = sensorTemp.GetLevelColorList(sensor.spk);
                levelTextList = sensorTemp.GetLevelTextList(sensor.spk);
                foreach(var iii in levelTextList)
                {
                    levelText.Add(Language.StringByID(iii));
                }
                levelColorList = sensorTemp.GetLevelColorList(sensor);
                levelTextList = sensorTemp.GetLevelTextList(sensor);
                intervalList = sensorTemp.GetIntervalValue(sensor);
                //foreach (var iii in levelTextList)
                //{
                //    levelText.Add(Language.StringByID(iii));
                //}
            }
            Dialog dialog = new Dialog();
@@ -550,13 +589,16 @@
            switch (sensor.spk)
            {
                case SPK.SensorPm25:
                    btnTitle.Text = "PM2.5(ug/m²)";
                    btnTitle.Text = "PM2.5(ug/m³)";//²
                    break;
                case SPK.SensorPm10:
                    btnTitle.Text = "PM10(ug/m³)";//²
                    break;
                case SPK.SensorTemperature:
                    btnTitle.Text = Language.StringByID(StringId.Temp) + "(°C)";
                    break;
                case SPK.SensorTVOC:
                    btnTitle.Text = "TVOC(PPB)";
                    btnTitle.Text = "TVOC(mg/m³)";
                    break;
                case SPK.SensorCO2:
                    btnTitle.Text = "CO2(PPM)";
@@ -607,55 +649,65 @@
                IsBold = true,
                TextID = StringId.ColorValue,
            });
            for (int index = 0; index < levelText.Count; index++)
            try
            {
                infoView.AddChidren(new Button()
                for (int index = 0; index < levelTextList.Count; index++)
                {
                    Gravity = Gravity.CenterHorizontal,
                    Width = Application.GetRealWidth(303),
                    Height = Application.GetRealWidth(1),
                    BackgroundColor = CSS_Color.DividingLineColor,
                });
                    //if(sensorTemp.GetIntervalValue(sensor.spk).Count >= index)
                    //{
                    //    return;
                    //}
                    infoView.AddChidren(new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Width = Application.GetRealWidth(303),
                        Height = Application.GetRealWidth(1),
                        BackgroundColor = CSS_Color.DividingLineColor,
                    });
                FrameLayout subInfoView = new FrameLayout()
                {
                    Height = Application.GetRealHeight(44),
                };
                infoView.AddChidren(subInfoView);
                    FrameLayout subInfoView = new FrameLayout()
                    {
                        Height = Application.GetRealHeight(44),
                    };
                    infoView.AddChidren(subInfoView);
                subInfoView.AddChidren(new Button()
                {
                    X = Application.GetRealWidth(20),
                    Width = Application.GetRealWidth(100),
                    TextAlignment = TextAlignment.CenterLeft,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                    IsBold = true,
                    Text = sensorTemp.GetIntervalValue(sensor.spk)[index]
                });
                    subInfoView.AddChidren(new Button()
                    {
                        X = Application.GetRealWidth(20),
                        Width = Application.GetRealWidth(100),
                        TextAlignment = TextAlignment.CenterLeft,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.TextFontSize,
                        IsBold = true,
                        Text = intervalList[index]
                    });
                subInfoView.AddChidren(new Button()
                {
                    Gravity = Gravity.CenterHorizontal,
                    Width = Application.GetRealWidth(100),
                    TextAlignment = TextAlignment.Center,
                    TextColor = CSS_Color.FirstLevelTitleColor,
                    TextSize = CSS_FontSize.TextFontSize,
                    IsBold = true,
                    Text = levelText[index]
                });
                    subInfoView.AddChidren(new Button()
                    {
                        Gravity = Gravity.CenterHorizontal,
                        Width = Application.GetRealWidth(100),
                        TextAlignment = TextAlignment.Center,
                        TextColor = CSS_Color.FirstLevelTitleColor,
                        TextSize = CSS_FontSize.TextFontSize,
                        IsBold = true,
                        Text = levelTextList[index]
                    });
                subInfoView.AddChidren(new Button()
                {
                    X = Application.GetRealWidth(285),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetRealWidth(38),
                    Height = Application.GetRealHeight(18),
                    Radius = (uint)Application.GetRealWidth(4),
                    BackgroundColor = levelColorList[index]
                });
                    subInfoView.AddChidren(new Button()
                    {
                        X = Application.GetRealWidth(285),
                        Gravity = Gravity.CenterVertical,
                        Width = Application.GetRealWidth(38),
                        Height = Application.GetRealHeight(18),
                        Radius = (uint)Application.GetRealWidth(4),
                        BackgroundColor = levelColorList[index]
                    });
                }
            }
            catch (Exception ex)
            {
                MainPage.Log($"环境等级信息表加载异常:{ex.Message}");
            }
@@ -788,8 +840,24 @@
        }
        /// <summary>
        /// 是否支持事件
        /// </summary>
        /// <param name="device"></param>
        /// <returns></returns>
        bool IsSupportClick(Function device)
        {
            if (device == null)
            {
                return false;
            }
            if (device.spk == SPK.SensorLight)
            {
                //先过滤掉光照传感器
                return false;
            }
            return true;
        }
        #region event
@@ -840,6 +908,7 @@
                            }
                        }
                        Console.WriteLine(updateTemp.spk);
                        for (int i = 0; i < bodyView.sensorListView.ChildrenCount; i++)
                        {
                            var sensorTag = updateTemp.spk + updateTemp.sid + updateTemp.deviceId;
@@ -858,12 +927,15 @@
                                        if (btn.Tag != null)
                                        {
                                            FunctionAttributes attr = updateTemp.GetAttribute(FunctionAttributeKey.Value);
                                            if(attr == null)
                                            if (attr == null)
                                            {
                                                switch(updateTemp.spk)
                                                switch (updateTemp.spk)
                                                {
                                                    case SPK.SensorCO2:
                                                        attr = updateTemp.GetAttribute(FunctionAttributeKey.Co2);
                                                        break;
                                                    case SPK.SensorPm10:
                                                        attr = updateTemp.GetAttribute(FunctionAttributeKey.Pm10);
                                                        break;
                                                    case SPK.SensorTemperature:
                                                        attr = updateTemp.GetAttribute(FunctionAttributeKey.Temperature);
@@ -880,6 +952,10 @@
                                                    case SPK.SensorHumidity:
                                                        attr = updateTemp.GetAttribute(FunctionAttributeKey.Humidity);
                                                        break;
                                                    case SPK.SensorLight:
                                                        attr = updateTemp.GetAttribute(FunctionAttributeKey.Illuminance);
                                                        break;
                                                }
                                            }
@@ -890,16 +966,19 @@
                                            }
                                            else if (tag == "SensorLevel")
                                            {
                                                (btn as Button).TextID = bodyView.sensorTemp.GetLevelTextList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                                (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                                if (updateTemp.spk != SPK.SensorLight)
                                                {
                                                    (btn as Button).Text = bodyView.sensorTemp.GetLevelTextList(updateTemp)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                                    (btn as Button).TextColor = bodyView.sensorTemp.GetLevelColorList(updateTemp)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                                }
                                            }
                                        }
                                    }
                                    else if (btn.GetType() == typeof(ArcSeekBar))
                                    {
                                        (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp.spk)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                        (btn as ArcSeekBar).ProgressBarColor = bodyView.sensorTemp.GetLevelColorList(updateTemp)[bodyView.sensorTemp.GetCurLevel(updateTemp) - 1];
                                        (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp.spk).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
                                        (btn as ArcSeekBar).Progress = (96 / bodyView.sensorTemp.GetLevelColorList(updateTemp).Count) * bodyView.sensorTemp.GetCurLevel(updateTemp);
                                    }
                                }
                            }