From 9508510f0b27da3278fa1161eb2ba3dd1e3e2030 Mon Sep 17 00:00:00 2001
From: wjc <1243177876@qq.com>
Date: 星期三, 26 七月 2023 13:14:00 +0800
Subject: [PATCH] 2023年07月26日13:12:21

---
 HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs | 3027 ++++++++++++++++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 2,799 insertions(+), 228 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..08bfede 100644
--- a/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
+++ b/HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -1,4 +1,1843 @@
-锘縰sing System;
+锘�//using System;
+//using HDL_ON.Entity;
+//using HDL_ON.UI.CSS;
+//using Shared;
+//using System.Collections.Generic;
+
+//namespace HDL_ON.UI
+//{
+//    public class SceneFunctionInfoEditPage : FrameLayout
+//    {
+//        FrameLayout bodyView;
+//        VerticalScrolViewLayout contentView;
+//        Button btnOnText;
+//        Button btnBrightnessText;
+
+//        Scene scene;
+
+//        Action refreshAction;
+//        SceneFunction sceneFunction;
+
+//        bool isColorful = false;
+
+//        public SceneFunctionInfoEditPage(Scene s, SceneFunction fc,Action action)
+//        {
+//            bodyView = this;
+//            scene = s;
+//            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;
+//        }
+
+//        public void LoadPage()
+//        {
+//            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
+
+//            new TopViewDiv(bodyView, sceneFunction.localFunction.name).LoadTopView();
+
+//            contentView = new VerticalScrolViewLayout()
+//            {
+//                Y = Application.GetRealHeight(64),
+//                Height = Application.GetRealHeight(520),
+//                ScrollEnabled = false,
+//            };
+//            bodyView.AddChidren(contentView);
+
+//            var onOffStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
+
+//            LoadFunctionRow(onOffStatus);
+
+//            if (sceneFunction.localFunction.spk == SPK.LightRGB)
+//            {
+//                var colorfulStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
+//                if (colorfulStatus != null)
+//                {
+//                    isColorful = true;
+//                    LoadColorfulRow(colorfulStatus);
+//                }
+//            }
+//            if(!isColorful)
+//            {
+//                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),
+//                Height = Application.GetRealHeight(106),
+//                BackgroundColor = CSS_Color.MainBackgroundColor,
+//                Radius = (uint)Application.GetRealWidth(16),
+//            };
+//            bodyView.AddChidren(bottomView);
+
+//            var btnConfrim = new Button()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                Y = Application.GetRealHeight(12),
+//                Width = Application.GetRealWidth(220),
+//                Height = Application.GetRealWidth(44),
+//                TextAlignment = TextAlignment.Center,
+//                TextColor = CSS_Color.MainBackgroundColor,
+//                BackgroundColor = CSS_Color.MainColor,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                IsBold = true,
+//                Radius = (uint) Application.GetRealWidth(22),
+//                TextID = StringId.Complete
+//            };
+//            bottomView.AddChidren(btnConfrim);
+
+//            btnConfrim.MouseUpEventHandler = (sender, e) =>
+//            {
+//                var temp = scene.functions.Find((obj) => obj.sid == sceneFunction.sid);
+                
+//                if (temp != null)
+//                {
+//                    temp.delay = sceneFunction.delay;
+//                    foreach(var attr in sceneFunction.status)
+//                    {
+//                        var keva = temp.status.Find((obj) => obj.key == attr.key);
+//                        if (keva != null)
+//                        {
+//                            keva.value = attr.value;
+//                        }
+//                    }
+//                }
+//                else
+//                {
+//                    scene.functions.Add(sceneFunction);
+//                }
+//                if (!string.IsNullOrEmpty(scene.userSceneId))
+//                {
+//                    var result = scene.UpdateScene();
+//                    if (result == DAL.Server.StateCode.SUCCESS)
+//                    {
+//                        refreshAction();
+//                        this.RemoveFromParent();
+//                    }
+//                    else
+//                    {
+//                        DAL.Server.IMessageCommon.Current.ShowErrorInfoAlter(result);
+//                    }
+//                }
+//                else
+//                {
+//                    refreshAction();
+//                    this.RemoveFromParent();
+//                }
+//            };
+//        }
+
+
+//        /// <summary>
+//        /// 鍔犺浇鍔熻兘Row
+//        /// </summary>
+//        void LoadFunctionRow(SceneFunctionStatus sceneStatus)
+//        {
+//            if (sceneStatus == null)
+//                return;
+//            #region Row code
+//            var row = new FrameLayout()
+//            {
+//                Height = Application.GetRealHeight(50),
+//                BackgroundColor = CSS_Color.MainBackgroundColor,
+//            };
+//            contentView.AddChidren(row);
+
+
+//            if (sceneStatus.key != FunctionAttributeKey.OnOff)
+//            {
+//                row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+//            }
+//            else
+//            {
+//                if(sceneStatus.value == "stop")
+//                {
+//                    sceneStatus.value = "on";
+//                }
+//            }
+//            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 = "";
+
+//            if (sceneStatus.key == FunctionAttributeKey.Mode)
+//            {
+//                if (DB_ResidenceData.Instance.GatewayType == 0)
+//                {
+//                    if (SPK.AcSpkList().Contains(sceneFunction.localFunction.spk))
+//                    {
+//                        //0 鍒跺喎1鍒剁儹锛�2閫氶锛�3鑷姩锛�4闄ゆ箍
+//                        switch (sceneStatus.value)
+//                        {
+//                            case "0":
+//                                showCode = "cool";
+//                                break;
+//                            case "1":
+//                                showCode = "heat";
+//                                break;
+//                            case "2":
+//                                showCode = "fan";
+//                                break;
+//                            case "3":
+//                                showCode = "auto";
+//                                break;
+//                            case "4":
+//                                showCode = "dry";
+//                                break;
+//                        }
+//                    }
+//                    else if (SPK.FhSpkList().Contains(sceneFunction.localFunction.spk))
+//                    {
+//                        //1:鏅��,2:鐧藉ぉ,3:澶滄櫄,4:绂诲紑,5:鏃堕棿
+//                        switch (sceneStatus.value)
+//                        {
+//                            case "5":
+//                                showCode = "timer";
+//                                break;
+//                            case "1":
+//                                showCode = "normal";
+//                                break;
+//                            case "2":
+//                                showCode = "day";
+//                                break;
+//                            case "3":
+//                                showCode = "night";
+//                                break;
+//                            case "4":
+//                                showCode = "away";
+//                                break;
+//                        }
+//                    }
+//                }
+//            }
+
+//            var btnFunctionText = new Button()
+//            {
+//                Width = Application.GetRealWidth(330),
+//                TextAlignment = TextAlignment.CenterRight,
+//                TextColor = CSS_Color.PromptingColor1,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                Text = sceneStatus.GetValueText(showCode) + sceneStatus.GetUintString()
+//            };
+//            row.AddChidren(btnFunctionText);
+//            if (sceneStatus.key == FunctionAttributeKey.RGB)
+//            {
+//                btnFunctionText.Width = Application.GetRealWidth(28);
+//                btnFunctionText.Height = Application.GetRealWidth(28);
+//                btnFunctionText.X = Application.GetRealWidth(330 - 28);
+//                btnFunctionText.Gravity = Gravity.CenterVertical;
+//                btnFunctionText.Radius = (uint)Application.GetRealWidth(8);
+//                btnFunctionText.Text = "";
+//                btnFunctionText.BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(sceneStatus.value));
+//            }
+
+
+
+//            if (sceneStatus.key == FunctionAttributeKey.OnOff)
+//            {
+//                btnOnText = btnFunctionText;
+//            }
+//            else if (sceneStatus.key == FunctionAttributeKey.Brightness || sceneStatus.key == FunctionAttributeKey.Percent)
+//            {
+//                int outT = 0;
+//                int.TryParse(sceneStatus.value, out outT);
+//                if (outT < 0)
+//                    sceneStatus.value = "0";
+//                btnBrightnessText = btnFunctionText;
+//            }
+
+//            var btnFunctionName = new Button()
+//            {
+//                X = Application.GetRealWidth(16),
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                Text = sceneStatus.GetNameText()
+//            };
+//            row.AddChidren(btnFunctionName);
+//            btnFunctionName.MouseUpEventHandler = (sender, e) =>
+//            {
+//                switch (sceneStatus.key)
+//                {
+//                    case FunctionAttributeKey.Security:
+//                        LoadEditDialog_Security(sceneStatus, btnFunctionText);
+//                        break;
+//                    case FunctionAttributeKey.OnOff:
+//                        LoadEditDialog_OnOff(sceneStatus, btnFunctionText);
+//                        break;
+//                    case FunctionAttributeKey.Brightness:
+//                        LoadEditDialog_Percent(sceneStatus, btnFunctionText);
+//                        break;
+//                    case FunctionAttributeKey.Mode:
+//                        var statusList = new List<string>();
+//                        var tr = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.Mode);
+//                        foreach(var t in tr.value)
+//                        {
+//                            statusList.Add(t);
+//                        }
+//                        LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText,statusList);
+//                        break;
+//                    case FunctionAttributeKey.FanSpeed:
+//                        var fanStatusList = new List<string>();
+//                        var tr1 = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
+//                        foreach (var t in tr1.value)
+//                        {
+//                            fanStatusList.Add(t);
+//                        }
+//                        LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, fanStatusList);
+//                        break;
+//                    case FunctionAttributeKey.SetTemp:
+//                        LoadEditDialog_Temp(sceneStatus, btnFunctionText);
+//                        break;
+//                    case FunctionAttributeKey.FadeTime:
+
+//                        break;
+//                    case "angle":
+//                        //鍛堢幇鐨勫脊绐�
+//                        LoadEditDialog_Angle(sceneStatus, btnFunctionText);
+
+//                        break;
+//                    case "cct":
+//                        LoadEditDialog_CCT(sceneStatus, btnFunctionText);
+//                        break;
+//                    case FunctionAttributeKey.RGB:
+//                        btnFunctionText.Width = Application.GetRealWidth(28);
+//                        btnFunctionText.Height = Application.GetRealWidth(28);
+//                        btnFunctionText.X = Application.GetRealWidth(330 - 28);
+//                        btnFunctionText.Gravity = Gravity.CenterVertical;
+//                        btnFunctionText.Radius = (uint)Application.GetRealWidth(8);
+//                        btnFunctionText.Text = "";
+
+//                        LoadEditDialog_RGB(sceneStatus, btnFunctionText);
+//                        break;
+//                    case FunctionAttributeKey.Percent:
+//                        LoadEditDialog_Percent(sceneStatus, btnFunctionText);
+//                        break;
+//                }
+//            };
+
+//            #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 鍔犺浇鍔熻兘鍦烘櫙鏁版嵁璋冭妭鐣岄潰
+//        /// <summary>
+//        /// 鍔犺浇寤舵椂Row
+//        /// </summary>
+//        void LoadDelayRow()
+//        {
+//            #region 寤舵椂row
+//            FrameLayout delayRow = new FrameLayout()
+//            {
+//                Height = Application.GetRealWidth(50),
+//                BackgroundColor = CSS_Color.MainBackgroundColor
+//            };
+//            contentView.AddChidren(delayRow);
+//            delayRow.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+
+//            Button btnDelayRight = new Button()
+//            {
+//                X = Application.GetRealWidth(339),
+//                Gravity = Gravity.CenterVertical,
+//                Width = Application.GetMinRealAverage(16),
+//                Height = Application.GetMinRealAverage(16),
+//                UnSelectedImagePath = "Public/Right.png",
+//            };
+//            delayRow.AddChidren(btnDelayRight);
+
+//            var btnDelayInfo = new Button()
+//            {
+//                Width = Application.GetRealWidth(327),
+//                TextAlignment = TextAlignment.CenterRight,
+//                TextColor = CSS_Color.PromptingColor1,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                Text = new Scene() { delay = sceneFunction.delay }.GetDelayText()
+//            };
+//            delayRow.AddChidren(btnDelayInfo);
+
+//            Button btnSceneDelayTitle = new Button()
+//            {
+//                X = Application.GetRealWidth(16),
+//                TextAlignment = TextAlignment.CenterLeft,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                TextID = StringId.Delay,
+//            };
+//            delayRow.AddChidren(btnSceneDelayTitle);
+
+
+//            btnSceneDelayTitle.MouseUpEventHandler = (sender, e) => {
+//                Action<string> action = (obj) => {
+//                    sceneFunction.delay = obj;
+//                    btnDelayInfo.Text = new Scene() { delay = sceneFunction.delay }.GetDelayText();
+//                };
+//                Dictionary<string, string> items = new Dictionary<string, string>();
+//                items.Add("30", "30s");
+//                items.Add("60", "1min");
+//                items.Add("120", "2min");
+//                items.Add("300", "5min");
+//                new PublicAssmebly().SetSceneDelayDialog(action, sceneFunction.delay);
+//            };
+//            #endregion
+
+
+//        }
+
+//        #endregion
+
+//        #region 灞炴�ч�夋嫨寮圭獥
+//        /// <summary>
+//        /// 鍔犺浇寮�鍏抽�夋嫨寮圭獥
+//        /// </summary>
+//        /// <param name="function"></param>
+//        /// <param name="btn"></param>
+//        void LoadEditDialog_OnOff(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.On,
+//                IsSelected = trait.value.ToString() == "on"
+//            };
+//            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.OFF,
+//                IsSelected = trait.value.ToString() == "off"
+//            };
+//            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 = "on";
+//                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "on";
+//                btn.Text = trait.GetValueText() + trait.GetUintString();
+
+//                var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
+//                if (temp == null)
+//                {
+//                    temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
+//                }
+//                if (temp != null)
+//                {
+//                    if (temp.value == "0")
+//                    {
+//                        temp.value = "100";
+//                    }
+//                    btnBrightnessText.Text = temp.GetValueText() + "%";
+//                }
+//            };
+//            btnOff.MouseUpEventHandler = (sender,e) =>{
+//                dialog.Close();
+//                trait.value = "off";
+//                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "off";
+//                btn.Text= trait.GetValueText() + trait.GetUintString();
+
+//                var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
+//                if(temp == null)
+//                {
+//                    temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
+//                }
+//                if (temp != null)
+//                {
+//                    if (temp.value != "0")
+//                    {
+//                        temp.value = "0";
+//                    }
+//                    btnBrightnessText.Text = temp.GetValueText() + "%";
+//                }
+//            };
+
+//        }
+
+
+//        /// <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>
+//        /// <param name="function"></param>
+//        /// <param name="btn"></param>
+//        void LoadEditDialog_Temp(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()), 4, 5);
+
+//            string selectItem = pickerItems[0];
+//            if (pickerItems.Contains(trait.value + trait.GetUintString()))
+//            {
+//                selectItem = trait.value.ToString() + trait.GetUintString();
+//            }
+
+//            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>
+//        /// 鍔犺浇娓╁害閫夋嫨寮圭獥
+//        /// </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>
+//        /// 鍔犺浇浜害閫夋嫨寮圭獥
+//        /// </summary>
+//        /// <param name="function"></param>
+//        /// <param name="btn"></param>
+//        void LoadEditDialog_Percent(SceneFunctionStatus trait, Button btn)
+//        {
+//            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(467),
+//                Gravity = Gravity.CenterHorizontal,
+//                Width = Application.GetRealWidth(343),
+//                Height = Application.GetRealHeight(180),
+//                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 btnTitle = new Button()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                TextAlignment = TextAlignment.Center,
+//                Width = Application.GetRealWidth(100),
+//                Text = trait.GetNameText(),
+//                IsBold = true,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//            };
+//            topView.AddChidren(btnTitle);
+
+//            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(200),
+//                Width = Application.GetRealWidth(120),
+//                TextAlignment = TextAlignment.CenterRight,
+//                TextColor = CSS_Color.MainColor,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                TextID = StringId.Confirm,
+//            };
+//            topView.AddChidren(btnConfrim);
+
+//            Button btnMinusSignIcon = new Button()
+//            {
+//                X = Application.GetRealWidth(26),
+//                Y = Application.GetRealHeight(118),
+//                Width = Application.GetMinRealAverage(24),
+//                Height = Application.GetMinRealAverage(24),
+//                UnSelectedImagePath = "Public/MinusSignIcon.png",
+//            };
+//            optionBaseView.AddChidren(btnMinusSignIcon);
+
+//            DiyImageSeekBar controlBar = new DiyImageSeekBar()
+//            {
+//                X = btnMinusSignIcon.Right + Application.GetRealWidth(12),
+//                Y = Application.GetRealHeight(100),//414,璁捐鏁版嵁
+//                Width = Application.GetRealWidth(220),
+//                Height = Application.GetRealHeight(54),
+//                SeekBarViewHeight = Application.GetRealHeight(8),
+//                ThumbImagePath = "Public/ThumbImage.png",
+//                ThumbImageHeight = Application.GetRealHeight(54),
+//                ProgressBarColor = CSS_Color.MainColor,
+//                ProgressTextColor = CSS_Color.FirstLevelTitleColor,
+//                ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                MaxValue = 100,
+//                Progress = trait.value.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32(trait.value.Replace("{}", "")),
+//                SeekBarPadding = Application.GetRealWidth(20),
+//            };
+//            optionBaseView.AddChidren(controlBar);
+
+//            Button btnPlusSgnIcon = new Button()
+//            {
+//                X = controlBar.Right + Application.GetRealWidth(12),
+//                Y = Application.GetRealHeight(118),
+//                Width = Application.GetMinRealAverage(24),
+//                Height = Application.GetMinRealAverage(24),
+//                UnSelectedImagePath = "Public/PlusSignIcon.png",
+//            };
+//            optionBaseView.AddChidren(btnPlusSgnIcon);
+
+//            btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
+//            {
+//                controlBar.Progress--;
+//            };
+//            btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
+//            {
+//                controlBar.Progress++;
+//            };
+
+//            dialog.Show();
+//            pView.MouseUpEventHandler = (sender, e) =>
+//            {
+//                dialog.Close();
+//            };
+
+//            btnCancel.MouseUpEventHandler = (sender, e) =>
+//            {
+//                dialog.Close();
+//            };
+//            btnConfrim.MouseUpEventHandler = (sender, e) =>
+//            {
+//                dialog.Close();
+//                trait.value = controlBar.Progress.ToString();
+//                btn.Text = trait.value + trait.GetUintString();
+
+//                var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
+//                if (temp != null)
+//                {
+//                    if (controlBar.Progress > 0)
+//                    {
+//                        temp.value = "on";
+//                    }
+//                    else
+//                    {
+//                        temp.value = "off";
+//                    }
+//                    btnOnText.Text = temp.GetValueText();
+//                }
+//            };
+//        }
+
+
+//        /// <summary>
+//        /// 鍔犺浇cct閫夋嫨寮圭獥
+//        /// </summary>
+//        /// <param name="function"></param>
+//        /// <param name="btn"></param>
+//        void LoadEditDialog_CCT(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(200),
+//                Width = Application.GetRealWidth(120),
+//                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 += 100)
+//            {
+//                pickerItems.Add(i.ToString() + trait.GetUintString());
+//            }
+//            uIPickerView.setNPicker(pickerItems, null, null);
+//            optionBaseView.AddChidren(uIPickerView);
+//            uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.value.ToString()), 4, 5);
+
+//            string selectItem = pickerItems[0];
+//            if (pickerItems.Contains(trait.value + trait.GetUintString()))
+//            {
+//                selectItem = trait.value.ToString() + trait.GetUintString();
+//            }
+
+//            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>
+//        /// 鍔犺浇rgb閫夋嫨寮圭獥
+//        /// </summary>
+//        /// <param name="function"></param>
+//        /// <param name="btn"></param>
+//        void LoadEditDialog_RGB(SceneFunctionStatus trait, Button btn)
+//        {
+//            string rgbString = trait.value;
+
+//            Light tempLight = new Light();
+
+//            if (trait == null)
+//            {
+//                return;
+//            }
+
+//            Dialog dialog = new Dialog();
+
+//            var bodyView = new FrameLayout();
+//            dialog.AddChidren(bodyView);
+
+//            var contentView = new FrameLayout()
+//            {
+//                Gravity = Gravity.Center,
+//                BackgroundColor = CSS_Color.MainBackgroundColor,
+//                Width = Application.GetRealWidth(343),
+//                Height = Application.GetRealHeight(52 + 44 + 18 + 22 + 248),
+//                Radius = (uint)Application.GetRealWidth(12),
+//            };
+//            bodyView.AddChidren(contentView);
+
+//            #region 鏍囬鍖�
+//            var titleView = new FrameLayout()
+//            {
+//                Width = Application.GetRealWidth(343),
+//                Height = Application.GetRealHeight(52),
+//            };
+//            contentView.AddChidren(titleView);
+
+//            var btnTitle = new Button()
+//            {
+//                Height = Application.GetRealHeight(52),
+//                Gravity = Gravity.Center,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                TextColor = CSS_Color.MainColor,
+//                TextID = StringId.ColorValue,
+//                TextAlignment = TextAlignment.Center,
+//            };
+//            titleView.AddChidren(btnTitle);
+//            titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) });
+
+//            #endregion
+
+//            int attrViewHight = Application.GetRealHeight(18 + 22+ 248);
+//            //灞炴�ц缃尯鍩�
+//            var attrView = new FrameLayout()
+//            {
+//                Y = Application.GetRealHeight(52),
+//                Width = Application.GetRealWidth(343),
+//                Height = attrViewHight
+//            };
+//            contentView.AddChidren(attrView);
+//            attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
+
+            
+
+//            #region RGB
+//            var rgbView = new FrameLayout()
+//            {
+//                Height = Application.GetRealHeight(248)
+//            };
+//            attrView.AddChidren(rgbView);
+
+
+//            var btnCurColor = new Button()
+//            {
+//                X = Application.GetRealWidth(24),
+//                Y = Application.GetRealHeight(10),
+//                Width = Application.GetMinRealAverage(24),
+//                Height = Application.GetMinRealAverage(24),
+//                Radius = (uint)Application.GetMinRealAverage(8),
+//                BorderColor = CSS_Color.PromptingColor2,
+//                BorderWidth = 1,
+//                BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(trait.value))
+//            };
+//            rgbView.AddChidren(btnCurColor);
+
+//            //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�)
+//            var framePickerBack = new FrameLayout();
+//            framePickerBack.Gravity = Gravity.CenterHorizontal;
+//            framePickerBack.Y = Application.GetRealHeight(20);
+//            framePickerBack.Width = Application.GetMinRealAverage(198);
+//            framePickerBack.Height = Application.GetMinRealAverage(198);
+//            rgbView.AddChidren(framePickerBack);
+
+//            var colorPicker = new ColorPicker()
+//            {
+//                ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
+//            };
+//            framePickerBack.AddChidren(colorPicker);
+
+
+
+
+
+
+//            //鐧界偣鎺т欢
+//            var btnWhiteRound = new Button();
+//            btnWhiteRound.Width = Application.GetRealWidth(24);
+//            btnWhiteRound.Height = Application.GetRealWidth(24);
+//            btnWhiteRound.UnSelectedImagePath = "FunctionIcon/Light/ColorWheelTip.png";
+//            btnWhiteRound.Visible = false;
+//            framePickerBack.AddChidren(btnWhiteRound);
+
+
+//            //褰撳墠鐐瑰嚮鐨勩�愮偣銆戞槸鍚︽纭�
+//            bool pointIsRight = false;
+//            //鍦嗙殑鍗婂緞(鑰冭檻杈圭晫,闇�瑕佽缃畠鐨勫崐寰勬瘮杈冨皬涓�鐐�)
+//            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12);
+
+
+//            colorPicker.ColorChaged += (sender2, e2) => {
+//                rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString();
+//                //trait.value = rgbString;
+//                btnCurColor.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString));
+//            };
+//            colorPicker.MouseDownEventHandler += (sender, e) =>
+//            {
+//                pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
+//                if (pointIsRight == false)
+//                {
+//                    //鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐�
+//                    return;
+//                }
+//                //鏄剧ず鐧界偣
+//                btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
+//                btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
+//                if (btnWhiteRound.Visible == false)
+//                {
+//                    btnWhiteRound.Visible = true;
+//                }
+//            };
+
+//            colorPicker.MouseMoveEventHandler += (sender, e) =>
+//            {
+//                //褰撻紶鏍囩偣涓嬩簨浠跺鐞�
+//                colorPicker.MouseDownEventHandler(sender, e);
+//            };
+
+
+//            #endregion
+
+
+
+
+//            #region bottom View
+//            var bottomView = new FrameLayout()
+//            {
+//                Y = Application.GetRealHeight(52) + attrViewHight,
+//                Height = Application.GetRealHeight(46),
+//            };
+//            contentView.AddChidren(bottomView);
+//            bottomView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor });
+
+//            var btnCancel = new Button()
+//            {
+//                Width = Application.GetRealWidth(172),
+//                Height = Application.GetRealHeight(44),
+//                TextAlignment = TextAlignment.Center,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                TextColor = CSS_Color.TextualColor,
+//                TextID = StringId.Cancel,
+//            };
+//            bottomView.AddChidren(btnCancel);
+//            btnCancel.MouseUpEventHandler = (sender, e) => {
+//                dialog.Close();
+//            };
+
+//            var btnComplete = new Button()
+//            {
+//                X = Application.GetRealWidth(172),
+//                Width = Application.GetRealWidth(172),
+//                Height = Application.GetRealHeight(46),
+//                BackgroundColor = CSS_Color.MainColor,
+//                TextColor = CSS_Color.MainBackgroundColor,
+//                TextAlignment = TextAlignment.Center,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//                TextID = StringId.Complete
+//            };
+//            bottomView.AddChidren(btnComplete);
+
+//            //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
+//            int mRectCornerID = HDLUtils.RectCornerBottomRight;
+//            btnComplete.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID);
+//            btnComplete.MouseUpEventHandler = (sender, e) => {
+//                dialog.Close();
+//                trait.value = rgbString;
+//                btn.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString));
+//            };
+
+//            #endregion
+
+
+//            dialog.Show();
+
+//        }
+
+
+//        /// <summary>
+//        /// 妫�娴嬬偣鍑荤偣
+//        /// </summary>
+//        /// <param name="circleR">鍦嗙殑鍗婂緞</param>
+//        /// <param name="circleX">鍦嗗績X杞�</param>
+//        /// <param name="circleY">鍦嗗績Y杞�</param>
+//        /// <param name="pointX">鐐瑰嚮鐐圭殑X杞�</param>
+//        /// <param name="pointY">鐐瑰嚮鐐圭殑Y杞�</param>
+//        /// <returns></returns>
+//        private bool CheckPoint(int circleR, int circleX, int circleY, int pointX, int pointY)
+//        {
+//            int dwidth = circleX - pointX;
+//            if (dwidth < 0) { dwidth *= -1; }
+
+//            int dHeight = circleY - pointY;
+//            if (dHeight < 0) { dHeight *= -1; }
+
+//            //鏍规嵁涓夎鍑芥暟,姹備笁瑙掑舰鐨勬枩杈归暱
+//            int dlength = dwidth * dwidth + dHeight * dHeight;
+//            //鍗婂緞闀垮害(涓嶅紑鏂�,鎵�浠ユ槸鎸夊钩鏂圭畻)
+//            circleR *= circleR;
+//            if (dlength < circleR)
+//            {
+//                //濡傛灉缁勬垚鐨勪笁瑙掑舰骞舵病鏈夐暱杩囧崐寰�,鍒欎唬琛ㄨ繕鍦ㄥ渾鍐�(涓嶅厑璁哥偣杈圭晫)
+//                return true;
+//            }
+//            return false;
+//        }
+
+
+
+//        /// <summary>
+//        /// 鍔犺浇鍙樺寲閫熷害閫夋嫨寮圭獥
+//        /// </summary>
+//        /// <param name="function"></param>
+//        /// <param name="btn"></param>
+//        void LoadEditDialog_FadeTime(SceneFunctionStatus trait, Button btn)
+//        {
+//            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(467),
+//                Gravity = Gravity.CenterHorizontal,
+//                Width = Application.GetRealWidth(343),
+//                Height = Application.GetRealHeight(180),
+//                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 btnTitle = new Button()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                TextAlignment = TextAlignment.Center,
+//                Width = Application.GetRealWidth(100),
+//                Text = trait.GetNameText(),
+//                IsBold = true,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//            };
+//            topView.AddChidren(btnTitle);
+
+//            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(200),
+//                Width = Application.GetRealWidth(120),
+//                TextAlignment = TextAlignment.CenterRight,
+//                TextColor = CSS_Color.MainColor,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                TextID = StringId.Confirm,
+//            };
+//            topView.AddChidren(btnConfrim);
+
+//            Button btnMinusSignIcon = new Button()
+//            {
+//                X = Application.GetRealWidth(26),
+//                Y = Application.GetRealHeight(118),
+//                Width = Application.GetMinRealAverage(24),
+//                Height = Application.GetMinRealAverage(24),
+//                Text = "0s",
+//                TextColor = CSS_Color.PromptingColor1,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//            };
+//            optionBaseView.AddChidren(btnMinusSignIcon);
+
+//            DiyImageSeekBar controlBar = new DiyImageSeekBar()
+//            {
+//                X = btnMinusSignIcon.Right + Application.GetRealWidth(12),
+//                Y = Application.GetRealHeight(100),//414,璁捐鏁版嵁
+//                Width = Application.GetRealWidth(220),
+//                Height = Application.GetRealHeight(54),
+//                SeekBarViewHeight = Application.GetRealHeight(8),
+//                ThumbImagePath = "Public/ThumbImage.png",
+//                ThumbImageHeight = Application.GetRealHeight(54),
+//                ProgressBarColor = CSS_Color.MainColor,
+//                ProgressTextColor = CSS_Color.FirstLevelTitleColor,
+//                ProgressTextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//                MaxValue = 100,
+//                Progress = trait.value.ToString().Replace("{}", "") == "" ? 0 : Convert.ToInt32(trait.value.Replace("{}", "")),
+//                SeekBarPadding = Application.GetRealWidth(20),
+//            };
+//            optionBaseView.AddChidren(controlBar);
+
+//            Button btnPlusSgnIcon = new Button()
+//            {
+//                X = controlBar.Right + Application.GetRealWidth(12),
+//                Y = Application.GetRealHeight(118),
+//                Width = Application.GetMinRealAverage(24),
+//                Height = Application.GetMinRealAverage(24),
+//                Text = "10s",
+//                TextColor = CSS_Color.PromptingColor1,
+//                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+//            };
+//            optionBaseView.AddChidren(btnPlusSgnIcon);
+
+//            btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
+//            {
+//                controlBar.Progress--;
+//            };
+//            btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
+//            {
+//                controlBar.Progress++;
+//            };
+
+//            dialog.Show();
+//            pView.MouseUpEventHandler = (sender, e) =>
+//            {
+//                dialog.Close();
+//            };
+
+//            btnCancel.MouseUpEventHandler = (sender, e) =>
+//            {
+//                dialog.Close();
+//            };
+//            btnConfrim.MouseUpEventHandler = (sender, e) =>
+//            {
+//                dialog.Close();
+//                trait.value = controlBar.Progress.ToString();
+//                btn.Text = trait.value + trait.GetUintString();
+//            };
+//        }
+
+
+//        /// <summary>
+//        /// 鍔犺浇鍔熻兘灞炴�ф暟鎹�夋嫨寮圭獥
+//        /// </summary>
+//        void LoadEditDialog_FunctionPar(SceneFunctionStatus trait, Button btn,List<string> statusList)
+//        {
+//            Button lastButton = new Button();
+//            var lastData = "";
+//            var lastText = "";
+//            Dialog dialog = new Dialog();
+
+//            if(DB_ResidenceData.Instance.GatewayType == 0)
+//            {
+//                if (SPK.AcSpkList().Contains(sceneFunction.localFunction.spk))
+//                {
+//                    //0 鍒跺喎1鍒剁儹锛�2閫氶锛�3鑷姩锛�4闄ゆ箍
+//                    for (int i = 0; i < statusList.Count; i++)
+//                    {
+//                        if (statusList[i] == "0")
+//                        {
+//                            statusList[i] = "cool";
+//                        }
+//                        else if (statusList[i] == "1")
+//                        {
+//                            statusList[i] = "heat";
+//                        }
+//                        else if (statusList[i] == "2")
+//                        {
+//                            statusList[i] = "fan";
+//                        }
+//                        else if (statusList[i] == "3")
+//                        {
+//                            statusList[i] = "auto";
+//                        }
+//                        else if (statusList[i] == "4")
+//                        {
+//                            statusList[i] = "dry";
+//                        }
+//                    }
+//                }
+//                else if (SPK.FhSpkList().Contains(sceneFunction.localFunction.spk))
+//                {
+//                    //1:鏅��,2:鐧藉ぉ,3:澶滄櫄,4:绂诲紑,5:鏃堕棿
+//                    for (int i = 0; i < statusList.Count; i++)
+//                    {
+//                        if (statusList[i] == "5")
+//                        {
+//                            statusList[i] = "timer";
+//                        }
+//                        else if (statusList[i] == "1")
+//                        {
+//                            statusList[i] = "normal";
+//                        }
+//                        else if (statusList[i] == "2")
+//                        {
+//                            statusList[i] = "day";
+//                        }
+//                        else if (statusList[i] == "3")
+//                        {
+//                            statusList[i] = "night";
+//                        }
+//                        else if (statusList[i] == "4")
+//                        {
+//                            statusList[i] = "away";
+//                        }
+//                    }
+
+//                }
+//            }
+
+//            var pView = new FrameLayout()
+//            {
+//                BackgroundColor = CSS_Color.DialogTransparentColor1,
+//            };
+//            dialog.AddChidren(pView);
+
+//            var optionBaseView = new FrameLayout()
+//            {
+//                Y = Application.GetRealHeight(579 - 50 * statusList.Count),
+//                Gravity = Gravity.CenterHorizontal,
+//                Width = Application.GetRealWidth(343),
+//                Height = Application.GetRealHeight(50 * statusList.Count + 50),
+//                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(50),
+//                BackgroundColor = CSS_Color.MainBackgroundColor,
+//                Radius = (uint)Application.GetRealWidth(12),
+//            };
+//            optionBaseView.AddChidren(topView);
+
+//            var btnTitle = new Button()
+//            {
+//                Gravity = Gravity.CenterHorizontal,
+//                TextAlignment = TextAlignment.Center,
+//                Width = Application.GetRealWidth(100),
+//                Text = trait.GetNameText(),
+//                IsBold = true,
+//                TextColor = CSS_Color.FirstLevelTitleColor,
+//                TextSize = CSS_FontSize.SubheadingFontSize,
+//            };
+//            topView.AddChidren(btnTitle);
+
+//            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(200),
+//                Width = Application.GetRealWidth(120),
+//                TextAlignment = TextAlignment.CenterRight,
+//                TextColor = CSS_Color.MainColor,
+//                TextSize = CSS_FontSize.TextFontSize,
+//                TextID = StringId.Complete,
+//            };
+//            topView.AddChidren(btnConfrim);
+//            int hei = 1;
+//            foreach (var m in statusList)
+//            {
+//                var row = new FrameLayout()
+//                {
+//                    Y = Application.GetRealHeight(50 * hei),
+//                    Height = Application.GetRealHeight(50),
+//                };
+//                optionBaseView.AddChidren(row);
+//                if (statusList.Count > hei)
+//                {
+//                    optionBaseView.AddChidren(new Button()
+//                    {
+//                        Gravity = Gravity.CenterHorizontal,
+//                        Y = row.Bottom,
+//                        Width = Application.GetRealWidth(343),
+//                        BackgroundColor = CSS_Color.DividingLineColor,
+//                        Height = 1,
+//                    });
+//                }
+//                hei++;
+
+//                var btnChoose = new Button()
+//                {
+//                    X = Application.GetRealWidth(303),
+//                    Gravity = Gravity.CenterVertical,
+//                    Width = Application.GetMinRealAverage(28),
+//                    Height = Application.GetMinRealAverage(28),
+//                    UnSelectedImagePath = "Public/ChooseIcon.png",
+//                    SelectedImagePath = "Public/ChooseOnIcon.png",
+
+//                };
+//                row.AddChidren(btnChoose);
+//                if (trait.value == m)
+//                {
+//                    lastButton = btnChoose;
+//                    btnChoose.IsSelected = true;
+//                }
+//                var btnPropertyTitle = new Button()
+//                {
+//                    X = Application.GetRealWidth(16),
+//                    TextAlignment = TextAlignment.CenterLeft,
+//                    TextColor = CSS_Color.FirstLevelTitleColor,
+//                    TextSize = CSS_FontSize.TextFontSize,
+//                    Tag = m,
+//                    Text = trait.GetValueText(m)
+//                };
+//                row.AddChidren(btnPropertyTitle);
+
+//                btnPropertyTitle.MouseUpEventHandler = (sender, e) => {
+//                    btnChoose.IsSelected = true;
+//                    if (lastButton != null)
+//                    {
+//                        lastButton.IsSelected = false;
+//                    }
+//                    lastButton = btnChoose;
+//                    lastData = btnPropertyTitle.Tag.ToString();
+//                    lastText = btnPropertyTitle.Text;
+//                };
+//            }
+
+
+
+
+//            dialog.Show();
+
+//            pView.MouseUpEventHandler = (sender, e) => {
+//                dialog.Close();
+//            };
+
+//            btnCancel.MouseUpEventHandler = (sender, e) => {
+//                dialog.Close();
+//            };
+//            btnConfrim.MouseUpEventHandler = (sender, e) => {
+//                dialog.Close();
+//                trait.value = lastData;
+//                //sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = trait.curValue.ToString() ;
+//                btn.Text = lastText;
+//            };
+
+//        }
+
+//        #endregion
+
+//    }
+//}
+
+
+
+
+ 
+ using System;
 using HDL_ON.Entity;
 using HDL_ON.UI.CSS;
 using Shared;
@@ -13,15 +1852,33 @@
         Button btnOnText;
         Button btnBrightnessText;
 
+        List<FrameLayout> functionRowList = new List<FrameLayout>();
+
+
         Scene scene;
 
         Action refreshAction;
         SceneFunction sceneFunction;
+
+        bool isColorful = false;
+        SceneFunction rgbColorful;
+        bool isOnStatus = 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,8 +1896,23 @@
             };
             bodyView.AddChidren(contentView);
 
-            LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff));
+            var onOffStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff);
+            if(onOffStatus.value == "on")
+            {
+                isOnStatus = true;
+            }
+            LoadFunctionRow(onOffStatus);
 
+            if (sceneFunction.localFunction.spk == SPK.LightRGB || sceneFunction.localFunction.spk == SPK.GroupControl)
+            {
+                //var colorfulStatus = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
+                //if (colorfulStatus != null)
+                //{
+                //    isColorful = true;
+                //    LoadColorfulRow(colorfulStatus);
+                //    isColorful = colorfulStatus.value == "on";
+                //}
+            }
             foreach (var attr in sceneFunction.status)
             {
                 switch (attr.key)
@@ -49,7 +1921,6 @@
                         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:
@@ -73,44 +1944,17 @@
                     case "angle"://瑙掑害
                         LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == "angle"));
                         break;
+                    case "security"://澶у崕鎽勫儚甯冮槻鎾ら槻
+                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == "security"));
+                        break;
                 }
             }
-
-            //鍔犺浇寮�鍏砇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)
             {
                 //鍔犺浇寤舵椂Row
                 LoadDelayRow();
             }
-
             var bottomView = new FrameLayout()
             {
                 Y = Application.GetRealHeight(591),
@@ -138,28 +1982,57 @@
 
             btnConfrim.MouseUpEventHandler = (sender, e) =>
             {
+                if (sceneFunction.localFunction.spk == SPK.GroupControl) {
+                    var colorBegin = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.ColorfulBegin);
+                    if (colorBegin != null)
+                    {
+                        sceneFunction.status.Remove(colorBegin);
+                    }
+                    var colorEnd = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.ColorfulEnd);
+                    if (colorEnd != null)
+                    {
+                        sceneFunction.status.Remove(colorEnd);
+                    }
+                }
+                else
+                {
+                    if (isOnStatus)
+                    {
+                        if (isColorful)
+                        {
+                            sceneFunction.status.Clear();
+                            sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "on" });
+                            sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.Colorful, value = "on" });
+                        }
+                        else
+                        {
+                            var isHasColorful = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Colorful);
+                            if (isHasColorful != null)
+                            {
+                                sceneFunction.status.Remove(isHasColorful);
+                            }
+                        }
+                    }
+                    else
+                    {
+                        sceneFunction.status.Clear();
+                        sceneFunction.status.Add(new SceneFunctionStatus() { key = FunctionAttributeKey.OnOff, value = "off" });
+                    }
+                }
                 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)
                 {
-                    temp.delay = sceneFunction.delay;
-                    foreach(var attr in sceneFunction.status)
-                    {
-                        var keva = temp.status.Find((obj) => obj.key == attr.key);
-                        if (keva != null)
-                        {
-                            keva.value = attr.value;
-                        }
-                    }
+                    //temp.delay = sceneFunction.delay;
+                    //foreach (var attr in sceneFunction.status)
+                    //{
+                    //    var keva = temp.status.Find((obj) => obj.key == attr.key);
+                    //    if (keva != null)
+                    //    {
+                    //        keva.value = attr.value;
+                    //    }
+                    //}
+                    temp = sceneFunction;
                 }
                 else
                 {
@@ -184,6 +2057,66 @@
                     this.RemoveFromParent();
                 }
             };
+
+
+            UpdataFunctionRow();
+        }
+
+        void UpdataFunctionRow()
+        {
+            contentView.RemoveAll();
+            for (var i =0;i< functionRowList.Count; i++)
+            {
+                try
+                {
+                    var view = functionRowList[i];
+                    if(view!= null)
+                    {
+                        if(view.GetType() == typeof(FrameLayout))
+                        {
+                            if (view.Tag != null)
+                            {
+                                if (view.Tag.ToString() == FunctionAttributeKey.OnOff)
+                                {
+                                    contentView.AddChidren(view);
+
+                                }
+                                if (isOnStatus)
+                                {
+                                    if (view.Tag.ToString() != FunctionAttributeKey.OnOff)
+                                    {
+                                        if (isColorful && sceneFunction.localFunction.spk == SPK.LightRGB)
+                                        {
+                                            if(view.Tag.ToString() != FunctionAttributeKey.Colorful)
+                                            {
+                                                view.RemoveFromParent();
+                                            }
+                                            else
+                                            {
+                                                contentView.AddChidren(view);
+                                            }
+                                        }
+                                        else
+                                        {
+                                            contentView.AddChidren(view);
+                                        }
+                                    }
+                                }
+                                else
+                                {
+                                    if (view.Tag.ToString() != FunctionAttributeKey.OnOff)
+                                    {
+                                        view.RemoveFromParent();
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }catch(Exception ex)
+                {
+                    MainPage.Log($"UpdataFuntionRow error:{ex.Message}");
+                }
+            }
         }
 
 
@@ -192,6 +2125,217 @@
         /// </summary>
         void LoadFunctionRow(SceneFunctionStatus sceneStatus)
         {
+            try
+            {
+                if (sceneStatus == null)
+                    return;
+                #region Row code
+                var row = new FrameLayout()
+                {
+                    Height = Application.GetRealHeight(50),
+                    BackgroundColor = CSS_Color.MainBackgroundColor,
+                    Tag = sceneStatus.key,
+                };
+                contentView.AddChidren(row);
+                var view = functionRowList.Find((obj) => obj.Tag.ToString() == sceneStatus.key);
+                if (view == null)
+                {
+                    functionRowList.Add(row);
+                }
+
+
+                if (sceneStatus.key != FunctionAttributeKey.OnOff)
+                {
+                    row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+                }
+                else
+                {
+                    if (sceneStatus.value == "stop")
+                    {
+                        sceneStatus.value = "on";
+                    }
+                }
+                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 = "";
+
+                if (sceneStatus.key == FunctionAttributeKey.Mode)
+                {
+                    if (DB_ResidenceData.Instance.GatewayType == 0)
+                    {
+                        if (SPK.AcSpkList().Contains(sceneFunction.localFunction.spk))
+                        {
+                            //0 鍒跺喎1鍒剁儹锛�2閫氶锛�3鑷姩锛�4闄ゆ箍
+                            switch (sceneStatus.value)
+                            {
+                                case "0":
+                                    showCode = "cool";
+                                    break;
+                                case "1":
+                                    showCode = "heat";
+                                    break;
+                                case "2":
+                                    showCode = "fan";
+                                    break;
+                                case "3":
+                                    showCode = "auto";
+                                    break;
+                                case "4":
+                                    showCode = "dry";
+                                    break;
+                            }
+                        }
+                        else if (SPK.FhSpkList().Contains(sceneFunction.localFunction.spk))
+                        {
+                            //1:鏅��,2:鐧藉ぉ,3:澶滄櫄,4:绂诲紑,5:鏃堕棿
+                            switch (sceneStatus.value)
+                            {
+                                case "5":
+                                    showCode = "timer";
+                                    break;
+                                case "1":
+                                    showCode = "normal";
+                                    break;
+                                case "2":
+                                    showCode = "day";
+                                    break;
+                                case "3":
+                                    showCode = "night";
+                                    break;
+                                case "4":
+                                    showCode = "away";
+                                    break;
+                            }
+                        }
+                    }
+                }
+
+                var btnFunctionText = new Button()
+                {
+                    Width = Application.GetRealWidth(330),
+                    TextAlignment = TextAlignment.CenterRight,
+                    TextColor = CSS_Color.PromptingColor1,
+                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
+                    Text = sceneStatus.GetValueText(showCode) + sceneStatus.GetUintString()
+                };
+                row.AddChidren(btnFunctionText);
+                if (sceneStatus.key == FunctionAttributeKey.RGB)
+                {
+                    btnFunctionText.Width = Application.GetRealWidth(28);
+                    btnFunctionText.Height = Application.GetRealWidth(28);
+                    btnFunctionText.X = Application.GetRealWidth(330 - 28);
+                    btnFunctionText.Gravity = Gravity.CenterVertical;
+                    btnFunctionText.Radius = (uint)Application.GetRealWidth(8);
+                    btnFunctionText.Text = "";
+                    btnFunctionText.BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(sceneStatus.value));
+                }
+
+
+
+                if (sceneStatus.key == FunctionAttributeKey.OnOff)
+                {
+                    btnOnText = btnFunctionText;
+                }
+                else if (sceneStatus.key == FunctionAttributeKey.Brightness || sceneStatus.key == FunctionAttributeKey.Percent)
+                {
+                    int outT = 0;
+                    int.TryParse(sceneStatus.value, out outT);
+                    if (outT < 0)
+                        sceneStatus.value = "0";
+                    btnBrightnessText = btnFunctionText;
+                }
+
+                var btnFunctionName = new Button()
+                {
+                    X = Application.GetRealWidth(16),
+                    TextAlignment = TextAlignment.CenterLeft,
+                    TextColor = CSS_Color.FirstLevelTitleColor,
+                    TextSize = CSS_FontSize.SubheadingFontSize,
+                    Text = sceneStatus.GetNameText()
+                };
+                row.AddChidren(btnFunctionName);
+                btnFunctionName.MouseUpEventHandler = (sender, e) =>
+                {
+                    switch (sceneStatus.key)
+                    {
+                        case FunctionAttributeKey.Security:
+                            LoadEditDialog_Security(sceneStatus, btnFunctionText);
+                            break;
+                        case FunctionAttributeKey.OnOff:
+                            LoadEditDialog_OnOff(sceneStatus, btnFunctionText);
+                            break;
+                        case FunctionAttributeKey.Brightness:
+                            LoadEditDialog_Percent(sceneStatus, btnFunctionText);
+                            break;
+                        case FunctionAttributeKey.Mode:
+                            var statusList = new List<string>();
+                            var tr = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.Mode);
+                            foreach (var t in tr.value)
+                            {
+                                statusList.Add(t);
+                            }
+                            LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, statusList);
+                            break;
+                        case FunctionAttributeKey.FanSpeed:
+                            var fanStatusList = new List<string>();
+                            var tr1 = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
+                            foreach (var t in tr1.value)
+                            {
+                                fanStatusList.Add(t);
+                            }
+                            LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, fanStatusList);
+                            break;
+                        case FunctionAttributeKey.SetTemp:
+                            LoadEditDialog_Temp(sceneStatus, btnFunctionText);
+                            break;
+                        case FunctionAttributeKey.FadeTime:
+
+                            break;
+                        case "angle":
+                        //鍛堢幇鐨勫脊绐�
+                        LoadEditDialog_Angle(sceneStatus, btnFunctionText);
+
+                            break;
+                        case "cct":
+                            LoadEditDialog_CCT(sceneStatus, btnFunctionText);
+                            break;
+                        case FunctionAttributeKey.RGB:
+                            btnFunctionText.Width = Application.GetRealWidth(28);
+                            btnFunctionText.Height = Application.GetRealWidth(28);
+                            btnFunctionText.X = Application.GetRealWidth(330 - 28);
+                            btnFunctionText.Gravity = Gravity.CenterVertical;
+                            btnFunctionText.Radius = (uint)Application.GetRealWidth(8);
+                            btnFunctionText.Text = "";
+
+                            LoadEditDialog_RGB_V2(sceneStatus, btnFunctionText);
+                            break;
+                        case FunctionAttributeKey.Percent:
+                            LoadEditDialog_Percent(sceneStatus, btnFunctionText);
+                            break;
+                    }
+                };
+
+                #endregion
+            }catch(Exception ex)
+            {
+                MainPage.Log($"鍦烘櫙鍔犺浇璁惧灞炴�у紓甯革細{ex.Message}");
+            }
+        }
+
+        /// <summary>
+        /// 鍔犺浇鍔熻兘Row
+        /// </summary>
+        void LoadColorfulRow(SceneFunctionStatus sceneStatus)
+        {
             if (sceneStatus == null)
                 return;
             #region Row code
@@ -199,21 +2343,17 @@
             {
                 Height = Application.GetRealHeight(50),
                 BackgroundColor = CSS_Color.MainBackgroundColor,
+                Tag = sceneStatus.key
             };
             contentView.AddChidren(row);
-
-
-            if (sceneStatus.key != FunctionAttributeKey.OnOff)
+            var view = functionRowList.Find((obj) => obj.Tag.ToString() == sceneStatus.key);
+            if (view == null)
             {
-                row.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
+                functionRowList.Add(row);
             }
-            else
-            {
-                if(sceneStatus.value == "stop")
-                {
-                    sceneStatus.value = "on";
-                }
-            }
+
+            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),
@@ -227,91 +2367,15 @@
 
             var showCode = "";
 
-            if (sceneStatus.key == FunctionAttributeKey.Mode)
-            {
-                if (DB_ResidenceData.Instance.GatewayType == 0)
-                {
-                    if (SPK.AcSpkList().Contains(sceneFunction.localFunction.spk))
-                    {
-                        //0 鍒跺喎1鍒剁儹锛�2閫氶锛�3鑷姩锛�4闄ゆ箍
-                        switch (sceneStatus.value)
-                        {
-                            case "0":
-                                showCode = "cool";
-                                break;
-                            case "1":
-                                showCode = "heat";
-                                break;
-                            case "2":
-                                showCode = "fan";
-                                break;
-                            case "3":
-                                showCode = "auto";
-                                break;
-                            case "4":
-                                showCode = "dry";
-                                break;
-                        }
-                    }
-                    else if (SPK.FhSpkList().Contains(sceneFunction.localFunction.spk))
-                    {
-                        //1:鏅��,2:鐧藉ぉ,3:澶滄櫄,4:绂诲紑,5:鏃堕棿
-                        switch (sceneStatus.value)
-                        {
-                            case "5":
-                                showCode = "timer";
-                                break;
-                            case "1":
-                                showCode = "normal";
-                                break;
-                            case "2":
-                                showCode = "day";
-                                break;
-                            case "3":
-                                showCode = "night";
-                                break;
-                            case "4":
-                                showCode = "away";
-                                break;
-                        }
-                    }
-                }
-            }
-
             var btnFunctionText = new Button()
             {
                 Width = Application.GetRealWidth(330),
                 TextAlignment = TextAlignment.CenterRight,
                 TextColor = CSS_Color.PromptingColor1,
                 TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
-                Text = sceneStatus.GetValueText(showCode) + sceneStatus.GetUintString()
+                Text = sceneStatus.GetValueText(showCode)
             };
             row.AddChidren(btnFunctionText);
-            if (sceneStatus.key == FunctionAttributeKey.RGB)
-            {
-                btnFunctionText.Width = Application.GetRealWidth(28);
-                btnFunctionText.Height = Application.GetRealWidth(28);
-                btnFunctionText.X = Application.GetRealWidth(330 - 28);
-                btnFunctionText.Gravity = Gravity.CenterVertical;
-                btnFunctionText.Radius = (uint)Application.GetRealWidth(8);
-                btnFunctionText.Text = "";
-                btnFunctionText.BackgroundColor = (uint)(0xFF000000 + new Light().GetRGBcolor(sceneStatus.value));
-            }
-
-
-
-            if (sceneStatus.key == FunctionAttributeKey.OnOff)
-            {
-                btnOnText = btnFunctionText;
-            }
-            else if (sceneStatus.key == FunctionAttributeKey.Brightness || sceneStatus.key == FunctionAttributeKey.Percent)
-            {
-                int outT = 0;
-                int.TryParse(sceneStatus.value, out outT);
-                if (outT < 0)
-                    sceneStatus.value = "0";
-                btnBrightnessText = btnFunctionText;
-            }
 
             var btnFunctionName = new Button()
             {
@@ -319,69 +2383,53 @@
                 TextAlignment = TextAlignment.CenterLeft,
                 TextColor = CSS_Color.FirstLevelTitleColor,
                 TextSize = CSS_FontSize.SubheadingFontSize,
-                Text = sceneStatus.GetNameText()
+                TextID = StringId.ColorfulFunction
             };
             row.AddChidren(btnFunctionName);
             btnFunctionName.MouseUpEventHandler = (sender, e) =>
             {
-                switch (sceneStatus.key)
-                {
-                    case FunctionAttributeKey.OnOff:
-                        LoadEditDialog_OnOff(sceneStatus, btnFunctionText);
-                        break;
-                    case FunctionAttributeKey.Brightness:
-                        LoadEditDialog_Percent(sceneStatus, btnFunctionText);
-                        break;
-                    case FunctionAttributeKey.Mode:
-                        var statusList = new List<string>();
-                        var tr = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.Mode);
-                        foreach(var t in tr.value)
-                        {
-                            statusList.Add(t);
-                        }
-                        LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText,statusList);
-                        break;
-                    case FunctionAttributeKey.FanSpeed:
-                        var fanStatusList = new List<string>();
-                        var tr1 = sceneFunction.localFunction.attributes.Find((obj) => obj.key == FunctionAttributeKey.FanSpeed);
-                        foreach (var t in tr1.value)
-                        {
-                            fanStatusList.Add(t);
-                        }
-                        LoadEditDialog_FunctionPar(sceneStatus, btnFunctionText, fanStatusList);
-                        break;
-                    case FunctionAttributeKey.SetTemp:
-                        LoadEditDialog_Temp(sceneStatus, btnFunctionText);
-                        break;
-                    case FunctionAttributeKey.FadeTime:
+                LoadEditDialog_OnOff(sceneStatus, btnFunctionText);
+                //var colorfulModePage = new SetSceneRgbColorfulModePage();
+                //colorfulModePage.backAction = (selectedSerise,status) => {
+                //    if (selectedSerise == null)
+                //    {
+                //        if (status == "on")
+                //        {
+                //            isColorful = true;
+                //        }
+                //        else
+                //        {
+                //            isColorful = false;
+                //        }
+                //    }
+                //    else
+                //    {
+                //        isColorful = true;
+                //        rgbColorful = selectedSerise.ConvertSceneFunction();
+                //    }
+                //    if (isColorful)
+                //    {
+                //        btnFunctionText.TextID = StringId.On;
+                //        if (selectedSerise != null)
+                //        {
+                //            btnFunctionText.Text = selectedSerise.name;
+                //        }
+                //    }
+                //    else
+                //    {
+                //        btnFunctionText.TextID = StringId.OFF;
+                //    }
+                //    UpdataFunctionRow();
+                //};
+                //MainPage.BasePageView.AddChidren(colorfulModePage);
+                //colorfulModePage.LoadPage(sceneFunction.localFunction.sid.Substring(0,16));
+                //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
 
-                        break;
-                    case "angle":
-                        //鍛堢幇鐨勫脊绐�
 
-                        break;
-                    case "cct":
-                        LoadEditDialog_CCT(sceneStatus, btnFunctionText);
-                        break;
-                    case FunctionAttributeKey.RGB:
-                        btnFunctionText.Width = Application.GetRealWidth(28);
-                        btnFunctionText.Height = Application.GetRealWidth(28);
-                        btnFunctionText.X = Application.GetRealWidth(330 - 28);
-                        btnFunctionText.Gravity = Gravity.CenterVertical;
-                        btnFunctionText.Radius = (uint)Application.GetRealWidth(8);
-                        btnFunctionText.Text = "";
-
-                        LoadEditDialog_RGB(sceneStatus, btnFunctionText);
-                        break;
-                    case FunctionAttributeKey.Percent:
-                        LoadEditDialog_Percent(sceneStatus, btnFunctionText);
-                        break;
-                }
             };
 
             #endregion
         }
-
 
         #region 鍔犺浇鍔熻兘鍦烘櫙鏁版嵁璋冭妭鐣岄潰
         /// <summary>
@@ -393,9 +2441,15 @@
             FrameLayout delayRow = new FrameLayout()
             {
                 Height = Application.GetRealWidth(50),
-                BackgroundColor = CSS_Color.MainBackgroundColor
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Tag = "delay"
             };
             contentView.AddChidren(delayRow);
+            var view = functionRowList.Find((obj) => obj.Tag.ToString() == "delay");
+            if (view == null)
+            {
+                functionRowList.Add(delayRow);
+            }
             delayRow.AddChidren(new Button() { X = Application.GetRealWidth(16), Height = Application.GetRealHeight(1), Width = Application.GetRealWidth(343), BackgroundColor = CSS_Color.DividingLineColor });
 
             Button btnDelayRight = new Button()
@@ -526,6 +2580,211 @@
 
             dialog.Show();
 
+            pView.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.Close();
+            };
+
+            btnCancel.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.Close();
+            };
+            btnOn.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.Close();
+                trait.value = "on";
+                isOnStatus = true;
+                try
+                {
+                    sceneFunction.status.Find((obj) => obj.key == trait.key).value = "on";
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"鍦烘櫙閰嶇疆寮傚父锛歿ex.Message}");
+                }
+
+                try
+                {
+                    btn.Text = trait.GetValueText() + trait.GetUintString();
+                    if (trait.key == FunctionAttributeKey.OnOff)
+                    {
+                        var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
+                        if (temp == null)
+                        {
+                            temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
+                        }
+                        if (temp != null)
+                        {
+                            if (temp.value == "0")
+                            {
+                                temp.value = "100";
+                            }
+                            if (btnBrightnessText != null)
+                            {
+                                btnBrightnessText.Text = temp.GetValueText() + "%";
+                            }
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"鍦烘櫙閰嶇疆寮傚父2锛歿ex.Message}");
+                }
+                try
+                {
+                    if (trait.key == FunctionAttributeKey.Colorful)
+                    {
+                        isColorful = true;
+                    }
+                    else if (trait.key == FunctionAttributeKey.OnOff)
+                    {
+                        isOnStatus = true;
+                    }
+                    UpdataFunctionRow();
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"鍦烘櫙閰嶇疆寮傚父3锛歿ex.Message}");
+                }
+            };
+            btnOff.MouseUpEventHandler = (sender, e) =>
+            {
+                dialog.Close();
+                trait.value = "off";
+                try
+                {
+                    sceneFunction.status.Find((obj) => obj.key == trait.key).value = "off";
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"鍦烘櫙閰嶇疆寮傚父锛歿ex.Message}");
+                }
+
+                try
+                {
+                    btn.Text = trait.GetValueText() + trait.GetUintString();
+                    if (trait.key == FunctionAttributeKey.OnOff)
+                    {
+                        isOnStatus = false;
+                        var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
+                        if (temp == null)
+                        {
+                            temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
+                        }
+                        if (temp != null)
+                        {
+                            if (temp.value != "0")
+                            {
+                                temp.value = "0";
+                            }
+                            if (btnBrightnessText != null)
+                                btnBrightnessText.Text = temp.GetValueText() + "%";
+                        }
+                    }
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"鍦烘櫙閰嶇疆寮傚父2锛歿ex.Message}");
+                }
+
+                try
+                {
+                    if (trait.key == FunctionAttributeKey.Colorful)
+                    {
+                        isColorful = false;
+                    }
+                    else if (trait.key == FunctionAttributeKey.OnOff)
+                    {
+                        isOnStatus = false;
+                    }
+                    UpdataFunctionRow();
+                }
+                catch (Exception ex)
+                {
+                    MainPage.Log($"鍦烘櫙閰嶇疆寮傚父3锛歿ex.Message}");
+                }
+            };
+
+        }
+
+
+        /// <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();
             };
@@ -535,46 +2794,21 @@
             };
             btnOn.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.value = "on";
-                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "on";
+                trait.value = "true";
+                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Security).value = "true";
                 btn.Text = trait.GetValueText() + trait.GetUintString();
 
-                var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
-                if (temp == null)
-                {
-                    temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
-                }
-                if (temp != null)
-                {
-                    if (temp.value == "0")
-                    {
-                        temp.value = "100";
-                    }
-                    btnBrightnessText.Text = temp.GetValueText() + "%";
-                }
             };
-            btnOff.MouseUpEventHandler = (sender,e) =>{
+            btnOff.MouseUpEventHandler = (sender, e) => {
                 dialog.Close();
-                trait.value = "off";
-                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.OnOff).value = "off";
-                btn.Text= trait.GetValueText() + trait.GetUintString();
+                trait.value = "false";
+                sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Security).value = "false";
+                btn.Text = trait.GetValueText() + trait.GetUintString();
 
-                var temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Brightness);
-                if(temp == null)
-                {
-                    temp = sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.Percent);
-                }
-                if (temp != null)
-                {
-                    if (temp.value != "0")
-                    {
-                        temp.value = "0";
-                    }
-                    btnBrightnessText.Text = temp.GetValueText() + "%";
-                }
             };
 
         }
+
 
         /// <summary>
         /// 鍔犺浇娓╁害閫夋嫨寮圭獥
@@ -638,7 +2872,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 +2921,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 +3192,7 @@
             };
         }
 
+
         /// <summary>
         /// 鍔犺浇cct閫夋嫨寮圭獥
         /// </summary>
@@ -850,7 +3200,33 @@
         /// <param name="btn"></param>
         void LoadEditDialog_CCT(SceneFunctionStatus trait, Button btn)
         {
+            if (trait.min == 0)
+            {
+                switch (trait.key)
+                {
+                    case FunctionAttributeKey.SetTemp:
+                        trait.min = 16;
+                        break;
+                    case FunctionAttributeKey.CCT:
+                        trait.min = 2700;
+                        break;
+                }
+            }
+            if (trait.max == 0)
+            {
+                switch (trait.key)
+                {
+                    case FunctionAttributeKey.SetTemp:
+                        trait.max = 30;
+                        break;
+                    case FunctionAttributeKey.CCT:
+                        trait.max = 6500;
+                        break;
+                }
+            }
+
             double temp = trait.min;
+          
             double.TryParse(trait.value, out temp);
             trait.value = temp.ToString();
 
@@ -928,7 +3304,7 @@
             uIPickerView.setCurrentItems(pickerItems.IndexOf(trait.value.ToString()), 4, 5);
 
             string selectItem = pickerItems[0];
-            if (pickerItems.Contains(trait.value + trait.GetUintString()))
+              if (pickerItems.Contains(trait.value + trait.GetUintString()))
             {
                 selectItem = trait.value.ToString() + trait.GetUintString();
             }
@@ -1145,6 +3521,198 @@
                 TextID = StringId.Complete
             };
             bottomView.AddChidren(btnComplete);
+
+            //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
+            int mRectCornerID = HDLUtils.RectCornerBottomRight;
+            btnComplete.SetCornerWithSameRadius((uint)Application.GetRealWidth(14), mRectCornerID);
+            btnComplete.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+                trait.value = rgbString;
+                btn.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString));
+            };
+
+            #endregion
+
+
+            dialog.Show();
+
+        }
+
+
+        /// <summary>
+        /// 鍔犺浇rgb閫夋嫨寮圭獥
+        /// </summary>
+        /// <param name="function"></param>
+        /// <param name="btn"></param>
+        void LoadEditDialog_RGB_V2(SceneFunctionStatus trait, Button btn)
+        {
+            string rgbString = trait.value;
+
+            Light tempLight = new Light();
+
+            if (trait == null)
+            {
+                return;
+            }
+
+            Dialog dialog = new Dialog() {
+                Height = Application.GetRealHeight(647),
+            };
+
+            var bodyView = new FrameLayout();
+            dialog.AddChidren(bodyView);
+
+            var contentView = new FrameLayout()
+            {
+                Gravity = Gravity.BottomCenter,
+                BackgroundColor = CSS_Color.MainBackgroundColor,
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(300),
+                Radius = (uint)Application.GetRealWidth(12),
+            };
+            bodyView.AddChidren(contentView);
+
+            #region 鏍囬鍖�
+            var titleView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(343),
+                Height = Application.GetRealHeight(52),
+            };
+            contentView.AddChidren(titleView);
+
+            var btnTitle = new Button()
+            {
+                Height = Application.GetRealHeight(52),
+                Gravity = Gravity.Center,
+                TextSize = CSS_FontSize.SubheadingFontSize,
+                TextColor = CSS_Color.MainColor,
+                Text = "RGB",
+                TextAlignment = TextAlignment.Center,
+            };
+            titleView.AddChidren(btnTitle);
+            titleView.AddChidren(new Button() { Height = 1, BackgroundColor = CSS_Color.DividingLineColor, Y = Application.GetRealHeight(51) });
+
+            #endregion
+
+            int attrViewHight = Application.GetRealHeight(245);
+            //灞炴�ц缃尯鍩�
+            var attrView = new FrameLayout()
+            {
+                Y = Application.GetRealHeight(52),
+                Width = Application.GetRealWidth(343),
+                Height = attrViewHight
+            };
+            contentView.AddChidren(attrView);
+            attrView.AddChidren(new Button() { Height = Application.GetRealHeight(18) });
+
+            #region RGB
+            var rgbView = new FrameLayout()
+            {
+                Height = Application.GetRealHeight(248)
+            };
+            attrView.AddChidren(rgbView);
+
+            var btnCurColor = new Button()
+            {
+                X = Application.GetRealWidth(16),
+                Y = Application.GetRealHeight(10),
+                Width = Application.GetMinRealAverage(24),
+                Height = Application.GetMinRealAverage(24),
+                Radius = (uint)Application.GetMinRealAverage(8),
+                BorderColor = CSS_Color.PromptingColor2,
+                BorderWidth = 1,
+                BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(trait.value))
+            };
+            rgbView.AddChidren(btnCurColor);
+
+            //鑹茬洏鐨勬甯冩帶浠�(闄愬埗閭d釜鐧借壊婊戝姩鐞冧娇鐢�)
+            var framePickerBack = new FrameLayout();
+            framePickerBack.Gravity = Gravity.CenterHorizontal;
+            framePickerBack.Y = Application.GetRealHeight(20);
+            framePickerBack.Width = Application.GetMinRealAverage(198);
+            framePickerBack.Height = Application.GetMinRealAverage(198);
+            rgbView.AddChidren(framePickerBack);
+
+            var colorPicker = new ColorPicker()
+            {
+                ColorImagePath = "FunctionIcon/Light/ColorWheel.png",
+            };
+            framePickerBack.AddChidren(colorPicker);
+
+
+            //鐧界偣鎺т欢
+            var btnWhiteRound = new Button();
+            btnWhiteRound.Width = Application.GetRealWidth(24);
+            btnWhiteRound.Height = Application.GetRealWidth(24);
+            btnWhiteRound.UnSelectedImagePath = "FunctionIcon/Light/ColorWheelTip.png";
+            btnWhiteRound.Visible = false;
+            framePickerBack.AddChidren(btnWhiteRound);
+
+
+            //褰撳墠鐐瑰嚮鐨勩�愮偣銆戞槸鍚︽纭�
+            bool pointIsRight = false;
+            //鍦嗙殑鍗婂緞(鑰冭檻杈圭晫,闇�瑕佽缃畠鐨勫崐寰勬瘮杈冨皬涓�鐐�)
+            int circleR = colorPicker.Width / 2 - Application.GetRealWidth(12);
+
+
+            colorPicker.ColorChaged += (sender2, e2) => {
+                rgbString = (e2[0] + "," + e2[1] + "," + e2[2]).ToString();
+                //trait.value = rgbString;
+                btnCurColor.BackgroundColor = (uint)(0xFF000000 + tempLight.GetRGBcolor(rgbString));
+            };
+            colorPicker.MouseDownEventHandler += (sender, e) =>
+            {
+                pointIsRight = this.CheckPoint(circleR, colorPicker.Width / 2, colorPicker.Height / 2, (int)e.X, (int)e.Y);
+                if (pointIsRight == false)
+                {
+                    //鐐圭殑鍖哄煙涓嶆槸鍦嗙洏鍐�
+                    return;
+                }
+                //鏄剧ず鐧界偣
+                btnWhiteRound.X = (int)e.X - btnWhiteRound.Width / 2;
+                btnWhiteRound.Y = (int)e.Y - btnWhiteRound.Height / 2;
+                if (btnWhiteRound.Visible == false)
+                {
+                    btnWhiteRound.Visible = true;
+                }
+            };
+
+            colorPicker.MouseMoveEventHandler += (sender, e) =>
+            {
+                //褰撻紶鏍囩偣涓嬩簨浠跺鐞�
+                colorPicker.MouseDownEventHandler(sender, e);
+            };
+
+
+            #endregion
+
+            #region 
+            var btnCancel = new Button()
+            {
+                X  = Application.GetRealWidth(20),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealHeight(44),
+                TextAlignment = TextAlignment.CenterLeft,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextColor = CSS_Color.TextualColor,
+                TextID = StringId.Cancel,
+            };
+            titleView.AddChidren(btnCancel);
+            btnCancel.MouseUpEventHandler = (sender, e) => {
+                dialog.Close();
+            };
+
+            var btnComplete = new Button()
+            {
+                X = Application.GetRealWidth(223),
+                Width = Application.GetRealWidth(100),
+                Height = Application.GetRealHeight(46),
+                TextColor = CSS_Color.MainColor,
+                TextAlignment = TextAlignment.CenterRight,
+                TextSize = CSS_FontSize.TextFontSize,
+                TextID = StringId.Complete
+            };
+            titleView.AddChidren(btnComplete);
 
             //渚嬶細鍙充笅鍦嗚 澶у皬涓�50
             int mRectCornerID = HDLUtils.RectCornerBottomRight;
@@ -1557,3 +4125,6 @@
 
     }
 }
+
+ 
+ 
\ No newline at end of file

--
Gitblit v1.8.0