wxr
2023-04-07 a3313818a548d51777ae4e6cc006e9d1e2c1036e
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 区域变量
@@ -34,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()
@@ -53,16 +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();
@@ -90,12 +109,169 @@
                        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.HvacCac)
            {
                var btnHumidityIcon = new Button()
                {
                    X = Application.GetRealWidth(120),
                    Y = Application.GetRealHeight(66),
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(18),
                    UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
                };
                bodyDiv.AddChidren(btnHumidityIcon);
                var btnHumidityValues = new TextButton()
                {
                    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 = Application.GetRealWidth(51),
                    Y = Application.GetRealHeight(66),
                    Width = Application.GetMinRealAverage(17),
                    Height = Application.GetMinRealAverage(17),
                    UnSelectedImagePath = "FunctionIcon/CAC/HvacCacTempIcon.png",
                };
                bodyDiv.AddChidren(btnTempIcon);
                var btnTempValues = new TextButton()
                {
                    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();
                bodyDiv.AddChidren(btnTempValues);
                var btnJinMaoIcon = new Button()
                {
                    X = Application.GetRealWidth(238),
                    Y = Application.GetRealHeight(64),
                    Width = Application.GetRealWidth(102),
                    Height = Application.GetRealHeight(29),
                    UnSelectedImagePath = "FunctionIcon/CAC/JinMaoIcon.png"
                };
                bodyDiv.AddChidren(btnJinMaoIcon);
            }
            else if (function.spk == SPK.AcstParent) {
            }
            else
            {
                if (function.spk == SPK.ClothesHanger)//晾衣架
                {
                    ClothesHangerFragment();
                }
                else if(function.spk == SPK.IpCam_Imou)
                {
                }
                else
                {
@@ -160,6 +336,60 @@
            LoadEvent_DivSkipEvent();
            LoadEvent_FunctionCollection();
        }
        /// <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>
@@ -212,10 +442,46 @@
                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.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
            {
                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);
            }
            //排序
            //btnIcon.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
            //btnName.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
            //btnFromFloor.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
            //bodyDiv.MouseLongEventHandler = (sender, e) => {
            //    OrderEvent();
            //};
        }
        /// <summary>
@@ -226,6 +492,7 @@
            switch (function.spk)
            {
                case SPK.LightDimming:
                case SPK.LightRGBW:
                case SPK.LightRGB:
                    #region Dimmer
                    var btnDimmerMinValues = new Button()
@@ -284,6 +551,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()
            {
@@ -293,7 +568,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);
@@ -324,7 +599,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)
@@ -332,7 +607,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>
@@ -367,6 +642,11 @@
        }
        /// <summary>
        /// 排序事件
        /// </summary>
        public Action OrderEvent;
        /// <summary>
        /// 加载音乐功能控制卡片
@@ -408,7 +688,7 @@
                SelectedImagePath = "MusicIcon/nextSelected.png",
            };
            bodyDiv.AddChidren(btnNext);
            LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function as A31MusicModel);
            LoadEvent_ControlMusic(btnPlay, btnNext, btnPrev, function);
            #endregion
        }
@@ -437,5 +717,8 @@
            };
            bodyDiv.AddChidren(btnLastStates);
        }
    }
}