wxr
2022-06-29 3199abc8c62f23fce4e3ec7a2337d23709810e97
梦幻帘接入
3个文件已添加
19个文件已修改
830 ■■■■ 已修改文件
HDL-ON_Android/Assets/Language.ini 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Phone/Public/ThumbImage2.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/HDL-ON_Android.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/HDL-ON_iOS.csproj 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Phone/Public/ThumbImage2.png 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Scene.cs 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/MainPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainDreamPage.cs 543 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPage.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs 62 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs 74 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini
@@ -529,6 +529,7 @@
541=Monitoring
542=Wandering alarm
543=Get more
544=Angle
1000=Room Humidity
@@ -1691,6 +1692,7 @@
541=监控中
542=徘徊报警
543=获取更多
544=角度
 
1000=室内湿度
1001=童锁
@@ -2829,6 +2831,7 @@
541=Monitoring
542=Wandering alarm
543=Get more
544=Angle
1000=Влажность в Помещении
@@ -3985,6 +3988,7 @@
541=Monitoring
542=Wandering alarm
543=Get more
544=Angle
1000=Humedad de ambiente
1001=V-chip
HDL-ON_Android/Assets/Phone/Public/ThumbImage2.png
HDL-ON_Android/HDL-ON_Android.csproj
@@ -247,6 +247,7 @@
    <AndroidAsset Include="Assets\Phone\FunctionIcon\FloorHeating\EconomicIconGray.png" />
    <AndroidAsset Include="Assets\Phone\MusicIcon\order.png" />
    <AndroidAsset Include="Assets\Phone\MusicIcon\single_cycle.png" />
    <AndroidAsset Include="Assets\Phone\Public\ThumbImage2.png" />
  </ItemGroup>
  <ItemGroup>
    <AndroidResource Include="Resources\values\colors.xml" />
HDL-ON_iOS/HDL-ON_iOS.csproj
@@ -1406,6 +1406,7 @@
      <BundleResource Include="Resources\Phone\FunctionIcon\Panel\PanelEnviBg.png" />
      <BundleResource Include="Resources\Phone\MusicIcon\order.png" />
      <BundleResource Include="Resources\Phone\MusicIcon\single_cycle.png" />
      <BundleResource Include="Resources\Phone\Public\ThumbImage2.png" />
    </ItemGroup>
    <ItemGroup>
      <ITunesArtwork Include="iTunesArtwork" />
HDL-ON_iOS/Info.plist
@@ -100,9 +100,9 @@
    <key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>
    <key>CFBundleShortVersionString</key>
    <string>1.5.502206241</string>
    <string>1.5.502206271</string>
    <key>CFBundleVersion</key>
    <string>1.5.506241</string>
    <string>1.5.506271</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Use geographic location to provide services such as weather</string>
    <key>NSAppleMusicUsageDescription</key>
HDL-ON_iOS/Resources/Language.ini
@@ -529,6 +529,7 @@
541=Monitoring
542=Wandering alarm
543=Get more
544=Angle
1000=Room Humidity
@@ -738,7 +739,7 @@
5015=Bluetooth
5016=Line input
5017=Revise the name
5018=Single loop
5018=Single loop
5019=Random play
5020=List
5021=Has shifted to
@@ -770,6 +771,7 @@
5047="QQ music" has not installed in your cell phone, please proceed in App center.
5048= Progressive cycle
5049=Single play
 
6000=normal
6001=Device status
@@ -1047,6 +1049,7 @@
7156=Distress
7157=whether to unlock
7158=is
@@ -1689,6 +1692,7 @@
541=监控中
542=徘徊报警
543=获取更多
544=角度
 
1000=室内湿度
1001=童锁
@@ -1930,7 +1934,7 @@
5046=调节音量
5047=你手机暂未安装"QQ音乐"{\r\n}请前往手机商场安装
5048=循序循环
5049=单曲循环
5049=单曲播放
 
 
6000=正常
@@ -2827,6 +2831,7 @@
541=Monitoring
542=Wandering alarm
543=Get more
544=Angle
1000=Влажность в Помещении
@@ -3983,6 +3988,7 @@
541=Monitoring
542=Wandering alarm
543=Get more
544=Angle
1000=Humedad de ambiente
1001=V-chip
HDL-ON_iOS/Resources/Phone/Public/ThumbImage2.png
HDL_ON/Common/R.cs
@@ -4,7 +4,10 @@
{
    public static class StringId
    {
        /// <summary>
        /// 角度
        /// </summary>
        public const int Angle = 544;
        /// <summary>
        /// 获取更多
        /// </summary>
HDL_ON/DAL/ThirdPartySdk/HDLLinphone.cs
@@ -457,6 +457,8 @@
            mHDLCallVideoInfo.DeviceSipAccount = mESVideoInfo.deviceSipAccount;
            InitCallInfo(mHDLCallVideoInfo);
            if (isHdlLinphone)
            {
                //当前呼叫来电的住宅和之前注册登录的住宅一致的情况下
@@ -539,7 +541,8 @@
            var intent = new Intent(Shared.Application.Activity, typeof(Com.Hdl.Hdllinphonesdk.Activity.HDLLinphoneIntercomActivity));
            if (mHDLCallVideoInfo != null)
            {
                intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.DeviceName);
                //intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.DeviceName);
                intent.PutExtra(HDLLinphoneKit.KeyTitleName, mHDLCallVideoInfo.CallId);
            }
            Shared.Application.Activity.StartActivity(intent);
#endif
HDL_ON/Entity/Function/Scene.cs
@@ -585,6 +585,9 @@
                case FunctionAttributeKey.FadeTime:
                    text = Language.StringByID(StringId.FadeSpeed);
                    break;
                case "angle":
                    text = Language.StringByID(StringId.Angle);
                    break;
            }
            return text;
        }
HDL_ON/HDL_ON.projitems
@@ -499,6 +499,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\FhContentView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\ContentView\AcContentView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Video\WanderingAlarmPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Curtain\CurtainDreamPage.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)Entity\Device\" />
HDL_ON/UI/MainPage.cs
@@ -105,7 +105,7 @@
    /// </summary>
    public static List<string> SceneSupportFunctionList = new List<string> {
            SPK.LightCCT,SPK.LightDimming,SPK.LightSwitch,SPK.LightRGB,
            SPK.CurtainRoller,SPK.CurtainSwitch,SPK.CurtainTrietex,
            SPK.CurtainRoller,SPK.CurtainSwitch,SPK.CurtainTrietex,SPK.CurtainDream,
            SPK.AcIr,SPK.AcStandard,SPK.HvacAC,
            SPK.FloorHeatStandard,SPK.HvacFloorHeat,
            SPK.AirFreshStandard,SPK.HvacAirFresh,
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -62,6 +62,12 @@
                        rollingShutterView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                    case SPK.CurtainDream:
                        var curtainDreamView = new CurtainDreamPage(function);
                        MainPage.BasePageView.AddChidren(curtainDreamView);
                        curtainDreamView.LoadPage(btnCollectionIcon, btnName, btnFromFloor);
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                    case SPK.FloorHeatStandard:
                    case SPK.HvacFloorHeat:
                        var fhView = new FloorHeatingPage(function);
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -566,6 +566,17 @@
#if DEBUG
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试梦幻窗帘",
                spk = SPK.CurtainDream,
                sid = "1234577",
                attributes = new List<FunctionAttributes> {
                    new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                    new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
                    new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
                }
            });
            //FunctionList.List.Functions.Add(new Function
            //{
@@ -627,28 +638,28 @@
            //    },
            //});
            FunctionList.List.Functions.Add(new Function()
            {
                spk = SPK.SensorPm25,
                name = "测试Pm2.5",
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" },
                },
                attrKeyConfigs = new List<AttrKeyConfig>()
                {
                    new AttrKeyConfig (){
                        key = "pm2.5",
                        type = "interval" ,
                        unit = "ug/m²",
                        configs = new List<AttrKeyInfo>(){
                           new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "良好"},
                           new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "轻/中度污染"},
                           new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "重度/严重污染"},
                        }
                    }
                },
            });
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.SensorPm25,
            //    name = "测试Pm2.5",
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" },
            //    },
            //    attrKeyConfigs = new List<AttrKeyConfig>()
            //    {
            //        new AttrKeyConfig (){
            //            key = "pm2.5",
            //            type = "interval" ,
            //            unit = "ug/m²",
            //            configs = new List<AttrKeyInfo>(){
            //               new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "良好"},
            //               new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "轻/中度污染"},
            //               new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "重度/严重污染"},
            //            }
            //        }
            //    },
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
@@ -1151,10 +1162,8 @@
                };
                view.AddChidren(btnIcon);
                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                Button btnName;
                btnName = new Button()
@@ -1226,6 +1235,7 @@
                LoadEvent_FunctionCollection(btnCollection, function);
                if (//SPK.CurtainSpkList().Contains(function.spk))
                    function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
                    function.spk == SPK.CurtainDream ||
                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex )
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
HDL_ON/UI/UI2/3-Intelligence/Scene/SetSceneFunctionInfoPage.cs
@@ -70,6 +70,9 @@
                    case FunctionAttributeKey.RGB:
                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == FunctionAttributeKey.RGB));
                        break;
                    case "angle"://角度
                        LoadFunctionRow(sceneFunction.status.Find((obj) => obj.key == "angle"));
                        break;
                }
            }
@@ -353,6 +356,10 @@
                    case FunctionAttributeKey.FadeTime:
                        break;
                    case "angle":
                        //呈现的弹窗
                        break;
                    case "cct":
                        LoadEditDialog_CCT(sceneStatus, btnFunctionText);
                        break;
HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainDreamPage.cs
New file
@@ -0,0 +1,543 @@
using System;
using HDL_ON.Entity;
using Shared;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
using System.Collections.Generic;
using HDL_ON.DriverLayer;
namespace HDL_ON.UI
{
    public class CurtainDreamPage : FrameLayout
    {
        #region 控件集合
        static CurtainDreamPage bodyView;
        /// <summary>
        /// 功能名称按钮
        /// </summary>
        Button btnFunctionName;
        /// <summary>
        /// 房间楼层信息按钮
        /// </summary>
        Button btnFromFoorAndRoom;
        /// <summary>
        /// 收藏按钮
        /// </summary>
        Button btnCollection;
        /// <summary>
        /// 窗帘动态控件
        /// </summary>
        CurtainSeekBarOn curtainSeekBar;
        /// <summary>
        /// 进度值
        /// </summary>
        Button btnProgress;
        /// <summary>
        /// 窗帘关闭按钮
        /// </summary>
        Button btnCurtainClose;
        /// <summary>
        /// 窗帘停止按钮
        /// </summary>
        Button btnCurtainStop;
        /// <summary>
        /// 窗帘打开按钮
        /// </summary>
        Button btnCurtainOpen;
        #endregion
        #region 区域变量
        Entity.Curtain curtainTemp = new Entity.Curtain();
        Function function;
        Button btnCollection_Out;
        Button btnFunctionName_Out;
        Button btnFromFloor_Out;
        /// <summary>
        /// 刷新显示信息
        /// </summary>
        Action actionRefresh;
        #endregion
        /// <summary>
        /// 正在控制
        /// </summary>
        bool onControl = false;
        public CurtainDreamPage(Function func)
        {
            bodyView = this;
            function = func;
        }
        public void LoadPage(Button btnCollectionIcon, Button btnFunctionNameOut, Button btnFromFloorOut)
        {
            bodyView.BackgroundColor = CSS_Color.BackgroundColor;
            btnCollection_Out = btnCollectionIcon;
            btnFunctionName_Out = btnFunctionNameOut;
            btnFromFloor_Out = btnFromFloorOut;
            FrameLayout 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 = function.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 = function.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 = function.collect
            };
            controlView.AddChidren(btnCollection);
            //2020-12-16 如果是成员隐藏收藏功能
            //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
            //{
            //    controlView.AddChidren(btnCollection);
            //}
            btnProgress = new Button()
            {
                Y = Application.GetRealHeight(80),
                Height = Application.GetRealHeight(50),
                TextSize = CSS_FontSize.TextFontSize,
                TextColor = CSS_Color.PromptingColor1,
                Text = curtainTemp.GetPercent(function).ToString() + "%",
            };
            controlView.AddChidren(btnProgress);
            curtainSeekBar = new CurtainSeekBarOn()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(130),
                Width = Application.GetRealWidth(250),
                Height = Application.GetRealWidth(177),
                Progress = curtainTemp.GetPercent(function),
                ProgressTextColor = 0x00000000,
                //IsInvertedProgress = true,
            };
            controlView.AddChidren(curtainSeekBar);
            int angleValut = Convert.ToInt32(function.GetAttrState("angle"));
            var angleView = new FrameLayout()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(300),//414,设计数据
                Width = Application.GetRealWidth(250),
                Height = Application.GetRealWidth(30),
                BackgroundColor = 0x00ff0000
            };
            controlView.AddChidren(angleView);
            List<Button> buttons = new List<Button>();
            for (int i = 0; i < 18; i++)
            {
                var btn = new Button()
                {
                    X = Application.GetRealWidth(12 * i + 4),
                    Y = Application.GetRealHeight(5),
                    Width = Application.GetRealWidth(4),
                    Height = Application.GetRealHeight(20),
                    BackgroundColor = 0xFFDFE1E6,
                };
                btn.SetRotation(angleValut);
                angleView.AddChidren(btn);
                buttons.Add(btn);
            };
            var btnAngle = new Button()
            {
                TextAlignment = TextAlignment.CenterRight,
                TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                TextColor = CSS_Color.PromptingColor1,
                Text = function.GetAttrState("angle") + "°"
            };
            angleView.AddChidren(btnAngle);
            var angleBar = new DiyImageSeekBar()
            {
                Width = Application.GetRealWidth(220),
                Height = Application.GetRealHeight(30),
                SeekBarViewHeight = Application.GetRealHeight(0),
                ThumbImagePath = "Public/ThumbImage2.png",
                ThumbImageHeight = Application.GetRealHeight(20),
                ProgressBarColor = 0x00000000,
                ProgressTextColor = 0x00000000,
                ProgressTextSize = 0,
                MaxValue = 180,
                Progress = 90,
                ProgressChangeDelayTime = 0
            };
            angleView.AddChidren(angleBar);
            angleBar.OnProgressChangedEvent = (sender, e) =>
            {
                float angle = (e - 90);
                btnAngle.Text = angle + "°";
                foreach (var btn in buttons)
                {
                    btn.SetRotation(angle); Console.WriteLine(angle);
                }
                //if (100 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
                //{
                //    function.refreshTime = DateTime.Now;
                //    foreach (var btn in buttons)
                //    {
                //        new System.Threading.Thread(() =>
                //    {
                //        Application.RunOnMainThread(() =>
                //        {
                //            btn.SetRotation(angle); Console.WriteLine(angle);
                //        });
                //    });
                //    }
                //}
            };
            angleBar.OnStopTrackingTouchEvent = (sende, e) =>
            {
                function.refreshTime = DateTime.Now;
                new System.Threading.Thread(() =>
                {
                    Dictionary<string, string> dic = new Dictionary<string, string>();
                    dic.Add("angle", e.ToString());
                    Control.Ins.SendWriteCommand(function, dic);
                })
                { IsBackground = true }.Start();
            };
            btnCurtainClose = new Button()
            {
                X = Application.GetRealWidth(84),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainCloseIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainCloseOnIcon.png",
            };
            controlView.AddChidren(btnCurtainClose);
            btnCurtainStop = new Button()
            {
                X = Application.GetRealWidth(148),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainStopIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainStopOnIcon.png",
            };
            controlView.AddChidren(btnCurtainStop);
            btnCurtainOpen = new Button()
            {
                X = Application.GetRealWidth(212),
                Y = Application.GetRealHeight(466),
                Width = Application.GetMinRealAverage(32),
                Height = Application.GetMinRealAverage(32),
                UnSelectedImagePath = "FunctionIcon/Curtain/CurtainOpenIcon.png",
                SelectedImagePath = "FunctionIcon/Curtain/CurtainOpenOnIcon.png",
            };
            controlView.AddChidren(btnCurtainOpen);
            LoadEventList();
            new TopViewDiv(bodyView, Language.StringByID(StringId.Curtain)).LoadTopView_FunctionTop(function, actionRefresh);
            new System.Threading.Thread(() =>
            {
                Control.Ins.SendReadCommand(function);
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 更新窗帘
        /// </summary>
        /// <param name="updateTemp"></param>
        public static void UpdataState(Function updateTemp)
        {
            Application.RunOnMainThread((Action)(() =>
            {
                if (bodyView == null)
                    return;
                if (bodyView.onControl)
                    return;
                if (updateTemp.spk == bodyView.function.spk && updateTemp.sid == bodyView.function.sid)
                {
                try
                    {
                        if (!bodyView.onCurtainAnimation)
                        {
                            bodyView.CurtainAnimation(Convert.ToInt32(updateTemp.GetAttrState(FunctionAttributeKey.Percent)));
                        }
                    }
                    catch { }
                }
            }));
        }
        /// <summary>
        /// 正在执行窗帘动画
        /// </summary>
        bool onCurtainAnimation = false;
        /// <summary>
        /// 窗帘动画
        /// </summary>
        /// <param name="progress"></param>
        void CurtainAnimation(int progress)
        {
            onCurtainAnimation = true;
            //运行方向 打开(加进度):关闭(减进度)
            bool runningDirection = progress > curtainSeekBar.Progress;
            int curBarProgress = curtainSeekBar.Progress;
            btnProgress.Text = progress + "%";
            new System.Threading.Thread(() =>
            {
                try
                {
                    while (progress != curBarProgress && onCurtainAnimation)
                    {
                        Application.RunOnMainThread(() =>
                        {
                            if (runningDirection)
                            {
                                if (curtainSeekBar.Progress + 5 > progress)
                                {
                                    curtainSeekBar.Progress = progress;
                                }
                                else
                                {
                                    curtainSeekBar.Progress = curtainSeekBar.Progress + 5;
                                }
                            }
                            else
                            {
                                if (curtainSeekBar.Progress - 5 < progress)
                                {
                                    curtainSeekBar.Progress = progress;
                                }
                                else
                                {
                                    curtainSeekBar.Progress = curtainSeekBar.Progress - 5;
                                }
                            }
                            curBarProgress = curtainSeekBar.Progress;
                        });
                        System.Threading.Thread.Sleep(100);
                    }
                }
                catch { }
                finally
                {
                    new System.Threading.Thread(() =>
                    {
                        System.Threading.Thread.Sleep(3000);
                        onCurtainAnimation = false;
                    })
                    { IsBackground = true, Priority = System.Threading.ThreadPriority.Lowest }.Start();
                }
            }).Start();
        }
        /// <summary>
        /// 加载事件列表
        /// </summary>
        void LoadEventList()
        {
            LoadEvent_ControlEvent();
            LoadCollectionEvent();
            //回退刷新信息事件
            actionRefresh = () =>
            {
                btnFunctionName.Text = btnFunctionName_Out.Text = function.name;
                btnFromFloor_Out.Text = btnFromFoorAndRoom.Text = function.GetRoomListName();
            //function.SaveFunctionData(true);
        };
        }
        /// <summary>
        /// 收藏功能按钮事件
        /// </summary>
        void LoadCollectionEvent()
        {
            btnCollection.MouseUpEventHandler += (sender, e) =>
            {
                btnCollection.IsSelected = function.collect = btnCollection_Out.IsSelected = !btnCollection.IsSelected;
                function.CollectFunction();
            };
        }
        /// <summary>
        /// 加载窗帘控制事件
        /// </summary>
        void LoadEvent_ControlEvent()
        {
            btnCurtainClose.MouseUpEventHandler = (sender, e) =>
            {
            //if (!function.online)
            //{
            //    new Tip()
            //    {
            //        CloseTime = 1,
            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
            //        Direction = AMPopTipDirection.None,
            //    }.Show(MainPage.BaseView);
            //    return;
            //}
            new System.Threading.Thread(() =>
            {
                System.Threading.Thread.Sleep(2000);
                Application.RunOnMainThread(() =>
                {
                    btnCurtainClose.IsSelected = false;
                });
            })
                { IsBackground = true }.Start();
                function.trait_on_off.curValue = "off";
                function.SetAttrState(FunctionAttributeKey.Percent, 0);
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
                DriverLayer.Control.Ins.SendWriteCommand(function, d);
                CurtainAnimation(0);
            };
            btnCurtainStop.MouseUpEventHandler = (sender, e) =>
            {
            //if (!function.online)
            //{
            //    new Tip()
            //    {
            //        CloseTime = 1,
            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
            //        Direction = AMPopTipDirection.None,
            //    }.Show(MainPage.BaseView);
            //    return;
            //}
            onCurtainAnimation = false;
                new System.Threading.Thread(() =>
                {
                    System.Threading.Thread.Sleep(2000);
                    Application.RunOnMainThread(() =>
                    {
                        btnCurtainStop.IsSelected = false;
                    });
                })
                { IsBackground = true }.Start();
                function.trait_on_off.curValue = "stop";
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
                DriverLayer.Control.Ins.SendWriteCommand(function, d);
            };
            btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
            {
            //if (!function.online)
            //{
            //    new Tip()
            //    {
            //        CloseTime = 1,
            //        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
            //        Direction = AMPopTipDirection.None,
            //    }.Show(MainPage.BaseView);
            //    return;
            //}
            new System.Threading.Thread(() =>
            {
                System.Threading.Thread.Sleep(2000);
                Application.RunOnMainThread(() =>
                {
                    btnCurtainOpen.IsSelected = false;
                });
            })
                { IsBackground = true }.Start();
                function.trait_on_off.curValue = "on";
                function.SetAttrState(FunctionAttributeKey.Percent, 100);
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
                DriverLayer.Control.Ins.SendWriteCommand(function, d);
                CurtainAnimation(100);
            };
            //if (function.online)
            {
                btnCurtainStop.MouseDownEventHandler = (sender, e) =>
                {
                    btnCurtainStop.IsSelected = true;
                    btnCurtainClose.IsSelected = false;
                    btnCurtainOpen.IsSelected = false;
                };
                btnCurtainOpen.MouseDownEventHandler = (sender, e) =>
                {
                    btnCurtainOpen.IsSelected = true;
                    btnCurtainClose.IsSelected = false;
                    btnCurtainStop.IsSelected = false;
                };
                btnCurtainClose.MouseDownEventHandler = (sender, e) =>
                {
                    btnCurtainClose.IsSelected = true;
                    btnCurtainOpen.IsSelected = false;
                    btnCurtainStop.IsSelected = false;
                };
                curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
                {
                    btnProgress.Text = curtainSeekBar.Progress + "%";
                };
                curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
                {
                    btnProgress.Text = curtainSeekBar.Progress + "%";
                //controlBar.Progress = curtainSeekBar.Progress;
                new System.Threading.Thread(() =>
                {
                    function.SetAttrState(FunctionAttributeKey.Percent, e);
                    function.refreshTime = DateTime.Now;
                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.Percent, e.ToString());
                    DriverLayer.Control.Ins.SendWriteCommand(function, d);
                })
                    { IsBackground = true }.Start();
                };
            }
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPage.cs
@@ -354,20 +354,19 @@
            new System.Threading.Thread(() => {
                while (true)
                {
                    System.Threading.Thread.Sleep(500);
                    System.Threading.Thread.Sleep(500);
                    System.Threading.Thread.Sleep(1000);
                    if (curDimmerStatus)
                    {
                        continue;
                    }
                    if (onDimmerBar)
                    {
                        onDimmerBar = false;
                        continue;
                    }
                    else
                    {
                        DriverLayer.Control.Ins.SendReadCommand(function);
                        curDimmerStatus = true;
                    }
                }
            })
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
@@ -175,45 +175,41 @@
            {
                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                {
                    onDimmerBar = true;
                    curDimmerStatus = onDimmerBar = true;
                };
                dimmerBar.OnProgressChangedEvent = (sender, e) =>
                {
                    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                //function.fadeTime = 0;
                //if (!btnSwitch.IsSelected)
                //{
                //    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                //}
                //btnSwitch.IsSelected = e > 0 ? true : false;
                //function.brightness = e;
                //function.trait_on_off.curValue = e > 0 ? "on" : "off";
                    //dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                if (!btnSwitch.IsSelected)
                    {
                        dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                    }
                    btnSwitch.IsSelected = e > 0 ? true : false;
                    function.trait_on_off.curValue = e > 0 ? "on" : "off";
                //if (e == 0 || e == 100)
                //{
                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                //    d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
                //    Control.Ins.SendWriteCommand(function, d);
                //}
                //else
                //{
                //    if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
                //    {
                //        function.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, function.brightness.ToString());
                //            Control.Ins.SendWriteCommand(function, d);
                //        })
                //        { IsBackground = true }.Start();
                //    }
                //}
                    if (e == 0 || e == 100)
                    {
                        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                        d.Add(FunctionAttributeKey.Brightness, e.ToString());
                        Control.Ins.SendWriteCommand(function, d);
                    }
                    else
                    {
                        if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
                        {
                            function.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, e.ToString());
                                Control.Ins.SendWriteCommand(function, d);
                            })
                            { IsBackground = true }.Start();
                        }
                    }
                //btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40);
                //btnBrightnessText.Text = function.brightness + "%";
                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80);
                    btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16) / 100) + Application.GetRealWidth(80);
                    btnBrightnessText.Text = dimmerBar.Progress + "%";
                };
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPage.cs
@@ -267,12 +267,12 @@
            new System.Threading.Thread(() => {
                while (true)
                {
                    System.Threading.Thread.Sleep(500);
                    System.Threading.Thread.Sleep(2000);
                    if (curDimmerStatus)
                    {
                        continue;
                    }
                    if ( onDimmerBar)
                    if (onDimmerBar)
                    {
                        onDimmerBar = false;
                        continue;
@@ -280,6 +280,7 @@
                    else
                    {
                        DriverLayer.Control.Ins.SendReadCommand(function);
                        curDimmerStatus = true;
                    }
                }
            })
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
@@ -104,10 +104,10 @@
                    function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
                    if(dimmerBar.Progress > 0)
                    {
                        d.Add(FunctionAttributeKey.OnOff, "on");
                    }
                    //if(dimmerBar.Progress > 0)
                    //{
                    //    d.Add(FunctionAttributeKey.OnOff, "on");
                    //}
                    Control.Ins.SendWriteCommand(function, d);
                    btnBrightnessText.Text = dimmerBar.Progress + "%";
                };
@@ -131,7 +131,7 @@
                    }
                    else
                    {
                        if (500 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
                        if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
                        {
                            function.refreshTime = DateTime.Now;
                            new System.Threading.Thread(() =>
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPage.cs
@@ -349,6 +349,30 @@
                DriverLayer.Control.Ins.SendReadCommand(function);
            })
            { IsBackground = true }.Start();
            new System.Threading.Thread(() => {
                while (true)
                {
                    System.Threading.Thread.Sleep(1000);
                    if (curDimmerStatus)
                    {
                        continue;
                    }
                    if (onDimmerBar)
                    {
                        continue;
                    }
                    else
                    {
                        DriverLayer.Control.Ins.SendReadCommand(function);
                        curDimmerStatus = true;
                    }
                }
            })
            { IsBackground = true }.Start();
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -207,6 +207,7 @@
            };
        }
        bool curDimmerStatus = false;
        /// <summary>
        /// 灯光调光事件
        /// </summary>
@@ -225,12 +226,7 @@
                //    }.Show(MainPage.BaseView);
                //    return;
                //}
                new System.Threading.Thread(() =>
                {
                    System.Threading.Thread.Sleep(200);
                    onDimmerBar = false;
                })
                { IsBackground = true }.Start();
                curDimmerStatus = false;
                function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.Brightness, dimmerBar.Progress.ToString());
@@ -241,44 +237,42 @@
            {
                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                {
                    onDimmerBar = true;
                    curDimmerStatus = onDimmerBar = true;
                };
                dimmerBar.OnProgressChangedEvent = (sender, e) =>
                {
                    //function.fadeTime = 0;
                    //if (!btnSwitch.IsSelected)
                    //{
                    //    dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1;
                    //}
                    //btnSwitch.IsSelected = e > 0 ? true : false;
                    //function.brightness = e;
                    //function.trait_on_off.curValue = e > 0 ? "on" : "off";
                    if (!btnSwitch.IsSelected)
                    {
                        dimmerBar.ProgressBarColor = CSS.CSS_Color.AuxiliaryColor1;
                    }
                    btnSwitch.IsSelected = e > 0 ? true : false;
                    function.trait_on_off.curValue = e > 0 ? "on" : "off";
                    //if (e == 0 || e == 100)
                    //{
                    //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    //    d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
                    //    Control.Ins.SendWriteCommand(function, d);
                    //}
                    //else
                    //{
                    //    if (200 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
                    //    {
                    //        function.refreshTime = DateTime.Now;
                    //        new System.Threading.Thread(() =>
                    //        {
                    //            //Control.Send(CommandType_A.write, function);
                    //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    //            d.Add(FunctionAttributeKey.Brightness, function.brightness.ToString());
                    //            Control.Ins.SendWriteCommand(function, d);
                    //        })
                    //        { IsBackground = true }.Start();
                    //    }
                    //    else
                    //    {
                    //        MainPage.Log("skip dimmer control!!");
                    //    }
                    //}
                    if (e == 0 || e == 100)
                    {
                        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                        d.Add(FunctionAttributeKey.Brightness, e.ToString());
                        Control.Ins.SendWriteCommand(function, d);
                    }
                    else
                    {
                        if (350 < (DateTime.Now - function.refreshTime).TotalMilliseconds)
                        {
                            function.refreshTime = DateTime.Now;
                            new System.Threading.Thread(() =>
                            {
                                //Control.Send(CommandType_A.write, function);
                                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                                d.Add(FunctionAttributeKey.Brightness, e.ToString());
                                Control.Ins.SendWriteCommand(function, d);
                            })
                            { IsBackground = true }.Start();
                        }
                        else
                        {
                            MainPage.Log("skip dimmer control!!");
                        }
                    }
                };
            }
        }