mac
2024-07-25 3f6685c77beeb12baf840733fb890860f4c26e7c
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,26 @@
        /// </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 || function.spk == SPK.CommonSeries)
            {
                //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/lightswitch.png";
                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/groupControl.png";
            }
            if (SPK.CurtainSpkList().Contains(function.spk))
            {//窗帘没有开关按钮
                CurtainFragment();
@@ -86,7 +101,7 @@
                        Button btnTipPowerLow = new Button()
                        {
                            X = Application.GetRealWidth(307),
                            Y = Application.GetRealHeight(25),
                            Y = Application.GetRealHeight(45),
                            Width = Application.GetRealWidth(24),
                            Height = Application.GetRealWidth(24),
                            UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
@@ -98,7 +113,7 @@
                else if (function.spk == SPK.SenesorMegahealth)
                else if (function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose  )
                {
                    var btnStatus = new Button()
                    {
@@ -122,7 +137,7 @@
                        switch (tempStatus.state)
                        {//0空,1走,2跑,3坐,4跌倒,5站
                            case "0":
                                btnStatus.TextID = StringId.SensorNormalState;
                                btnStatus.TextID = StringId.wuren;
                                btnStatus.TextColor = CSS_Color.MainColor;
                                break;
                            case "1":
@@ -176,11 +191,94 @@
                }
                else if (SPK.ArmSensorSpkList().Contains(function.spk))
                {
                    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 + "_Sensor_Status"
                    };
                    bodyDiv.AddChidren(btnStatus);
                    var alarm_status = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.AlarmStatus);
                    if(alarm_status!= null)
                    {
                        if (alarm_status.curValue.ToString() == "normal")
                        {
                            btnStatus.TextID = StringId.SensorNormalState;
                            btnStatus.TextColor = CSS_Color.MainColor;
                        }
                        else
                        {
                            btnStatus.TextID = StringId.InAlarm;
                            btnStatus.TextColor = CSS_Color.WarningColor;
                        }
                    }
                    else
                    {
                        alarm_status = function.attributes.Find((sta) => sta.key == "contact_status");
                        if (alarm_status != null)
                        {
                            if (alarm_status.curValue.ToString() == "close")
                            {
                                btnStatus.TextID = StringId.Shut;
                                btnStatus.TextColor = CSS_Color.MainColor;
                            }
                            else
                            {
                                if (function.spk == SPK.SensorDryContact || function.spk == SPK.SensorDryContact2)
                                {
                                    btnStatus.TextID = StringId.DryBreak;
                                }
                                else
                                {
                                    btnStatus.TextID = StringId.Open;
                                }
                                btnStatus.TextColor = CSS_Color.WarningColor;
                            }
                        }
                        else
                        {
                            alarm_status = function.attributes.Find((sta) => sta.key == "people_status");
                            if (alarm_status != null)
                            {
                                if (alarm_status.curValue.ToString() == "false")
                                {
                                    btnStatus.TextID = StringId.wuren;
                                    btnStatus.TextColor = CSS_Color.MainColor;
                                }
                                else
                                {
                                    btnStatus.TextID = StringId.youren;
                                    btnStatus.TextColor = CSS_Color.WarningColor;
                                }
                            }
                        }
                    }
                }
            }
            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.AvZkAiks)
            {
                //隐藏开关按钮
                btnIcon.UnSelectedImagePath = "AksIcon/aks.png";
            }
            else if(function.spk == SPK.GroupControl) { }
            else if (function.spk == SPK.HvacCac)
            {
                var btnHumidityIcon = new Button()
@@ -243,11 +341,17 @@
            }
            else if (function.spk == SPK.AcstParent) {
            }
            else
            {
                if (function.spk == SPK.ClothesHanger)//晾衣架
                {
                    ClothesHangerFragment();
                }
                else if(function.spk == SPK.IpCam_Imou || function.spk == SPK.ElectricEnergy || function.spk ==SPK.AirSwitch || function.spk == SPK.AirSwitchP3)
                {
                }
                else
                {
@@ -257,7 +361,7 @@
                    /// 开关按钮
                    /// </summary>
                    Button btnSwitch;
                    if (function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
                    if (function.spk == SPK.LightRGBW || function.spk == SPK.LightCCT || function.spk == SPK.LightRGB || function.spk == SPK.LightDimming)
                    {
                        btnSwitch = new Button()
                        {
@@ -315,6 +419,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>
        /// 加载控制卡片区域
@@ -366,19 +522,20 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            if ( !SPK.ArmSensorSpkList().Contains(function.spk)
                && function.spk != SPK.DoorLock
                && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
            if ( !SPK.ArmSensorSpkList().Contains(function.spk)&&
                function.spk != SPK.DoorLock
                && function.spk != SPK.GroupControl
                && !SPK.EnvironDeviceSpkList().Contains( function.spk))
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
            if(function.spk == SPK.SenesorMegahealth)
            if(function.spk == SPK.SensorPir || function.spk == SPK.SensorPirHold || function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
            if (!function.online)
            if (!function.isOnline())
            {
                bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
                btnOffline = new Button()
@@ -393,6 +550,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>
@@ -403,7 +573,9 @@
            switch (function.spk)
            {
                case SPK.LightDimming:
                case SPK.LightRGBW:
                case SPK.LightRGB:
                case SPK.LightCCT:
                    #region Dimmer
                    var btnDimmerMinValues = new Button()
                    {
@@ -461,6 +633,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()
            {
@@ -470,7 +650,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);
@@ -501,7 +681,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)
@@ -546,6 +726,11 @@
        }
        /// <summary>
        /// 排序事件
        /// </summary>
        public Action OrderEvent;
        /// <summary>
        /// 加载音乐功能控制卡片
        /// </summary>
        void MusicFragment()