From 505effa88b17ce8c3c7ac5403b76d9e5d0cfc2a5 Mon Sep 17 00:00:00 2001
From: wxr <wxr@hdlchina.com.cn>
Date: 星期一, 28 十月 2024 11:58:31 +0800
Subject: [PATCH] 谷歌版本问题修复

---
 HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs |  334 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 304 insertions(+), 30 deletions(-)

diff --git a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
index a873ee1..60d7722 100644
--- a/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
+++ b/HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -1,5 +1,6 @@
 锘縰sing System;
 using HDL_ON.Entity;
+using HDL_ON.Stan;
 using HDL_ON.UI.CSS;
 using Shared;
 
@@ -38,12 +39,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 +64,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();
@@ -78,55 +94,220 @@
             }
             else if (SPK.EvironmentSensorList().Contains(function.spk) || SPK.ArmSensorSpkList().Contains(function.spk)) //浼犳劅鍣ㄦ病鏈夊紑鍏虫寜閽�)
             {
+                //if(function.spk == SPK.SensorPir || function.spk == SPK.SensorWater) { }
                 var powerLowTipAttr = function.attributes.Find((obj) => obj.key == FunctionAttributeKey.BatteryState);
-                if (powerLowTipAttr != null)
+                if (powerLowTipAttr != null && !string.IsNullOrEmpty( powerLowTipAttr.state.ToString()))
                 {
-                    if (powerLowTipAttr.state.ToLower() == "low")
+                    //鐢垫睜鎺т欢銆�
+                    Button btnTipPowerLow = new Button()
                     {
-                        Button btnTipPowerLow = new Button()
-                        {
-                            X = Application.GetRealWidth(307),
-                            Y = Application.GetRealHeight(25),
-                            Width = Application.GetRealWidth(24),
-                            Height = Application.GetRealWidth(24),
-                            UnSelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
-                            SelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
-                        };
-                        this.AddChidren(btnTipPowerLow);
-                    }
+                        X = Application.GetRealWidth(307),
+                        Y = Application.GetRealHeight(45),
+                        Width = Application.GetRealWidth(24),
+                        Height = Application.GetRealWidth(24),
+                        UnSelectedImagePath = "FunctionIcon/ArmSensor/Power80pIcon.png",
+                        SelectedImagePath = "FunctionIcon/ArmSensor/PowerLowIcon.png",
+                        IsSelected = powerLowTipAttr.state.ToLower() == "low"
+                    };
+                    this.AddChidren(btnTipPowerLow);
+
+                    //var batteryControl = new BatteryPersentControl();
+                    //batteryControl.X = Application.GetRealWidth(107);
+                    //batteryControl.Y = Application.GetRealHeight(45);
+                    //batteryControl.InitControl();
+                    //this.AddChidren(batteryControl);
+                    //batteryControl.SetValue(80);
+                    //if (powerLowTipAttr.state.ToLower() == "low")
+                    //{
+                    //    batteryControl.SetValue(20);
+                    //}
+                    //batteryControl.btnIcon.Visible = true;
+                    //batteryControl.btnIcon.BackgroundColor = 0x88008800;
                 }
+
+                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.wuren;
+                                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 (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.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.GetMinRealAverage(16),
-                    Height = Application.GetMinRealAverage(16),
+                    Height = Application.GetMinRealAverage(18),
                     UnSelectedImagePath = "FunctionIcon/CAC/HvacCacHumidityIcon.png",
                 };
                 bodyDiv.AddChidren(btnHumidityIcon);
                 var btnHumidityValues = new TextButton()
                 {
-                    X = Application.GetRealWidth(70),
+                    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(110),
+                    X = Application.GetRealWidth(51),
                     Y = Application.GetRealHeight(66),
                     Width = Application.GetMinRealAverage(17),
                     Height = Application.GetMinRealAverage(17),
@@ -136,13 +317,14 @@
 
                 var btnTempValues = new TextButton()
                 {
-                    X = Application.GetRealWidth(130),
+                    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);
@@ -160,11 +342,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
                 {
@@ -174,7 +362,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()
                         {
@@ -232,6 +420,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>
         /// 鍔犺浇鎺у埗鍗$墖鍖哄煙
@@ -283,14 +523,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.online)
+            if(function.spk == SPK.SensorPir || function.spk == SPK.SensorPirHold || function.spk == SPK.SenesorMegahealth || function.spk == SPK.SensorMmvPose)
+            {
+                bodyDiv.AddChidren(btnCollectionIcon);
+            }
+
+            if (!function.isOnline())
             {
                 bodyDiv.BackgroundColor = CSS_Color.PromptingColor2;
                 btnOffline = new Button()
@@ -305,6 +551,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,7 +574,9 @@
             switch (function.spk)
             {
                 case SPK.LightDimming:
+                case SPK.LightRGBW:
                 case SPK.LightRGB:
+                case SPK.LightCCT:
                     #region Dimmer
                     var btnDimmerMinValues = new Button()
                     {
@@ -373,6 +634,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 +651,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 +682,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 +727,11 @@
         }
 
         /// <summary>
+        /// 鎺掑簭浜嬩欢 
+        /// </summary>
+        public Action OrderEvent;
+
+        /// <summary>
         /// 鍔犺浇闊充箰鍔熻兘鎺у埗鍗$墖
         /// </summary>
         void MusicFragment()

--
Gitblit v1.8.0