From 002e48d8baa60c8d38ba95d65cd73118ab8cdb09 Mon Sep 17 00:00:00 2001
From: wxr <464027401@qq.com>
Date: 星期五, 14 七月 2023 10:54:33 +0800
Subject: [PATCH] 设备状态刷新

---
 HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs |  423 +++++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 347 insertions(+), 76 deletions(-)

diff --git a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
index b82e1f8..a45dcc5 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -17,11 +17,24 @@
 
         Action refreshAction;
         SceneFunction sceneFunction;
+
+        bool isColorful = false;
+
         public SceneFunctionInfoEditPage(Scene s, SceneFunction fc,Action action)
         {
             bodyView = this;
             scene = s;
-            sceneFunction = fc;
+            sceneFunction = fc.localFunction.ConvertSceneFunction();
+            foreach(var ll in sceneFunction.status)
+            {
+                try
+                {
+                    var temp = fc.status.Find((obj) => obj.key == ll.key);
+                    if (temp != null)
+                        ll.value = temp.value;
+                }
+                catch { }
+            }
             refreshAction = action;
         }
 
@@ -39,78 +52,64 @@
             };
             bodyView.AddChidren(contentView);
 
-            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff));
+            var onOffStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
 
-            foreach (var attr in sceneFunction.status)
+            LoadFunctionRow(onOffStatus);
+
+            if (sceneFunction.localFunction.spk == SPK.LightRGB)
             {
-                switch (attr.key)
+                var colorfulStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
+                if (colorfulStatus != null)
                 {
-                    case FunctionAttributeKey.SetTemp:
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp));
-                        break;
-                    case FunctionAttributeKey.Mode:
-
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode));
-                        break;
-                    case FunctionAttributeKey.FanSpeed:
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed));
-                        break;
-                    case FunctionAttributeKey.Percent:
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent));
-                        break;
-                    case FunctionAttributeKey.Brightness:
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness));
-                        break;
-                    case FunctionAttributeKey.FadeTime:
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FadeTime));
-                        break;
-                    case FunctionAttributeKey.CCT:
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.CCT));
-                        break;
-                    case FunctionAttributeKey.RGB:
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.RGB));
-                        break;
-                    case "angle"://瑙掑害
-                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == "angle"));
-                        break;
+                    isColorful = true;
+                    LoadColorfulRow(colorfulStatus);
                 }
             }
-
-            //鍔犺浇寮�鍏砇ow
-            //LoadFunctionRow(sceneFunction.localFunction.trait_on_off);
-            //switch (sceneFunction.localFunction.functionType)
-            //{
-            //    case SPK.AcStandard:
-            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp"));
-            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode"));
-            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "fan"));
-            //        break;
-            //    case SPK.FloorHeatStandard:
-            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "set_temp"));
-            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "mode"));
-            //        break;
-            //    case SPK.CurtainSwitch:
-            //        //鏃犳搷浣�
-            //        break;
-            //    case SPK.CurtainTrietex:
-            //    case SPK.CurtainRoller:
-            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "percent"));
-            //        break;
-            //    case SPK.LightSwitch:
-            //        //鏃犳搷浣�
-            //        break;
-            //    case SPK.LightDimming:
-            //    case SPK.LightRGB:
-            //        LoadFunctionRow(sceneFunction.localFunction.attributes.Find((obj) => obj.key == "brightness"));
-            //        break;
-            //}
-
-            if (DB_ResidenceData.Instance.GatewayType != 0)
+            if(!isColorful)
             {
-                //鍔犺浇寤舵椂Row
-                LoadDelayRow();
-            }
+                foreach (var attr in sceneFunction.status)
+                {
+                    switch (attr.key)
+                    {
+                        case FunctionAttributeKey.SetTemp:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.SetTemp));
+                            break;
+                        case FunctionAttributeKey.Mode:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Mode));
+                            break;
+                        case FunctionAttributeKey.FanSpeed:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed));
+                            break;
+                        case FunctionAttributeKey.Percent:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent));
+                            break;
+                        case FunctionAttributeKey.Brightness:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness));
+                            break;
+                        case FunctionAttributeKey.FadeTime:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.FadeTime));
+                            break;
+                        case FunctionAttributeKey.CCT:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.CCT));
+                            break;
+                        case FunctionAttributeKey.RGB:
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.RGB));
+                            break;
+                        case "angle"://瑙掑害
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == "angle"));
+                            break;
+                        case "security"://澶у崕鎽勫儚甯冮槻鎾ら槻
+                            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == "security"));
+                            break;
+                    }
+                }
 
+                if (DB_ResidenceData.Instance.GatewayType != 0)
+                {
+                    //鍔犺浇寤舵椂Row
+                    LoadDelayRow();
+                }
+            }
             var bottomView = new FrameLayout()
             {
                 Y = Application.GetRealHeight(591),
@@ -139,15 +138,6 @@
             btnConfrim.MouseUpEventHandler = (sender, e) =>
             {
                 var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid);
-                //if (sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness) != null)
-                //{
-                //    try
-                //    {
-                //        //涓�绔彛涓嶆敮鎸佸紑鍏冲�间笌浜害鍊间竴璧峰鐞嗭紝闇�瑕佸皢寮�鍏冲�肩Щ闄ゆ帀
-                //        sceneFunction.status.Remove(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff));
-                //    }
-                //    catch { }
-                //}
                 
                 if (temp != null)
                 {
@@ -326,6 +316,9 @@
             {
                 switch (sceneStatus.key)
                 {
+                    case FunctionAttributeKey.Security:
+                        LoadEditDialog_Security(sceneStatus, btnFunctionText);
+                        break;
                     case FunctionAttributeKey.OnOff:
                         LoadEditDialog_OnOff(sceneStatus, btnFunctionText);
                         break;
@@ -358,6 +351,7 @@
                         break;
                     case "angle":
                         //鍛堢幇鐨勫脊绐�
+                        LoadEditDialog_Angle(sceneStatus, btnFunctionText);
 
                         break;
                     case "cct":
@@ -381,6 +375,64 @@
 
             #endregion
         }
+
+        /// <summary>
+        /// 鍔犺浇鍔熻兘Row
+        /// </summary>
+        void LoadColorfulRow(SceneFunctionStatus sceneStatus)
+        {
+            if (sceneStatus == null)
+                return;
+            #region Row code
+            var row = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+            };
+            contentView.AddChidren(row);
+
+            row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+
+            Button btnRight = new Button()
+            {
+                X = Application.GetRealWidth(339),
+                Gravity = Gravity.CenterVertical,
+                Width = Application.GetMinRealAverage(16),
+                Height = Application.GetMinRealAverage(16),
+                UnSelectedImagePath = "Public/Right.png",
+            };
+            row.AddChidren(btnRight);
+
+
+            var showCode = "";
+
+            var btnFunctionText = new Button()
+            {
+                Width = Application.GetRealWidth(330),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                Text = sceneStatus.GetValueText(showCode)
+            };
+            row.AddChidren(btnFunctionText);
+
+            var btnFunctionName = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.FirstLevelTitleColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.ColorfulFunction
+            };
+            row.AddChidren(btnFunctionName);
+            btnFunctionName.MouseUpEventHandler = (sender, e) =>
+            {
+                LoadEditDialog_OnOff(sceneStatus, btnFunctionText);
+            };
+
+            #endregion
+        }
+
 
 
         #region 鍔犺浇鍔熻兘鍦烘櫙鏁版嵁璋冭妭鐣岄潰
@@ -576,6 +628,109 @@
 
         }
 
+
+        /// <summary>
+        /// 鍔犺浇瀹夐槻甯冮槻閫夋嫨寮圭獥
+        /// </summary>
+        /// <param name="function"></param>
+        /// <param name="btn"></param>
+        void LoadEditDialog_Security(SceneFunctionStatus trait, Button btn)
+        {
+            Dialog dialog = new Dialog();
+
+            var pView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(pView);
+
+            var optionBaseView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(500),
+                Height = Application.GetRealHeight(160),
+                AnimateSpeed = 0.3f,
+                Animate = Animate.DownToUp,
+            };
+            pView.AddChidren(optionBaseView);
+
+            var optionView = new VerticalScrolViewLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(100),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                ScrollEnabled = false,
+            };
+            optionBaseView.AddChidren(optionView);
+
+            var btnOn = new Button()
+            {
+                Height = Application.GetRealHeight(50),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.Defense,
+                IsSelected = trait.value.ToString() == "true"
+            };
+            optionView.AddChidren(btnOn);
+
+            optionView.AddChidren(new Button() { Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
+
+            var btnOff = new Button()
+            {
+                Height = Application.GetRealHeight(50),
+                TextAlignment = TextAlignment.Center,
+                TextColor = CSS_Color.TextualColor,
+                SelectedTextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextID = StringId.Undefense,
+                IsSelected = trait.value.ToString() == "false"
+            };
+            optionView.AddChidren(btnOff);
+
+            var btnCancel = new Button()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Y = Application.GetRealHeight(8) + optionView.Bottom,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(50),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+                TextID = StringId.Cancel,
+                TextColor = CSS_Color.WarningColor,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+            };
+            optionBaseView.AddChidren(btnCancel);
+
+            dialog.Show();
+
+            pView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            btnCancel.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+            btnOn.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+                trait.value = "true";
+                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Security).value = "true";
+                btn.Text = trait.GetValueText() + trait.GetUintString();
+
+            };
+            btnOff.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+                trait.value = "false";
+                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Security).value = "false";
+                btn.Text = trait.GetValueText() + trait.GetUintString();
+
+            };
+
+        }
+
+
         /// <summary>
         /// 鍔犺浇娓╁害閫夋嫨寮圭獥
         /// </summary>
@@ -638,7 +793,8 @@
 
             var btnConfrim = new Button()
             {
-                Width = Application.GetRealWidth(320),
+                X = Application.GetRealWidth(160),
+                Width = Application.GetRealWidth(160),
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.MainColor,
                 TextSize = CSS_FontSize.TextFontSize,
@@ -686,6 +842,120 @@
             };
 
         }
+
+        /// <summary>
+        /// 鍔犺浇娓╁害閫夋嫨寮圭獥
+        /// </summary>
+        /// <param name="function"></param>
+        /// <param name="btn"></param>
+        void LoadEditDialog_Angle (SceneFunctionStatus trait, Button btn)
+        {
+            double temp = trait.min;
+            double.TryParse(trait.value, out temp);
+            trait.value = temp.ToString();
+
+            List<string> pickerItems = new List<string>();
+            if (trait == null)
+            {
+                return;
+            }
+
+            Dialog dialog = new Dialog();
+
+            var pView = new FrameLayout()
+            {
+                BackgroundColor = CSS_Color.DialogTransparentColor1,
+            };
+            dialog.AddChidren(pView);
+
+            var optionBaseView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(456 - 60),
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(260),
+                AnimateSpeed = 0.3f,
+                Animate = Animate.DownToUp,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            pView.AddChidren(optionBaseView);
+
+            var topView = new FrameLayout()
+            {
+                Gravity = Gravity.CenterHorizontal,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(40),
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            optionBaseView.AddChidren(topView);
+            topView.AddChidren(new Button() { Y = Application.GetRealHeight(39), Height = Application.GetRealHeight(1), BackgroundColor = CSS_Color.DividingLineColor });
+
+            var btnCancel = new Button()
+            {
+                X = Application.GetRealWidth(21),
+                Width = Application.GetRealWidth(100),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextColor = CSS_Color.PromptingColor1,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.Cancel,
+            };
+            topView.AddChidren(btnCancel);
+
+
+            var btnConfrim = new Button()
+            {
+                X = Application.GetRealWidth(160),
+                Width = Application.GetRealWidth(160),
+                TextAlignment = TextAlignment.CenterRight,
+                TextColor = CSS_Color.MainColor,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.Confirm,
+            };
+            topView.AddChidren(btnConfrim);
+
+            UIPickerView uIPickerView = new UIPickerView()
+            {
+                Y = Application.GetRealHeight(40),
+                Height = Application.GetRealHeight(210),
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            for (int i = trait.min; i <= trait.max; i += 1)
+            {
+                pickerItems.Add(i.ToString() + trait.GetUintString());
+            }
+            uIPickerView.setNPicker(pickerItems, null, null);
+            optionBaseView.AddChidren(uIPickerView);
+            uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.value.ToString()+ "掳"), 0, 0);
+
+            string selectItem = pickerItems[pickerItems.IndexOf(trait.value.ToString() + "掳")];
+            if (pickerItems.Contains(trait.value + trait.GetUintString()))
+            {
+                selectItem = trait.value.ToString() + trait.GetUintString();
+            }
+            //uIPickerView.setCurrentItems
+            dialog.Show();
+
+            pView.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            btnCancel.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+            uIPickerView.OnSelectChangeEvent = (int1, int2, int3) => {
+                selectItem = pickerItems[int1];
+            };
+            btnConfrim.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+                btn.Text = selectItem;
+                //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.value.ToString() ;
+                trait.value = selectItem.Replace(trait.GetUintString(), "");
+            };
+
+        }
+
 
         /// <summary>
         /// 鍔犺浇浜害閫夋嫨寮圭獥
@@ -843,6 +1113,7 @@
             };
         }
 
+
         /// <summary>
         /// 鍔犺浇cct閫夋嫨寮圭獥
         /// </summary>

--
Gitblit v1.8.0