wxr
2020-12-18 aa1eb6c809ef1e0e050bfeac53e9f2ea4f11330c
Merge remote-tracking branch 'origin/dev-tzy' into NewFilePath
20个文件已添加
2个文件已删除
16个文件已修改
966 ■■■■■ 已修改文件
.vs/HDL_APP_Project/xs/sqlite3/storage.ide 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ColorTemperatrueQuick.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ColorTemperatrueQuickBack.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ColorTemperatureBar.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/CozyIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/MeetingGuestsIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ReadIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorTemperatrueQuick.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorTemperatrueQuickBack.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorTemperatureBar.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/CozyIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/MeetingGuestsIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ReadIcon.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Curtain.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Fan.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Light.cs 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/.DS_Store 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPage.cs 708 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs 189 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.vs/HDL_APP_Project/xs/sqlite3/storage.ide
Binary files differ
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-shm
Binary files differ
.vs/HDL_APP_Project/xs/sqlite3/storage.ide-wal
Binary files differ
HDL-ON_Android/Assets/.DS_Store
Binary files differ
HDL-ON_Android/Assets/Language.ini
old mode 100644 new mode 100755
@@ -399,6 +399,11 @@
400=欢迎回家
401=二维码失效,请重试
402=重试
403=色温
404=快捷调节
405=温馨
406=会客
407=阅读
5000=音乐
5001=组合
HDL-ON_Android/Assets/Phone/.DS_Store
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/.DS_Store
Binary files differ
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ColorTemperatrueQuick.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ColorTemperatrueQuickBack.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ColorTemperatureBar.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/CozyIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/MeetingGuestsIcon.png
HDL-ON_Android/Assets/Phone/FunctionIcon/Light/ReadIcon.png
HDL-ON_iOS/Resources/.DS_Store
Binary files differ
HDL-ON_iOS/Resources/Language.ini
old mode 100644 new mode 100755
@@ -400,6 +400,11 @@
400=欢迎回家
401=二维码失效,请重试
402=重试
403=色温
404=快捷调节
405=温馨
406=会客
407=阅读
5000=音乐
5001=组合
HDL-ON_iOS/Resources/Phone/FunctionIcon/.DS_Store
Binary files differ
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorTemperatrueQuick.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorTemperatrueQuickBack.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ColorTemperatureBar.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/CozyIcon.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/MeetingGuestsIcon.png
HDL-ON_iOS/Resources/Phone/FunctionIcon/Light/ReadIcon.png
HDL_ON/.DS_Store
Binary files differ
HDL_ON/Common/.DS_Store
Binary files differ
HDL_ON/Common/R.cs
@@ -4,10 +4,15 @@
{
    public static class StringId
    {
        public const int WholeZone = 377;
        public const int Reading = 407;
        public const int MeetingGuests = 406;
        public const int Cozy = 405;
        public const int QuickAdjustment = 404;
        public const int ColorTemperature = 403;
        public const int Retry = 402;
        public const int QRCodeIsInvalid = 401;
        public const int WellComBackHome = 400;
        public const int WholeZone = 377;
        public const int CannotEnterSpecialCharacters = 376;
        public const int GatewayOfflineCannotCreateScene = 375;
        public const int ResidenceDeletedSwitchToAnotherResidence = 374;
HDL_ON/DAL/.DS_Store
Binary files differ
HDL_ON/DAL/DriverLayer/Control.cs
@@ -566,7 +566,23 @@
                                    }
                                    break;
                                case SPK.LightRGBW:
                                case SPK.LightCCT:
                                    break;
                                case SPK.LightCCT:
                                    var lightCCT = FunctionList.List.lights.Find((obj) => obj.sid == updateTemp.sid);
                                    if (lightCCT != null)
                                    {
                                        localObj = lightCCT;
                                        foreach (var attr in updateTemp.status)
                                        {
                                            var localAttr = lightCCT.attributes.Find((obj) => obj.key == attr.key);
                                            if (localAttr != null)
                                            {
                                                localAttr.curValue = attr.value;
                                            }
                                        }
                                        lightCCT.lastState = Language.StringByID(StringId.Brightness) + " : " + lightCCT.brightness + "%";
                                        DimmerPage.UpdataStates(lightCCT);
                                    }
                                    break;
                                case SPK.CurtainSwitch:
                                    var curtain = FunctionList.List.curtains.Find((obj) => obj.sid == updateTemp.sid);
HDL_ON/Entity/.DS_Store
Binary files differ
HDL_ON/Entity/Function/Curtain.cs
@@ -45,6 +45,11 @@
                        }
                        if (trait_percent.curValue.ToString() == "{}")
                            trait_percent.curValue = 0;
                    }
                    string textValue = trait_percent.curValue.ToString();
                    if (textValue == string.Empty)
                    {
                        trait_percent.curValue = 0;
                    }
                    return Convert.ToInt32( trait_percent.curValue);
                }
HDL_ON/Entity/Function/Fan.cs
@@ -37,6 +37,11 @@
                        }
                        if (trait_openLevel.curValue.ToString() == "{}")
                            trait_openLevel.curValue = 0;
                    }
                    string textValue = trait_openLevel.curValue.ToString();
                    if (textValue == string.Empty)
                    {
                        trait_openLevel.curValue = 0;
                    }
                    return Convert.ToInt32(trait_openLevel.curValue);
                }
HDL_ON/Entity/Function/Light.cs
@@ -48,7 +48,20 @@
                    if (trait_brightness.curValue.ToString() == "{}")
                        trait_brightness.curValue = 0;
                }
                return Convert.ToInt32(trait_brightness.curValue);
                try
                {
                    string textValue = trait_brightness.curValue.ToString();
                    if (textValue == string.Empty)
                    {
                        trait_brightness.curValue = 0;
                    }
                    return Convert.ToInt32(trait_brightness.curValue);
                }
                catch
                {
                    trait_brightness.curValue = 0;
                    return 0;
                }
            }
            set
            {
HDL_ON/HDL_ON.projitems
old mode 100755 new mode 100644
@@ -263,6 +263,8 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\SelectPopupDialog.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)Common\Utlis\FloorSelectPopupDialog.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI0-Public\Widget\DiySelectPopupDialog.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\ColorTureLampPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Light\ColorTureLampPageBLL.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)UI\" />
HDL_ON/UI/.DS_Store
Binary files differ
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -100,8 +100,13 @@
                            MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                            a31PlayMusicPage.Show();
                            MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                    case FunctionType.ColorTemperature:
                        var TureView = new ColorTureLampPage(function as Light);
                        MainPage.BasePageView.AddChidren(TureView);
                        TureView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                        //case FunctionType
                }
            };
            return eventHandler;
HDL_ON/UI/UI2/.DS_Store
Binary files differ
HDL_ON/UI/UI2/FuntionControlView/.DS_Store
Binary files differ
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPage.cs
New file
@@ -0,0 +1,708 @@
using System;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    public partial class ColorTureLampPage : FrameLayout
    {
        #region 控件集合
        static ColorTureLampPage bodyView;
        /// <summary>
        /// 控制界面加载区域
        /// </summary>
        FrameLayout controlView;
        /// <summary>
        /// 功能备注
        /// </summary>
        Button btnFunctionName;
        /// <summary>
        /// 功能所属楼层、房间
        /// </summary>
        Button btnFromFoorAndRoom;
        /// <summary>
        /// 收藏按钮
        /// </summary>
        Button btnCollection;
        /// <summary>
        /// 调光控件
        /// </summary>
        WaveSeekBarOn dimmerBar;
        /// <summary>
        /// 亮度显示按钮
        /// </summary>
        Button btnBrightnessText;
        /// <summary>
        /// 渐变时间修改
        /// </summary>
        DiyImageSeekBar barFadeTime;
        /// <summary>
        /// 色温的滑动控件
        /// </summary>
        SeekBarControl barColorTemplatrue;
        /// <summary>
        /// 开关按钮
        /// </summary>
        Button btnSwitch;
        /// <summary>
        /// 色温快捷方式按钮
        /// </summary>
        Button btnShortcut;
        #endregion
        #region 区域变量
        Light light;
        Button btnCollection_Out;
        Button btnFunctionName_Out;
        Button btnFromFloor_Out;
        bool onDimmerBar = false;
        /// <summary>
        /// 刷新显示信息
        /// </summary>
        Action actionRefresh;
        #endregion
        public override void RemoveFromParent()
        {
            base.RemoveFromParent();
            bodyView = null;
        }
        public ColorTureLampPage(Light func)
        {
            bodyView = this;
            light = func;
        }
        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
        {
            btnCollection_Out = btnCollectionIcon;
            btnFunctionName_Out = btnFunctionNameOut;
            btnFromFloor_Out = btnFromFloorOut;
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            //new TopViewDiv(bodyView, Language.StringByID(StringId.Lights)).LoadTopView(light,null);
            //new PublicAssmebly().LoadTopView(bodyView, Language.StringByID(StringId.Lights), light);
            controlView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(88),
                Width = Application.GetRealWidth(327),
                Height = Application.GetRealHeight(526),
                BackgroundImagePath = "Public/Fragmentbg.png",
            };
            bodyView.AddChidren(controlView);
            btnFunctionName = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealHeight(14),
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(37),
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
                Text = light.name,
            };
            controlView.AddChidren(btnFunctionName);
            btnFromFoorAndRoom = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = btnFunctionName.Bottom,
                Width = Application.GetRealWidth(270),
                Height = Application.GetRealHeight(21),
                TextColor = CSS_Color.PromptingColor1,
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                Text = light.GetRoomListName()
            };
            controlView.AddChidren(btnFromFoorAndRoom);
            btnCollection = new Button()
            {
                X = Application.GetRealWidth(273),
                Y = Application.GetRealHeight(14),
                Width = Application.GetMinRealAverage(40),
                Height = Application.GetMinRealAverage(40),
                SelectedImagePath = "Collection/CollectionIcon.png",
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = light.collect
            };
            //controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
            {
                controlView.AddChidren(btnCollection);
            }
            dimmerBar = new WaveSeekBarOn()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(74 + 16),
                Width = Application.GetRealWidth(142 - 40),
                Height = Application.GetRealHeight(222 - 16 - 16),
                BorderColor = 0x00000000,
                CornerRadius = Application.GetRealWidth(20),
                BorderWidth = 0,
                Progress = light.brightness,
                IsProgressTextShow = false,
            };
            controlView.AddChidren(dimmerBar);
            if (light.trait_on_off.curValue.ToString() == "on")
            {
                dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
            }
            else
            {
                dimmerBar.SetProgressBarColors(CSS_Color.DividingLineColor, CSS_Color.DividingLineColor);
            }
            dimmerBar.Progress = light.brightness;
            btnBrightnessText = new Button()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40),
                Width = Application.GetRealWidth(56),
                Height = Application.GetRealWidth(46),
                UnSelectedImagePath = "FunctionIcon/Light/BrightnessBg.png",
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel,
                Text = light.brightness + "%",
            };
            controlView.AddChidren(btnBrightnessText);
            #region 色温
            //色温
            var btnTempClolor = new Button();
            btnTempClolor.X = Application.GetRealWidth(35);
            btnTempClolor.Y = Application.GetRealHeight(306);
            btnTempClolor.Width = Application.GetRealWidth(224);
            btnTempClolor.Height = Application.GetRealHeight(21);
            btnTempClolor.TextAlignment = TextAlignment.CenterLeft;
            btnTempClolor.TextColor = CSS_Color.FirstLevelTitleColor;
            btnTempClolor.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
            btnTempClolor.TextID = StringId.ColorTemperature;
            controlView.AddChidren(btnTempClolor);
            //2700K
            var btnTempClolorMin = new Button();
            btnTempClolorMin.Y = btnTempClolor.Bottom + Application.GetRealHeight(9);
            btnTempClolorMin.Width = Application.GetRealWidth(54);
            btnTempClolorMin.Height = Application.GetRealHeight(21);
            btnTempClolorMin.Text = "2700K";
            btnTempClolorMin.TextAlignment = TextAlignment.CenterRight;
            btnTempClolorMin.TextColor = CSS_Color.PromptingColor1;
            btnTempClolorMin.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
            controlView.AddChidren(btnTempClolorMin);
            //滑动条的背景图片
            var btnColorTemplatrueBack = new Button();
            //需要减掉滑动条的左右间距
            btnColorTemplatrueBack.Width = Application.GetRealWidth(210 - 20 * 2);
            btnColorTemplatrueBack.Height = Application.GetRealHeight(8);
            btnColorTemplatrueBack.Gravity = Gravity.CenterHorizontal;
            btnColorTemplatrueBack.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatureBar.png";
            controlView.AddChidren(btnColorTemplatrueBack);
            //滑动条控件
            barColorTemplatrue = new SeekBarControl();
            barColorTemplatrue.X = btnTempClolorMin.Right;
            barColorTemplatrue.Y = Application.GetRealHeight(340);
            barColorTemplatrue.MinValue = 27;
            barColorTemplatrue.MaxValue = 65;
            barColorTemplatrue.ProgressBarColor = 0x00000000;//全部透明
            barColorTemplatrue.ProgressBarUnEnableColor = 0x00000000;
            barColorTemplatrue.SeekBarBackgroundColor = 0x00000000;
            controlView.AddChidren(barColorTemplatrue);
            barColorTemplatrue.Y = btnTempClolorMin.Y - (barColorTemplatrue.Height - btnTempClolorMin.Height) / 2;
            //显示上方的Txt
            barColorTemplatrue.ShowCustomTextView(Application.GetRealWidth(50), CSS_FontSize.PromptFontSize_FirstLevel, CSS_Color.FirstLevelTitleColor);
            //设置初始值
            barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
            //变更背景图的Y轴坐标
            btnColorTemplatrueBack.Y = barColorTemplatrue.Y + (barColorTemplatrue.Height - btnColorTemplatrueBack.Height) / 2;
            //6500K
            var btnTempClolorMax = new Button();
            btnTempClolorMax.Y = btnTempClolorMin.Y;
            btnTempClolorMax.X = barColorTemplatrue.Right;
            btnTempClolorMax.Width = Application.GetRealWidth(54);
            btnTempClolorMax.Height = Application.GetRealHeight(21);
            btnTempClolorMax.Text = "6500K";
            btnTempClolorMax.TextAlignment = TextAlignment.CenterLeft;
            btnTempClolorMax.TextColor = CSS_Color.PromptingColor1;
            btnTempClolorMax.TextSize = CSS_FontSize.PromptFontSize_FirstLevel;
            controlView.AddChidren(btnTempClolorMax);
            #endregion
            #region 渐变时间调节
            var btnGradualChangeText = new Button()
            {
                X = Application.GetRealWidth(35),
                Y = Application.GetRealHeight(385),
                Width = Application.GetRealWidth(224),
                Height = Application.GetRealHeight(21),
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextID = StringId.SpeedOfChange,
            };
            controlView.AddChidren(btnGradualChangeText);
            var btnGradualChangeMinValuesText = new Button()
            {
                X = Application.GetRealWidth(35),
                Y = btnGradualChangeText.Bottom + Application.GetRealHeight(8),
                Width = Application.GetRealWidth(22),
                Height = Application.GetRealHeight(21),
                Text = "0s",
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            controlView.AddChidren(btnGradualChangeMinValuesText);
            barFadeTime = new DiyImageSeekBar()
            {
                X = btnGradualChangeMinValuesText.Right,
                Y = Application.GetRealHeight(412 - 21) + Application.GetRealHeight(8),
                Width = Application.GetRealWidth(210),
                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,
                ProgressBarUnitSring = "s",
                MaxValue = 10,
                Progress = light.fadeTime,
                SeekBarPadding = Application.GetRealWidth(20),
            };
            controlView.AddChidren(barFadeTime);
            var btnGradualChangeMaxValuesText = new Button()
            {
                X = barFadeTime.Right,
                Y = btnGradualChangeText.Bottom + Application.GetRealHeight(8),
                Width = Application.GetRealWidth(35),
                Height = Application.GetRealHeight(21),
                Text = "10s",
                TextAlignment = TextAlignment.CenterLeft,
                TextColor = CSS_Color.PromptingColor1,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
            };
            controlView.AddChidren(btnGradualChangeMaxValuesText);
            #endregion
            btnSwitch = new Button()
            {
                X = Application.GetRealWidth(184),
                Y = Application.GetRealHeight(462),
                Width = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(40),
                UnSelectedImagePath = "Public/PowerClose.png",
                SelectedImagePath = "Public/PowerOpen.png",
                IsSelected = light.trait_on_off.curValue.ToString() == "on",
            };
            controlView.AddChidren(btnSwitch);
            //色温的快捷方式图标
            btnShortcut = new Button();
            btnShortcut.X = Application.GetRealWidth(104);
            btnShortcut.Y = btnSwitch.Y;
            btnShortcut.Width = Application.GetRealWidth(40);
            btnShortcut.Height = Application.GetRealWidth(40);
            btnShortcut.UnSelectedImagePath = "FunctionIcon/Light/ColorTemperatrueQuick.png";
            controlView.AddChidren(btnShortcut);
            btnShortcut.MouseUpEventHandler += (sender, e) =>
            {
                //显示色温的快捷方式的弹窗
                this.ShowColorTemperatrueShortcutView();
            };
            LoadEventList();
            new TopViewDiv(bodyView, Language.StringByID(StringId.Lights)).LoadTopView_FunctionTop(light, actionRefresh);
            new System.Threading.Thread(() =>
            {
                DriverLayer.Control.Ins.SendReadCommand(light);
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 显示色温的快捷方式的弹窗
        /// </summary>
        private void ShowColorTemperatrueShortcutView()
        {
            //整个灰色界面
            var frameBack = new Dialog();
            frameBack.Show();
            //白色的背景(用图片整的)
            var frameWhite = new FrameLayout();
            frameWhite.X = Application.GetRealWidth(63);
            frameWhite.Y = Application.GetRealHeight(350);
            frameWhite.Width = Application.GetRealWidth(160);
            frameWhite.Height = Application.GetRealHeight(199);
            frameWhite.BackgroundImagePath = "FunctionIcon/Light/ColorTemperatrueQuickBack.png";
            frameBack.AddChidren(frameWhite);
            //快捷调节
            var btnAdjust = new Button();
            btnAdjust.X = Application.GetRealWidth(24);
            btnAdjust.Y = Application.GetRealHeight(19);
            btnAdjust.Width = Application.GetRealWidth(80);
            btnAdjust.Height = Application.GetRealHeight(24);
            btnAdjust.TextID = StringId.QuickAdjustment;
            btnAdjust.TextColor = CSS_Color.FirstLevelTitleColor;
            btnAdjust.TextSize = CSS_FontSize.SubheadingFontSize;
            frameWhite.AddChidren(btnAdjust);
            //线
            var btnLine = new Button();
            btnLine.Y = btnAdjust.Bottom + Application.GetRealHeight(9);
            btnLine.Height = 1;
            btnLine.Width = Application.GetRealWidth(112);
            btnLine.Gravity = Gravity.CenterHorizontal;
            btnLine.BackgroundColor = CSS_Color.BackgroundColor;
            frameWhite.AddChidren(btnLine);
            //温馨图标
            var btnCozyIcon = new Button();
            btnCozyIcon.X = Application.GetRealWidth(24);
            btnCozyIcon.Y = btnLine.Bottom + Application.GetRealHeight(10);
            btnCozyIcon.Width = Application.GetRealWidth(24);
            btnCozyIcon.Height = Application.GetRealWidth(24);
            btnCozyIcon.UnSelectedImagePath = "FunctionIcon/Light/CozyIcon.png";
            frameWhite.AddChidren(btnCozyIcon);
            btnCozyIcon.MouseUpEventHandler += (sender, e) =>
            {
                barColorTemplatrue.Progress = 27;
                barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
                frameBack.Close();
            };
            //温馨 2700k
            var btnCozy = new Button();
            btnCozy.X = btnCozyIcon.Right + Application.GetRealWidth(12);
            btnCozy.Y = btnCozyIcon.Y;
            btnCozy.Width = Application.GetRealWidth(100);
            btnCozy.Height = Application.GetRealWidth(24);
            btnCozy.Text = Language.StringByID(StringId.Cozy) + " 2700K";
            btnCozy.TextSize = CSS_FontSize.TextFontSize;
            btnCozy.TextColor = CSS_Color.FirstLevelTitleColor;
            btnCozy.TextAlignment = TextAlignment.CenterLeft;
            frameWhite.AddChidren(btnCozy);
            btnCozy.MouseUpEventHandler += (sender, e) =>
            {
                barColorTemplatrue.Progress = 27;
                barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
                frameBack.Close();
            };
            //会客图标
            var btnMeetIcon = new Button();
            btnMeetIcon.X = Application.GetRealWidth(24);
            btnMeetIcon.Y = btnCozyIcon.Bottom + Application.GetRealHeight(20);
            btnMeetIcon.Width = Application.GetRealWidth(24);
            btnMeetIcon.Height = Application.GetRealWidth(24);
            btnMeetIcon.UnSelectedImagePath = "FunctionIcon/Light/MeetingGuestsIcon.png";
            frameWhite.AddChidren(btnMeetIcon);
            btnMeetIcon.MouseUpEventHandler += (sender, e) =>
            {
                barColorTemplatrue.Progress = 30;
                barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
                frameBack.Close();
            };
            //会客 3000k
            var btnMeet = new Button();
            btnMeet.X = btnMeetIcon.Right + Application.GetRealWidth(12);
            btnMeet.Y = btnMeetIcon.Y;
            btnMeet.Width = Application.GetRealWidth(100);
            btnMeet.Height = Application.GetRealWidth(24);
            btnMeet.Text = Language.StringByID(StringId.MeetingGuests) + " 3000K";
            btnMeet.TextSize = CSS_FontSize.TextFontSize;
            btnMeet.TextColor = CSS_Color.FirstLevelTitleColor;
            btnMeet.TextAlignment = TextAlignment.CenterLeft;
            frameWhite.AddChidren(btnMeet);
            btnMeet.MouseUpEventHandler += (sender, e) =>
            {
                barColorTemplatrue.Progress = 30;
                barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
                frameBack.Close();
            };
            //阅读图标
            var btnReadIcon = new Button();
            btnReadIcon.X = Application.GetRealWidth(24);
            btnReadIcon.Y = btnMeetIcon.Bottom + Application.GetRealHeight(20);
            btnReadIcon.Width = Application.GetRealWidth(24);
            btnReadIcon.Height = Application.GetRealWidth(24);
            btnReadIcon.UnSelectedImagePath = "FunctionIcon/Light/ReadIcon.png";
            frameWhite.AddChidren(btnReadIcon);
            btnReadIcon.MouseUpEventHandler += (sender, e) =>
            {
                barColorTemplatrue.Progress = 65;
                barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
                frameBack.Close();
            };
            //阅读 6500k
            var btnRead = new Button();
            btnRead.X = btnReadIcon.Right + Application.GetRealWidth(12);
            btnRead.Y = btnReadIcon.Y;
            btnRead.Width = Application.GetRealWidth(100);
            btnRead.Height = Application.GetRealWidth(24);
            btnRead.Text = Language.StringByID(StringId.Reading) + " 6500K";
            btnRead.TextSize = CSS_FontSize.TextFontSize;
            btnRead.TextColor = CSS_Color.MainColor;
            btnRead.TextAlignment = TextAlignment.CenterLeft;
            frameWhite.AddChidren(btnRead);
            btnRead.MouseUpEventHandler += (sender, e) =>
            {
                barColorTemplatrue.Progress = 65;
                barColorTemplatrue.SetCustomText(barColorTemplatrue.Progress * 100 + "K");
                frameBack.Close();
            };
        }
        /// <summary>
        /// 左右滑动的进度条控件
        /// </summary>
        private class SeekBarControl : DiyImageSeekBar
        {
            #region ■ 变量声明___________________________
            /// <summary>
            /// 进度值改变,如果要设置初始进度值,此变量要在设置初始进度值之前进行设置(第一个参数0:滑动的时候,1:手指弹起的时候)
            /// </summary>
            public Action<int, int> ProgressChangedEvent = null;
            /// <summary>
            /// 进度条可用时的背景色
            /// </summary>
            private uint ProgressBarEnableColor = 0;
            /// <summary>
            /// 进度条不可用时的背景色(默认灰色)
            /// </summary>
            public uint ProgressBarUnEnableColor = 0xffe8e8e8;
            /// <summary>
            /// 当前可用状态
            /// </summary>
            private bool nowEnable = true;
            /// <summary>
            /// 控件能否使用
            /// </summary>
            public new bool Enable
            {
                set
                {
                    //状态没有改变
                    if (nowEnable == value) { return; }
                    nowEnable = value;
                    this.IsClickable = value;
                    if (value == true)
                    {
                        //原来的颜色
                        base.ProgressBarColor = ProgressBarEnableColor;
                    }
                    else
                    {
                        //灰色
                        base.ProgressBarColor = ProgressBarUnEnableColor;
                    }
                }
            }
            /// <summary>
            /// 进度条颜色
            /// </summary>
            public new uint ProgressBarColor
            {
                set
                {
                    ProgressBarEnableColor = value;
                    base.ProgressBarColor = value;
                }
            }
            private int m_SeekBarPadding = Application.GetRealWidth(20);
            /// <summary>
            /// 进度条与左右两边的边框的边距(重写底层属性)
            /// </summary>
            public new int SeekBarPadding
            {
                set
                {
                    m_SeekBarPadding = value;
                    base.SeekBarPadding = value;
                }
            }
            private int m_MaxValue = 0;
            /// <summary>
            /// 进度条最大值(重写底层属性)
            /// </summary>
            public new int MaxValue
            {
                set
                {
                    m_MaxValue = value;
                    base.MaxValue = value;
                }
            }
            private int m_MinValue = 0;
            /// <summary>
            /// 进度条最小值(重写底层属性)
            /// </summary>
            public new int MinValue
            {
                set
                {
                    m_MinValue = value;
                    base.MinValue = value;
                }
            }
            /// <summary>
            /// 上方显示的文本
            /// </summary>
            private Button btnTopView = null;
            #endregion
            #region ■ 初始化_____________________________
            /// <summary>
            /// 左右滑动的进度条控件
            /// </summary>
            /// <param name="i_width">宽度,非真实值</param>
            public SeekBarControl(int i_width = 210)
            {
                this.Width = Application.GetRealWidth(i_width);
                this.Height = Application.GetRealHeight(54);
                //圆球的宽度
                this.ThumbImageHeight = Application.GetRealHeight(54);
                this.ThumbImagePath = "Public/ThumbImage.png";
                //进度条的宽度
                this.SeekBarViewHeight = Application.GetRealHeight(8);
                //上方是否显示文本
                this.IsProgressTextShow = false;
                this.Gravity = Gravity.CenterHorizontal;
                //进度条颜色
                this.ProgressBarColor = CSS_Color.MainColor;
                //左右边距
                this.SeekBarPadding = Application.GetRealWidth(20);
                //进度条值改变事件
                this.OnProgressChangedEvent += this.MyProgressChangedEvent;
                //手指弹起事件
                this.OnStopTrackingTouchEvent += this.MyStopTrackingTouchEvent;
            }
            #endregion
            #region ■ 事件_______________________________
            /// <summary>
            /// 进度条值改变事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="value"></param>
            private void MyProgressChangedEvent(object sender, int value)
            {
                if (this.ProgressChangedEvent == null)
                {
                    this.OnProgressChangedEvent -= this.MyProgressChangedEvent;
                    return;
                }
                this.ProgressChangedEvent(0, value);
            }
            /// <summary>
            /// 手指弹起事件
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="value"></param>
            private void MyStopTrackingTouchEvent(object sender, int value)
            {
                if (this.ProgressChangedEvent == null)
                {
                    this.OnStopTrackingTouchEvent -= this.MyStopTrackingTouchEvent;
                    return;
                }
                //弹起事件不需要判断时间
                this.ProgressChangedEvent(1, value);
            }
            #endregion
            #region ■ 自定义上方显示文本_________________
            /// <summary>
            /// 在上方显示自定义文本
            /// </summary>
            /// <param name="i_width">宽度(真实值)</param>
            /// <param name="textSize">文字大小</param>
            /// <param name="textColor">文字颜色</param>
            public void ShowCustomTextView(int i_width, int textSize, uint textColor)
            {
                if (this.btnTopView != null) { return; }
                int contrHeight = Application.GetRealHeight(24);
                this.btnTopView = new Button();
                btnTopView.Width = i_width;
                btnTopView.Height = contrHeight;
                btnTopView.TextColor = textColor;
                btnTopView.TextSize = textSize;
                btnTopView.TextAlignment = TextAlignment.Center;
                btnTopView.Y = this.Y - contrHeight + Application.GetRealHeight(20);
                //初始化时,X轴可以不用理会
                this.Parent.AddChidren(btnTopView);
            }
            /// <summary>
            /// 设置自定义文本信息
            /// </summary>
            /// <param name="i_text"></param>
            public void SetCustomText(string i_text)
            {
                if (this.btnTopView == null) { return; }
                this.btnTopView.Text = i_text;
                //滑条最左边的距离
                int XX = this.X + this.m_SeekBarPadding;
                //当前滑条所在的大致百分比
                int tempValue = this.Progress - this.m_MinValue;
                if (tempValue < 0) { tempValue = 0; }
                decimal persent = (decimal)tempValue / (this.m_MaxValue - this.m_MinValue);
                //当前滑条所在的大致位置
                XX += (int)((this.Width - this.m_SeekBarPadding * 2) * persent);
                //因为要居中,所以减掉自定义控件的宽度的一般
                XX = XX - this.btnTopView.Width / 2;
                this.btnTopView.X = XX;
            }
            #endregion
            #region ■ 一般方法___________________________
            /// <summary>
            /// 控件摧毁
            /// </summary>
            public override void RemoveFromParent()
            {
                this.ProgressChangedEvent = null;
                base.RemoveFromParent();
            }
            #endregion
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
New file
@@ -0,0 +1,189 @@
using System;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using Shared;
namespace HDL_ON.UI
{
    public partial class ColorTureLampPage
    {
        /// <summary>
        /// 更新功能状态
        /// </summary>
        public static void UpdataStates(Light uFunction)
        {
            Application.RunOnMainThread(() =>
            {
                try
                {
                    if (bodyView == null)
                        return;
                    if (uFunction.functionType == bodyView.light.functionType && uFunction.sid == bodyView.light.sid)
                    {
                        if (uFunction.trait_on_off.curValue.ToString() == "on")
                        {
                            bodyView.dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                            if (!bodyView.onDimmerBar)
                            {
                                bodyView.dimmerBar.Progress = uFunction.brightness;
                            }
                            bodyView.btnBrightnessText.Text = uFunction.brightness + "%";
                            bodyView.btnBrightnessText.Y = ((100 - uFunction.brightness) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40);
                        }
                        else
                        {
                            bodyView.dimmerBar.SetProgressBarColors(CSS_Color.DividingLineColor, CSS_Color.DividingLineColor);
                        }
                        bodyView.btnSwitch.IsSelected = uFunction.trait_on_off.curValue.ToString() == "on";
                    }
                }
                catch (Exception ex)
                {
                    MainPage.Log($"{bodyView.GetType().Name } UpdataStates error : {ex.Message}");
                }
            });
        }
        void LoadEventList()
        {
            LoadSwitchEvent();
            LoadCollectionEvent();
            LoadEvent_DimmerBar();
            LoadEvet_ChangeFadeTime();
            LoadEvet_ChangeColorTemplatrue();
            //回退刷新信息事件
            actionRefresh = () => {
                btnFunctionName.Text = btnFunctionName_Out.Text = light.name;
                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = light.GetRoomListName();
                //light.SaveFunctionData(true);
            };
        }
        /// <summary>
        /// 修改灯光渐变时间
        /// </summary>
        void LoadEvet_ChangeFadeTime()
        {
            barFadeTime.OnProgressChangedEvent = (sender, e) =>
            {
                light.fadeTime = e;
                light.SaveFunctionData(true);
            };
        }
        /// <summary>
        /// 修改色温
        /// </summary>
        void LoadEvet_ChangeColorTemplatrue()
        {
            barColorTemplatrue.OnProgressChangedEvent += (sender, value) =>
            {
                //设置自定义的文本
                barColorTemplatrue.SetCustomText(value * 100 + "K");
            };
        }
        /// <summary>
        /// 收藏功能按钮事件
        /// </summary>
        void LoadCollectionEvent()
        {
            btnCollection.MouseUpEventHandler += (sender, e) => {
                btnCollection.IsSelected = light.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
                light.SaveFunctionData(true);
            };
        }
        /// <summary>
        /// 灯光调光事件
        /// </summary>
        void LoadEvent_DimmerBar()
        {
            dimmerBar.OnStartTrackingTouchEvent = (sender, e) => {
                onDimmerBar = true;
            };
            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
                onDimmerBar = false;
                light.brightness = dimmerBar.Progress;
                //Control.Send(CommandType_A.write, light);
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.Brightness, light.brightness.ToString());
                Control.Ins.SendWriteCommand(light, d);
                light.fadeTime = barFadeTime.Progress;
            };
            dimmerBar.OnProgressChangedEvent = (sender, e) => {
                light.fadeTime = 0;
                if (!btnSwitch.IsSelected)
                {
                    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                }
                btnSwitch.IsSelected = e > 0 ? true : false;
                light.brightness = e;
                light.trait_on_off.curValue = e > 0 ? "on" : "off";
                if (e == 0 || e == 100)
                {
                    //Control.Send(CommandType_A.write, this.light);
                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.Brightness, light.brightness.ToString());
                    Control.Ins.SendWriteCommand(light, d);
                }
                else
                {
                    if (200 < (DateTime.Now - light.refreshTime).TotalMilliseconds)
                    {
                        light.refreshTime = DateTime.Now;
                        new System.Threading.Thread(() =>
                        {
                            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                            d.Add(FunctionAttributeKey.Brightness, light.brightness.ToString());
                            Control.Ins.SendWriteCommand(light, d);
                        })
                        { IsBackground = true }.Start();
                    }
                }
                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40);
                btnBrightnessText.Text = light.brightness + "%";
            };
        }
        /// <summary>
        /// 加载开关事件
        /// </summary>
        void LoadSwitchEvent()
        {
            btnSwitch.MouseUpEventHandler += (sender, e) =>
            {
                light.fadeTime = barFadeTime.Progress;
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                if (btnSwitch.IsSelected)
                {
                    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                }
                else
                {
                    dimmerBar.SetProgressBarColors(CSS_Color.DividingLineColor, CSS_Color.DividingLineColor);
                }
                new System.Threading.Thread(() =>
                {
                    light.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.OnOff, light.trait_on_off.curValue.ToString());
                    if (btnSwitch.IsSelected)
                    {
                        d.Add(FunctionAttributeKey.Brightness, light.lastBrightness.ToString());
                    }
                    else
                    {
                        light.lastBrightness = light.brightness;
                    }
                    Control.Ins.SendWriteCommand(light, d);
                })
                { IsBackground = true }.Start();
            };
        }
    }
}