wxr
2023-06-06 592974441a4df95fffd9167c90192da1a390b1c2
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -38,12 +38,18 @@
        /// 是否在调光
        /// </summary>
        bool onDimmerBar;
        /// <summary>
        /// 删除设备后回调给界面刷新
        /// </summary>
        Action action;
        #endregion
        public FunctionControlZone(Function func)
        public FunctionControlZone(Function func,Action action)
        {
            bodyDiv = this;
            bodyDiv.Tag = func.sid;
            function = func;
            this.action = action;
        }
        public override void RemoveFromParent()
@@ -57,17 +63,25 @@
        /// </summary>
        public void LoadFunctionDiv()
        {
            //todo 增加设备,增加功能列表卡片
            if (function == null)
            {
                this.RemoveFromParent();
                return;
            }
            LoadDiv();
            //if (function.spk == SPK.IpCam_Imou)
            //{
            //    InitIpCamDiv();
            //}
            //else
            {
                LoadDiv();
            }
            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
            if(function.spk == SPK.GroupControl)
            {
                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/lightswitch.png";
            }
            if (SPK.CurtainSpkList().Contains(function.spk))
            {//窗帘没有开关按钮
                CurtainFragment();
@@ -95,57 +109,145 @@
                        this.AddChidren(btnTipPowerLow);
                    }
                }
                else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose  )
                {
                    var btnStatus = new Button()
                    {
                        X = Application.GetRealWidth(51),
                        Y = Application.GetRealHeight(64),
                        Height = Application.GetRealHeight(18),
                        TextColor = CSS_Color.MainColor,
                        TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                        Text = "",
                        TextAlignment = TextAlignment.CenterLeft,
                        Tag = function.sid + "_SenesorMegahealth_Status"
                    };
                    bodyDiv.AddChidren(btnStatus);
                    var tempStatus = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.TargetStatus);
                    if (tempStatus != null)
                    {
                        switch (tempStatus.state)
                        {//0空,1走,2跑,3坐,4跌倒,5站
                            case "0":
                                btnStatus.TextID = StringId.SensorNormalState;
                                btnStatus.TextColor = CSS_Color.MainColor;
                                break;
                            case "1":
                                btnStatus.TextID = StringId.SomeoneIn;
                                btnStatus.TextColor = CSS_Color.WarningColor;
                                break;
                            case "2":
                                if (function.extSet.labModel)
                                {
                                    btnStatus.TextID = StringId.SomeoneRunning;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                                else
                                {
                                    btnStatus.TextID = StringId.SomeoneIn;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                                break;
                            case "3":
                                if (function.extSet.labModel)
                                {
                                    btnStatus.TextID = StringId.SomeoneSitting;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                                else
                                {
                                    btnStatus.TextID = StringId.SomeoneIn;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                                break;
                            case "4":
                                btnStatus.TextID = StringId.SomeoneFell;
                                btnStatus.TextColor = CSS_Color.WarningColor;
                                break;
                            case "5":
                                if (function.extSet.labModel)
                                {
                                    btnStatus.TextID = StringId.SomeoneStanding;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                                else
                                {
                                    btnStatus.TextID = StringId.SomeoneIn;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                                break;
                        }
                    }
                }
            }
            else if (function.spk == SPK.DoorLock)
            {
                btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png";
            }
            else if (function.spk == SPK.VideoDoorLock)
            {
                btnIcon.UnSelectedImagePath =UI2.FuntionControlView.VideoDoorLock.CommonMethod.Current.GetVideoDoorLockIcon(UI2.FuntionControlView.VideoDoorLock.CommonMethod.Comerom.function);
            }
            else if(function.spk == SPK.GroupControl) { }
            else if (function.spk == SPK.HvacCac)
            {
                var btnHumidityIcon = new Button()
                {
                    X = Application.GetRealWidth(51),
                    X = Application.GetRealWidth(120),
                    Y = Application.GetRealHeight(66),
                    Width = Application.GetRealWidth(17),
                    Height = Application.GetRealWidth(17),
                    UnSelectedImagePath = "Public/DeviceInfoIcon/HumidityIcon.png",
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(18),
                    UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
                };
                bodyDiv.AddChidren(btnHumidityIcon);
                var btnHumidityValues = new TextButton()
                {
                    X = btnHumidityIcon.Right + Application.GetRealWidth(4),
                    Y = Application.GetRealHeight(66),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    X = Application.GetRealWidth(140),
                    Y = Application.GetRealHeight(64),
                    Height = Application.GetRealHeight(18),
                    TextColor = 0xFF161616,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = function.GetAttrState(FunctionAttributeKey.RoomHumidity) + "%",
                    TextAlignment = TextAlignment.CenterLeft,
                    Tag = function.sid + "_Humidity",
                };
                btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
                bodyDiv.AddChidren(btnHumidityValues);
                Button btnTempIcon = new Button()
                {
                    X = btnHumidityValues.Right + Application.GetRealWidth(20),
                    Gravity = Gravity.CenterVertical,
                    X = Application.GetRealWidth(51),
                    Y = Application.GetRealHeight(66),
                    Width = Application.GetMinRealAverage(17),
                    Height = Application.GetMinRealAverage(17),
                    UnSelectedImagePath = "Public/DeviceInfoIcon/TempIcon.png",
                    UnSelectedImagePath = "FunctionIcon/CAC/HvacCacTempIcon.png",
                };
                bodyDiv.AddChidren(btnTempIcon);
                var btnTempValues = new TextButton()
                {
                    X = btnTempIcon.Right + Application.GetRealWidth(4),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = function.GetAttrState(FunctionAttributeKey.RoomTemp) + "°",
                    X = Application.GetRealWidth(70),
                    Y = Application.GetRealHeight(64),
                    Height = Application.GetRealHeight(18),
                    TextColor = 0xFF161616,
                    TextSize = CSS_FontSize.TextFontSize,
                    Text = function.GetAttrState(FunctionAttributeKey.RoomTemp) + "°C",
                    TextAlignment = TextAlignment.CenterLeft,
                    Tag = function.sid + "_Temp",
                };
                btnTempValues.Width = btnTempValues.GetTextWidth();
                btnTempValues.Width = btnTempValues.GetTextWidth();
                bodyDiv.AddChidren(btnTempIcon);
                bodyDiv.AddChidren(btnTempValues);
                var btnJinMaoIcon = new Button()
                {
@@ -160,11 +262,17 @@
            }
            else if (function.spk == SPK.AcstParent) {
            }
            else
            {
                if (function.spk == SPK.ClothesHanger)//晾衣架
                {
                    ClothesHangerFragment();
                }
                else if(function.spk == SPK.IpCam_Imou)
                {
                }
                else
                {
@@ -232,6 +340,58 @@
   
        }
        /// <summary>
        /// 加载ip摄像头卡片
        /// </summary>
        private void InitIpCamDiv()
        {
            btnIcon = new Button()
            {
                X = Application.GetRealWidth(10),
                Y = Application.GetRealHeight(15),
                Width = Application.GetRealWidth(32),
                Height = Application.GetRealWidth(32),
            };
            bodyDiv.AddChidren(btnIcon);
            btnName = new Button()
            {
                X = Application.GetRealWidth(8 + 10 + 32),
                Y = Application.GetRealHeight(10),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(24),
                Text = function.name,
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
            };
            bodyDiv.AddChidren(btnName);
            btnFromFloor = new Button()
            {
                X = Application.GetRealWidth(8 + 10 + 32),
                Y = Application.GetRealHeight(10 + 24),
                Width = Application.GetRealWidth(200),
                Height = Application.GetRealHeight(18),
                Text = function.GetRoomListName(),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            bodyDiv.AddChidren(btnFromFloor);
            btnCollectionIcon = new Button()
            {
                X = Application.GetRealWidth(299),
                Y = Application.GetRealHeight(10),
                Width = Application.GetMinRealAverage(40),
                Height = Application.GetMinRealAverage(40),
                SelectedImagePath = "Collection/CollectionIcon.png",
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
        }
        /// <summary>
        /// 加载控制卡片区域
@@ -290,6 +450,11 @@
                bodyDiv.AddChidren(btnCollectionIcon);
            }
            if(function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
            if (!function.online)
            {
                bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
@@ -305,6 +470,19 @@
                };
                bodyDiv.AddChidren(btnOffline);
            }
            //排序
            //btnIcon.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
            //btnName.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
            //btnFromFloor.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
            //bodyDiv.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
        }
        /// <summary>
@@ -315,6 +493,7 @@
            switch (function.spk)
            {
                case SPK.LightDimming:
                case SPK.LightRGBW:
                case SPK.LightRGB:
                    #region Dimmer
                    var btnDimmerMinValues = new Button()
@@ -373,6 +552,14 @@
        /// </summary>
        void CurtainFragment()
        {
            var onoffString = function.GetAttrState(FunctionAttributeKey.OnOff);
            var percent = onoffString == "off" ? 0 : 100;
            if (function.GetAttributes().Contains(FunctionAttributeKey.Percent))
            {
                string percentString = function.GetAttrState(FunctionAttributeKey.Percent);
                int.TryParse(percentString, out percent);
            }
            #region Curtain
            var btnCurtainClose = new Button()
            {
@@ -382,7 +569,7 @@
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png",
                IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff) == "off",
                IsSelected = percent == 0,
                Tag = function.sid + "_off"
            };
            bodyDiv.AddChidren(btnCurtainClose);
@@ -413,7 +600,7 @@
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png",
                Tag = function.sid + "_on",
                IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff) == "on",
                IsSelected = percent != 0,
            };
            bodyDiv.AddChidren(btnCurtainOpen);
            if (function.spk == SPK.CurtainRoller)
@@ -458,6 +645,11 @@
        }
        /// <summary>
        /// 排序事件
        /// </summary>
        public Action OrderEvent;
        /// <summary>
        /// 加载音乐功能控制卡片
        /// </summary>
        void MusicFragment()