wxr
2022-06-27 1f5d37fbca31293eff043f4a051be6f6876cea09
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -1,7 +1,6 @@
using System;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using HDL_ON.UI.Music;
using Shared;
namespace HDL_ON.UI
@@ -9,7 +8,7 @@
    public partial class FunctionControlZone : FrameLayout
    {
        #region 区域控件
        static FrameLayout bodyDiv;
        FunctionControlZone bodyDiv;
        /// <summary>
        /// 功能/场景icon
        /// </summary>
@@ -26,6 +25,11 @@
        /// 收藏按钮
        /// </summary>
        Button btnCollectionIcon;
        /// <summary>
        /// 离线文本
        /// </summary>
        Button btnOffline;
        #endregion
        #region 区域变量
@@ -50,6 +54,7 @@
        /// <summary>
        /// 加载功能类型控制卡片
        /// Tag 功能属性显示
        /// </summary>
        public void LoadFunctionDiv()
        {
@@ -61,8 +66,9 @@
            }
            LoadDiv();
            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
            if (SPK.CurtainSpkList().Contains(function.spk))
            {//窗帘没有开关按钮
                CurtainFragment();
@@ -90,6 +96,182 @@
                        this.AddChidren(btnTipPowerLow);
                    }
                }
            }
            else if (function.spk == SPK.DoorLock)
            {
                btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png";
            }
            else if(SPK.PanelSpkList().Contains(function.spk))//智能面板设备
            {
                var powerLowTipAttr = function.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
                if (powerLowTipAttr != null)
                {
                    if (powerLowTipAttr.state.ToLower() == "low")
                    {
                        Button btnTipPowerLow = new Button()
                        {
                            X = Application.GetRealWidth(307),
                            Y = Application.GetRealHeight(70),
                            Width = Application.GetRealWidth(24),
                            Height = Application.GetRealWidth(24),
                            UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
                            SelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
                        };
                        this.AddChidren(btnTipPowerLow);
                    }
                }
                var alarmStatusAttr = function.GetAttribute("alarm_status");
                if(alarmStatusAttr !=null)
                {
                    var btnAlarmStatus = new Button()
                    {
                        X = Application.GetRealWidth(8 + 10 + 32),
                        Y = Application.GetRealHeight(53),
                        Width = Application.GetRealWidth(200),
                        Height = Application.GetRealHeight(24),
                        TextAlignment = TextAlignment.CenterLeft,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                        Tag = "AlarmStatus"
                    };
                    if (alarmStatusAttr.state == "alarm")
                    {
                        btnAlarmStatus.TextID = StringId.InAlarm;
                        btnAlarmStatus.TextColor = CSS_Color.WarningColor;
                    }
                    else
                    {
                        btnAlarmStatus.TextID = StringId.zhengchang;
                        btnAlarmStatus.TextColor = CSS_Color.MainColor;
                    }
                    bodyDiv.AddChidren(btnAlarmStatus);
                }
                //var tipScrView1 = new HorizontalScrolViewLayout() {
                //    X = Application.GetRealWidth(10),
                //    Y =  Application.GetRealHeight(56),
                //    Height = Application.GetRealHeight(20),
                //    Width = Application.GetRealWidth(330),
                //    BackgroundColor = 0x22220022,
                //};
                //var tipScrView2 = new HorizontalScrolViewLayout()
                //{
                //    X = Application.GetRealWidth(10),
                //    Y = Application.GetRealHeight(83),
                //    Height = Application.GetRealHeight(20),
                //    Width = Application.GetRealWidth(330),
                //    BackgroundColor = 0x22220022,
                //};
                foreach (var target in function.targetSids)
                {
                    //bodyDiv.AddChidren(tipScrView1);
                    //bodyDiv.AddChidren(tipScrView2);
                    var targetObj = FunctionList.List.Functions.Find((obj) => target == obj.sid);
                    if(targetObj == null)
                    {
                        continue;
                    }
                    if (SPK.AcSpkList().Contains(targetObj.spk))
                    {
                        bodyDiv.Height = Application.GetRealHeight(126);
                        AC acDevice = new AC();
                        var btnAcMode = new Button()
                        {
                            X = Application.GetRealWidth(10),
                            Y = Application.GetRealHeight(56),
                            Width = Application.GetRealWidth(62),
                            Height = Application.GetRealHeight(19),
                            BackgroundColor = 0x334484F4,
                            TextAlignment = TextAlignment.Center,
                            TextSize = 10,
                            TextColor = 0xFF4484F4,
                            Text = Language.StringByID(StringId.AC) + acDevice.GetModeAttrText(targetObj.GetAttrState(FunctionAttributeKey.Mode)),
                            Tag = target + "screen.panel.ac.mode",
                            Radius = (uint)Application.GetRealWidth(4),
                        };
                        bodyDiv.AddChidren(btnAcMode);
                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(16)});
                        var btnAcTemp = new Button()
                        {
                            X = Application.GetRealWidth(10 + 72),
                            Y = Application.GetRealHeight(56),
                            Width = Application.GetRealWidth(62),
                            Height = Application.GetRealHeight(19),
                            BackgroundColor = 0x334484F4,
                            TextAlignment = TextAlignment.Center,
                            TextSize = 10,
                            TextColor = 0xFF4484F4,
                            Text = Language.StringByID(StringId.AC) + targetObj.GetAttrState(FunctionAttributeKey.Temperature) + "°C",
                            Radius = (uint)Application.GetRealWidth(4),
                            Tag = target + "screen.panel.ac.temp"
                        };
                        bodyDiv.AddChidren(btnAcTemp);
                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) });
                    }
                    else if (SPK.FhSpkList().Contains(targetObj.spk))
                    {
                        FloorHeating fhDevice = new FloorHeating();
                        var btnFhMode = new Button()
                        {
                            X = Application.GetRealWidth(10 + 72*2),
                            Y = Application.GetRealHeight(56),
                            Radius = (uint)Application.GetRealWidth(4),
                            Width = Application.GetRealWidth(62),
                            Height = Application.GetRealHeight(19),
                            BackgroundColor = 0x33ff9d54,
                            TextAlignment = TextAlignment.Center,
                            TextSize = 10,
                            TextColor = 0xFFff9d54,
                            Text = Language.StringByID(StringId.FloorHeating) + fhDevice.GetModeAttrText(targetObj.GetAttrState(FunctionAttributeKey.Mode)),
                            Tag = target + "screen.panel.fh.mode"
                        };
                        bodyDiv.AddChidren(btnFhMode);
                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) });
                        var btnFhTemp = new Button()
                        {
                            X = Application.GetRealWidth(10 + 72 * 3),
                            Y = Application.GetRealHeight(56),
                            Radius = (uint)Application.GetRealWidth(4),
                            Width = Application.GetRealWidth(62),
                            Height = Application.GetRealHeight(19),
                            BackgroundColor = 0x33ff9d54,
                            TextAlignment = TextAlignment.Center,
                            TextSize = 10,
                            TextColor = 0xFFff9d54,
                            Text = Language.StringByID(StringId.FloorHeating) + targetObj.GetAttrState(FunctionAttributeKey.Temperature) + "°C",
                            Tag = target + "screen.panel.fh.temp"
                        };
                        bodyDiv.AddChidren(btnFhTemp);
                        //tipScrView1.AddChidren(new Button() { Width = Application.GetRealWidth(6) });
                    }
                    else if (SPK.AirFreshSpkList().Contains(targetObj.spk))
                    {
                        AC acDevice = new AC();
                        var btnAirFreshFanSpeed = new Button()
                        {
                            X = Application.GetRealWidth(10),
                            Y = Application.GetRealHeight(83),
                            Width = Application.GetRealWidth(62),
                            Height = Application.GetRealHeight(19),
                            BackgroundColor = 0x3309bb07,
                            TextAlignment = TextAlignment.Center,
                            TextSize = 10,
                            TextColor = 0xFF09bb07,
                            Radius = (uint)Application.GetRealWidth(4),
                            Text = Language.StringByID(StringId.AirFresh) + acDevice.GetFanAttrText(targetObj.GetAttrState(FunctionAttributeKey.FanSpeed)),
                            Tag = target + "screen.panel.airFresh.mode"
                        };
                        bodyDiv.AddChidren(btnAirFreshFanSpeed);
                    }
                }
            }
            else
            {
@@ -160,6 +342,8 @@
            LoadEvent_DivSkipEvent();
            LoadEvent_FunctionCollection();
        }
        /// <summary>
@@ -212,10 +396,28 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            if ( !SPK.ArmSensorSpkList().Contains(function.spk) && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
            if ( !SPK.ArmSensorSpkList().Contains(function.spk)
                && function.spk != SPK.DoorLock
                && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
            //if (!function.online)
            //{
            //    bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
            //    btnOffline = new Button()
            //    {
            //        X = Application.GetRealWidth(8 + 10 + 32),
            //        Y = Application.GetRealHeight(28 + 24),
            //        Height = Application.GetRealHeight(30),
            //        TextID = StringId.DeviceOffline,
            //        TextColor = CSS_Color.WarningColor,
            //        TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            //        TextAlignment = TextAlignment.CenterLeft
            //    };
            //    bodyDiv.AddChidren(btnOffline);
            //}
        }
        /// <summary>
@@ -332,7 +534,7 @@
                btnCurtainOpen.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png";
                btnCurtainOpen.SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png";
            }
            LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose, function);
            LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose);
            #endregion
        }
        /// <summary>
@@ -437,5 +639,8 @@
            };
            bodyDiv.AddChidren(btnLastStates);
        }
    }
}