wxr
2022-03-11 b079d370b3c23751a5d200dc2d25f6c80977b4d4
代码同步
45个文件已修改
2073 ■■■■ 已修改文件
HDL-ON_Android/Assets/Language.ini 17 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Properties/AndroidManifest.xml 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Info.plist 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/UserInfo.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/DriverLayer/Control.cs 84 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Server/HttpUtil.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePage.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs 118 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/FunAllAreaView.cs 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs 113 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs 55 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs 216 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs 94 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs 45 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs 135 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs 223 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs 60 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs 49 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs 127 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs 115 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
SiriIntents/Server/HttpUtil.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini
@@ -514,7 +514,12 @@
526=Cancel account
527=Homekit support notes
528=Firmware update
529=
530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
531=Password free unlocking within five minutes
532=The device is offline and cannot be operated temporarily
1000=Room Humidity
1001=V-chip
1002=Anion
@@ -1650,6 +1655,10 @@
526=注销账号
527=支持HomeKit说明
528=固件更新
529=
530=为防止开关门的误触点击,保证家庭安全,请输入您的门锁开门密码。
531=五分钟内免密码开锁
532=设备离线中,暂时无法操作
 
1000=室内湿度
1001=童锁
@@ -2768,6 +2777,12 @@
526=аннулировать счёт
527=инструкция по поддержке набора инструментальных средств для семей
528=обновление прошивки
529=
530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
531=Password free unlocking within five minutes
532=The device is offline and cannot be operated temporarily
1000=Влажность в Помещении
1001=V-образный чип
HDL-ON_Android/Properties/AndroidManifest.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202203081" android:versionName="1.5.5" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools">
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="202203111" android:versionName="1.5.5" package="com.hdl.onpro" xmlns:tools="http://schemas.android.com/tools">
    <uses-sdk android:minSdkVersion="28" android:targetSdkVersion="30" />
    <!--友盟-->
    <!--<uses-sdk android:minSdkVersion="8"></uses-sdk>-->
HDL-ON_iOS/Info.plist
@@ -100,9 +100,9 @@
    <key>UIStatusBarStyle</key>
    <string>UIStatusBarStyleLightContent</string>
    <key>CFBundleShortVersionString</key>
    <string>1.5.502203081</string>
    <string>1.5.502203111</string>
    <key>CFBundleVersion</key>
    <string>1.5.503081</string>
    <string>1.5.503111</string>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Use geographic location to provide services such as weather</string>
    <key>NSAppleMusicUsageDescription</key>
HDL-ON_iOS/Resources/Language.ini
@@ -516,6 +516,9 @@
528=Firmware update
529=
530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
531=Password free unlocking within five minutes
532=The device is offline and cannot be operated temporarily
1000=Room Humidity
1001=V-chip
@@ -1655,6 +1658,7 @@
529=
530=为防止开关门的误触点击,保证家庭安全,请输入您的门锁开门密码。
531=五分钟内免密码开锁
532=设备离线中,暂时无法操作
 
1000=室内湿度
1001=童锁
@@ -2775,6 +2779,10 @@
528=обновление прошивки
529=
530=In order to prevent the wrong touch and click of opening and closing the door and ensure family safety, please enter your door lock password.
531=Password free unlocking within five minutes
532=The device is offline and cannot be operated temporarily
1000=Влажность в Помещении
1001=V-образный чип
HDL_ON/Common/R.cs
@@ -4,6 +4,12 @@
{
    public static class StringId
    {
        /// <summary>
        /// 设备离线中,暂时无法操作
        /// </summary>
        public const int DeviceOfflineCannotOption = 532;
        /// <summary>
        /// 五分钟内免密码开锁
        /// </summary>
HDL_ON/Common/UserInfo.cs
@@ -172,6 +172,17 @@
        [Newtonsoft.Json.JsonIgnore]
        public string doorPasswordString;
        /// <summary>
        /// 记录自动化筛选的房间的条件
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public Entity.Room logicselectedRoom = new Entity.Room { roomId = "6688",roomName = Language.StringByID(StringId.allAreas) };
        /// <summary>
        /// 记录自动化筛选的功能的条件
        /// </summary>
        [Newtonsoft.Json.JsonIgnore]
        public string logicselectedFunction;
        #endregion
        /// <summary>
HDL_ON/DAL/DriverLayer/Control.cs
@@ -360,10 +360,11 @@
        /// <param name="function"></param>
        /// <param name="useRemote">是否直接使用远程发送</param>
        /// <returns></returns>
        public void SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false,int resend = 3)
        public bool SendWriteCommand(Function function, Dictionary<string, string> commandDictionary, bool useRemote = false,int resend = 3)
        {
            function.controlCounter++;
            function.refreshTime = DateTime.Now;
            //如果是控制调光的开时,亮度值不能为0
            if (commandDictionary.Count > 2)
@@ -404,7 +405,7 @@
                upDataObj.objects.Add(asd);
                revString = Newtonsoft.Json.JsonConvert.SerializeObject(upDataObj);
                UpdataFunctionStatus(revString, null, true);
                return;
                return true;
            }
@@ -493,6 +494,8 @@
                }
            }
            return true;
        }
        /// <summary>
        /// 全开全关功能
@@ -1232,13 +1235,80 @@
            }
            else
            {
                Dictionary<string, object> d = new Dictionary<string, object>();
                d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                d.Add("deviceId", doorlock.deviceId);
                var requestJson = HttpUtil.GetSignRequestJson(d);
                var pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/remoteOpen", requestJson);
                ConfirmUnlocking(doorlock.deviceId, extStr);
            }
        }
        /// <summary>
        /// 确认开锁
        /// </summary>
        /// <param name="functionId"></param>
        /// <param name="pwd"></param>
        public void ConfirmUnlocking(string functionId,string pwd)
        {
            Loading loading = new Loading();
            MainPage.BaseView.AddChidren(loading);
            loading.BackgroundColor = 0x88000000;
            loading.LodingBackgroundColor = UI.CSS.CSS_Color.BackgroundColor;
            loading.Start(Language.StringByID(StringId.PleaseWait));
            new System.Threading.Thread(() =>
            {
                try
                {
                    Dictionary<string, object> d = new Dictionary<string, object>();
                    d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                    d.Add("deviceId", functionId);
                    d.Add("pwd", pwd);
                    var requestJson = HttpUtil.GetSignRequestJson(d);
                    var pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/pwdConfirm", requestJson);
                    if (pack.Code == StateCode.SUCCESS)
                    {
                        Newtonsoft.Json.Linq.JObject pairs = Newtonsoft.Json.Linq.JObject.Parse(pack.Data.ToString());
                        var scrip = pairs.GetValue("scrip");
                        d = new Dictionary<string, object>();
                        d.Add("homeId", DB_ResidenceData.Instance.CurrentRegion.id);
                        d.Add("deviceId", functionId);
                        d.Add("scrip", scrip);
                        requestJson = HttpUtil.GetSignRequestJson(d);
                        pack = HttpUtil.RequestHttpsPost("/home-wisdom/app/device/door/remoteOpen", requestJson);
                        //if(pack.Code == StateCode.SUCCESS)
                        //{
                        //    return true;
                        //}
                        //else
                        //{
                        //    return false;
                        //}
                        if (pack.Code != StateCode.SUCCESS) {
                            Application.RunOnMainThread(() => {
                                new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), pack.message);
                                UserInfo.Current.doorPasswordString = "";//
                                UserInfo.Current.LastTimeOpenDoor = DateTime.MinValue;
                            });
                        }
                    }
                    if (pack.Code != StateCode.SUCCESS)
                    {
                        Application.RunOnMainThread(() => {
                            new PublicAssmebly().TipMsg(Language.StringByID(StringId.Tip), pack.message);
                        });
                    }
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loading.Hide();
                        loading.RemoveFromParent();
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        //密码冻结
        //密码验证
HDL_ON/DAL/Server/HttpUtil.cs
@@ -17,8 +17,8 @@
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
        /// <summary>
        /// RegionMark
        /// </summary>
HDL_ON/UI/UI0-Public/PublicAssmeblyBLL.cs
@@ -125,11 +125,11 @@
                        break;
                    case SPK.MusicStandard:
                    case SPK.AvMusic:
                        Music.A31MusicModel.Current.functionMusic =function;//当前播放器
                        var a31PlayMusicPage = new Music.A31PlayMusicPage();
                        MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                        a31PlayMusicPage.Show();
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        //Music.A31MusicModel.Current.functionMusic =function;//当前播放器
                        //var a31PlayMusicPage = new Music.A31PlayMusicPage();
                        //MainPage.BasePageView.AddChidren(a31PlayMusicPage);
                        //a31PlayMusicPage.Show();
                        //MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                        break;
                    case SPK.LightCCT:
                        var TureView = new ColorTureLampPage(function);
@@ -197,7 +197,7 @@
                        airFresh2.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                        break;
                    case SPK.DoorLock:
                        var doorLockPage = new DoorLockListPage();
                        var doorLockPage = new DoorLockPage();
                        doorLockPage.AddForm(function, btnCollectionIcon, btnName, btnFromFloor);
                        break;
                }
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -869,6 +869,7 @@
                    //音乐模块有主从关系,需要特殊处理
                    if (SPK.MusicSpkList().Contains( function.spk))
                    {
                        continue;
                        //var music = function as Music.A31MusicModel;
                        //var music = Music.A31MusicModel.A31MusicModelList.Find((obj) => obj.sid == function.sid);
                        //if (music == null)
HDL_ON/UI/UI2/1-HomePage/HomePageBLL.cs
@@ -468,6 +468,16 @@
        {
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                new System.Threading.Thread(() =>
                {
@@ -521,6 +531,16 @@
        {
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    btnSwitch.IsSelected = !btnSwitch.IsSelected;
@@ -555,6 +575,16 @@
        {
            btnClose.MouseUpEventHandler = (sender, e) =>
            {
                if (!curtain.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnClose.IsSelected = true;
                curtain.trait_on_off.curValue = "off";
                curtain.SetAttrState(FunctionAttributeKey.Percent, 0);
@@ -565,6 +595,16 @@
            btnOpen.MouseUpEventHandler = (sender, e) =>
            {
                if (!curtain.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnOpen.IsSelected = true;
                curtain.trait_on_off.curValue = "on";
                curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
@@ -585,6 +625,16 @@
            };
            btnUp.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);
@@ -606,6 +656,16 @@
            };
            btnDown.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);
HDL_ON/UI/UI2/2-Classification/FunctionControlZone.cs
@@ -61,8 +61,9 @@
            }
            LoadDiv();
            btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/{function.IconName}.png";
            if (SPK.CurtainSpkList().Contains(function.spk))
            {//窗帘没有开关按钮
                CurtainFragment();
@@ -90,6 +91,10 @@
                        this.AddChidren(btnTipPowerLow);
                    }
                }
            }
            else if (function.spk == SPK.DoorLock)
            {
                btnIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/DoorLock.png";
            }
            else
            {
@@ -214,7 +219,9 @@
                UnSelectedImagePath = "Collection/CollectionGrayIcon.png",
                IsSelected = function.collect
            };
            if ( !SPK.ArmSensorSpkList().Contains(function.spk) && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
            if ( !SPK.ArmSensorSpkList().Contains(function.spk)
                && function.spk != SPK.DoorLock
                && !SPK.EnvironDeviceSpkList().Contains( function.spk))//!DB_ResidenceData.Instance.CurrentRegion.isOtherShare &&
            {
                bodyDiv.AddChidren(btnCollectionIcon);
            }
@@ -350,7 +357,7 @@
                btnCurtainOpen.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainUpIcon.png";
                btnCurtainOpen.SelectedImagePath = "FunctionIcon/Curtain/CurtainUpIconOn.png";
            }
            LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose, function);
            LoadEvent_ControlCurtain(btnCurtainStop, btnCurtainOpen, btnCurtainClose);
            #endregion
        }
        /// <summary>
@@ -455,5 +462,8 @@
            };
            bodyDiv.AddChidren(btnLastStates);
        }
    }
}
HDL_ON/UI/UI2/2-Classification/FunctionControlZoneBLL.cs
@@ -79,6 +79,16 @@
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                if(SPK.NotStatusSpkList.Contains( function.spk ))
@@ -109,34 +119,24 @@
        }
        #region 灯光的事件列表
        /// <summary>
        /// 灯光开关事件
        /// </summary>
        void LoadEvent_LightSwitch(Button btnSwitch)
        {
            btnSwitch.MouseUpEventHandler += (sender, e) =>
            {
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                new System.Threading.Thread(() =>
                {
                    if (SPK.LightSpkList().Contains( function.spk))
                    {
                        function.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                        Dictionary<string, string> d = new Dictionary<string, string>();
                        d.Add("on_off", function.trait_on_off.curValue.ToString());
                        Control.Ins.SendWriteCommand(function, d);
                    }
                })
                { IsBackground = true }.Start();
            };
        }
        /// <summary>
        /// 灯光亮度调节事件
        /// </summary>
        void LoadEvent_LightDimming(DiyImageSeekBar dimmerControlBar)
        {
            if(function.spk == SPK.LightDimming || function.spk == SPK.LightRGB)
            if (!function.online)//离线不允许操作
            {
                //new Tip()
                //{
                //    CloseTime = 1,
                //    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                //    Direction = AMPopTipDirection.None,
                //}.Show(MainPage.BaseView);
                return;
            }
            if (function.spk == SPK.LightDimming || function.spk == SPK.LightRGB)
            {
                dimmerControlBar.OnStartTrackingTouchEvent = (sender, e) => {
                    onDimmerBar = true;
@@ -192,41 +192,71 @@
        /// <param name="btnStop"></param>
        /// <param name="btnOpen"></param>
        /// <param name="btnClose"></param>
        void LoadEvent_ControlCurtain(Button btnStop, Button btnOpen, Button btnClose, Function curtain)
        void LoadEvent_ControlCurtain(Button btnStop, Button btnOpen, Button btnClose)
        {
            btnClose.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnClose.IsSelected = true;
                btnStop.IsSelected = false;
                btnOpen.IsSelected = false;
                curtain.trait_on_off.curValue = "off";
                curtain.SetAttrState(FunctionAttributeKey.Percent, 0);
                function.trait_on_off.curValue = "off";
                function.SetAttrState(FunctionAttributeKey.Percent, 0);
                Dictionary<string, string> d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(curtain, d);
                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(function, d);
            };
            btnStop.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnStop.IsSelected = true;
                btnClose.IsSelected = false;
                btnOpen.IsSelected = false;
                curtain.trait_on_off.curValue = "stop";
                function.trait_on_off.curValue = "stop";
                Dictionary<string, string> d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(curtain, d);
                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(function, d);
            };
            btnOpen.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)//离线不允许操作
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnOpen.IsSelected = true;
                btnClose.IsSelected = false;
                btnStop.IsSelected = false;
                curtain.trait_on_off.curValue = "on";
                curtain.SetAttrState(FunctionAttributeKey.Percent, 100);
                function.trait_on_off.curValue = "on";
                function.SetAttrState(FunctionAttributeKey.Percent, 100);
                Dictionary<string, string> d = new Dictionary<string, string>();
                d.Add(FunctionAttributeKey.OnOff, curtain.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(curtain, d);
                d.Add(FunctionAttributeKey.OnOff, function.trait_on_off.curValue.ToString());
                Control.Ins.SendWriteCommand(function, d);
            };
        }
        #endregion
@@ -243,6 +273,16 @@
            };
            btnUp.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);
@@ -264,6 +304,16 @@
            };
            btnDown.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);
HDL_ON/UI/UI2/3-Intelligence/Automation/FunTpye.cs
@@ -14,7 +14,7 @@
        /// <summary>
        /// 默认选中是房间时:全部区域
        /// </summary>
        public static Entity.Room selectedRoom = new Entity.Room { roomId ="6688" };
        //public static Entity.Room selectedRoom = new Entity.Room { roomId ="6688" };
        /// <summary>
        /// 默认选中是设备类型时:全部功能
@@ -122,7 +122,9 @@
                        funAllAreaView.btnText1.Text = (areaView.btnClick.Tag as Entity.Room).roomName;
                        ///切换房间默认功能类型全部;
                        funAllAreaView.btnText2.Text = Language.StringByID(StringId.allFun);
                        selectedRoom = (areaView.btnClick.Tag as Entity.Room);
                        //selectedRoom = (areaView.btnClick.Tag as Entity.Room);
                        UserInfo.Current.logicselectedRoom = (areaView.btnClick.Tag as Entity.Room);
                        UserInfo.Current.logicselectedFunction = "";
                        ///获取显示设备列表
                        var list = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(areaView.btnClick.Tag as Entity.Room, if_type);
@@ -142,7 +144,7 @@
            {
                //获取最终显示列表
                var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(selectedRoom, if_type);
                var functionList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type);
                //获取设备列表的类型(例如:灯光类,窗帘类。。。)
                var deviceTypeList = LogicMethod.CurrLogicMethod.GetDeviceTypeList(functionList);
                if (deviceTypeList.Count == 0)
@@ -223,11 +225,13 @@
                    {
                        fLayout.RemoveFromParent();
                        funAllAreaView.btnText2.Text = areaView.btnClick.Tag.ToString();
                        UserInfo.Current.logicselectedFunction = areaView.btnClick.Tag.ToString();
                        ///获取单个类型(例如:灯光类。。)设备FunctionType列表
                        var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(areaView.btnClick.Tag.ToString());
                        var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
                        ///获取单个灯光类型(例如:灯光1,灯光2。。)显示设备列表
                        var lists = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, functionList);
                        DeviceListView(vv, lists);
                        var lists2 = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, functionList);
                        DeviceListView(vv, lists2);
                    };
                    if (deviceTypeList.Count - 1 == i)
                    {
@@ -239,9 +243,24 @@
            funAllAreaView.btnText2.MouseUpEventHandler += funClick;
            funAllAreaView.btnIcon2.MouseUpEventHandler += funClick;
            ///获取显示设备列表
            var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(selectedRoom, if_type);
            DeviceListView(vv, deviceList);
            var deviceList = LogicMethod.CurrLogicMethod.GetFunctionDeviceList(UserInfo.Current.logicselectedRoom, if_type);
            if (!string.IsNullOrEmpty(UserInfo.Current.logicselectedFunction))
            {
                ///获取单个类型(例如:灯光类。。)设备FunctionType列表
                var typeFunctionList = LogicMethod.CurrLogicMethod.GetDeviceTypeFunctionList(UserInfo.Current.logicselectedFunction);
                ///获取单个灯光类型(例如:灯光1,灯光2。。)显示设备列表
                var lists = LogicMethod.CurrLogicMethod.GetShowDeviceList(typeFunctionList, deviceList);
                funAllAreaView.btnText2.Text = UserInfo.Current.logicselectedFunction;
                DeviceListView(vv, lists);
            }
            else
            {
                DeviceListView(vv, deviceList);
            }
            funAllAreaView.btnText1.Text = UserInfo.Current.logicselectedRoom.roomName;
        }
@@ -252,6 +271,7 @@
        /// <param name="deviceList"></param>
        public void DeviceListView(VerticalScrolViewLayout verticalScrolView, List<HDL_ON.Entity.Function> deviceList)
        {
            verticalScrolView.RemoveAll();
            foreach (var dev in deviceList)
            {
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/FunAllAreaView.cs
@@ -37,7 +37,6 @@
            X = Application.GetRealWidth(34),
            TextAlignment = TextAlignment.CenterLeft,
            TextID=StringId.allAreas,
        };
        /// <summary>
HDL_ON/UI/UI2/4-PersonalCenter/RoomListManage/FloorsManagementPage.cs
@@ -147,7 +147,9 @@
                            });
                        }
                    }
                    catch { }
                    catch (Exception ex) {
                        MainPage.Log(ex.Message);
                    }
                    finally
                    {
                        Application.RunOnMainThread(() => {
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AcControlPage.cs
@@ -358,6 +358,15 @@
                };
                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    }
                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                    device.SetAttrState(FunctionAttributeKey.Mode, m);
                    btnMode.UnSelectedImagePath = acFunction.GetModeIconPath(m);
@@ -485,6 +494,15 @@
                };
                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    }
                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                    device.SetAttrState(FunctionAttributeKey.Swing, m);
                    btnSwing.UnSelectedImagePath = acFunction.GetSwingIconPath(m);
@@ -600,6 +618,15 @@
                };
                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    }
                    btnFanIcon.IsSelected = btnFanText.IsSelected = true;
                    device.SetAttrState(FunctionAttributeKey.FanSpeed, m);
                    btnWindSpeed.UnSelectedImagePath = acFunction.GetFanIconPath(m);
@@ -787,6 +814,15 @@
                btn.MouseUpEventHandler = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    }
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add(attr.key, "");
                    Control.Ins.SendWriteCommand(device, d);
@@ -841,11 +877,20 @@
        {
            btnMinus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                {
                    return;
                }
                if (temp <= device.GetAttribute(FunctionAttributeKey.SetTemp).min)
                {
                    return;
@@ -862,6 +907,15 @@
            };
            btnPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                {
                    return;
@@ -879,31 +933,33 @@
                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
                Control.Ins.SendWriteCommand(device, d);
            };
            arcBar.OnStopTrackingTouchEvent = (sender, e) =>
            if (!device.online)
            {
                temp = arcBar.Progress;
                device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                btnTemp.Text = arcBar.Progress.ToString();
                controlTime = DateTime.Now;
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                Control.Ins.SendWriteCommand(device, d);
            };
            arcBar.OnProgressChangedEvent = (sender, e) =>
            {
                device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
                btnTemp.Text = e.ToString();
            };
            //arcBar.MouseDownEventHandler = (sender, e) => {
            //    Console.WriteLine("ddd");
            //    MainPage.BasePageView.ScrollEnabled =false;
            //};
            //arcBar.MouseUpEventHandler = (sender, e) => {
            //    Console.WriteLine("ddd2");
            //    MainPage.BasePageView.ScrollEnabled = true;
            //};
                arcBar.OnStopTrackingTouchEvent = (sender, e) =>
                {
                    temp = arcBar.Progress;
                    device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                    btnTemp.Text = arcBar.Progress.ToString();
                    controlTime = DateTime.Now;
                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                    Control.Ins.SendWriteCommand(device, d);
                };
                arcBar.OnProgressChangedEvent = (sender, e) =>
                {
                    device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
                    btnTemp.Text = e.ToString();
                };
                //arcBar.MouseDownEventHandler = (sender, e) => {
                //    Console.WriteLine("ddd");
                //    MainPage.BasePageView.ScrollEnabled =false;
                //};
                //arcBar.MouseUpEventHandler = (sender, e) => {
                //    Console.WriteLine("ddd2");
                //    MainPage.BasePageView.ScrollEnabled = true;
                //};
            }
        }
        /// <summary>
        /// 控制模式事件
@@ -938,6 +994,15 @@
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                if (device.trait_on_off.curValue.ToString() == "on")
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshControlPage.cs
@@ -759,6 +759,15 @@
        /// <param name="comadValue">命令</param>
        private void SendOtherComand(IconViewControl btnIcon, string comadKey, string comadValue)
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
            }
            btnIcon.CanClick = false;
            HdlThreadLogic.Current.RunThread(() =>
@@ -779,6 +788,15 @@
        /// </summary>
        private void SendSwitchComand()
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
            }
            this.btnSwitch.CanClick = false;
            string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/AirFreshRelayControlPage.cs
@@ -89,6 +89,15 @@
            FrameWhiteCentet1.AddChidren(btnSwitch);
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                device.trait_on_off.curValue = btnSwitch.IsSelected ? "on" : "off";
                new System.Threading.Thread(() =>
@@ -280,6 +289,15 @@
        /// <param name="comadValue">命令</param>
        private void SendOtherComand(IconViewControl btnIcon, string comadKey, string comadValue)
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
            }
            btnIcon.CanClick = false;
            HdlThreadLogic.Current.RunThread(() =>
HDL_ON/UI/UI2/FuntionControlView/1ContorlPage/FhControlPage.cs
@@ -305,6 +305,15 @@
                };
                EventHandler<MouseEventArgs> eventHandler1 = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    }
                    btnModeIcon.IsSelected = btnModeText.IsSelected = true;
                    device.SetAttrState(FunctionAttributeKey.Mode, m);
                    btnMode.UnSelectedImagePath = fhTemp.GetModeIconPath(m);
@@ -362,6 +371,15 @@
        {
            btnMinus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                {
                    return;
@@ -381,6 +399,15 @@
            };
            btnPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                if (device.trait_on_off.curValue.ToString() == "off" || device.GetAttrState(FunctionAttributeKey.Mode) == "fan")
                {
                    return;
@@ -398,19 +425,23 @@
                d.Add(FunctionAttributeKey.SetTemp, temp.ToString());
                Control.Ins.SendWriteCommand(device, d);
            };
            arcBar.OnStopTrackingTouchEvent = (sender, e) =>
            if (!device.online)
            {
                device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                btnTemp.Text = arcBar.Progress.ToString();
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                Control.Ins.SendWriteCommand(device, d);
            };
            arcBar.OnProgressChangedEvent = (sender, e) =>
            {
                device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
                btnTemp.Text = e.ToString();
            };
                arcBar.OnStopTrackingTouchEvent = (sender, e) =>
                {
                    device.SetAttrState(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                    btnTemp.Text = arcBar.Progress.ToString();
                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.SetTemp, arcBar.Progress.ToString());
                    Control.Ins.SendWriteCommand(device, d);
                };
                arcBar.OnProgressChangedEvent = (sender, e) =>
                {
                    device.SetAttrState(FunctionAttributeKey.SetTemp, e.ToString());
                    btnTemp.Text = e.ToString();
                };
            }
        }
        /// <summary>
        /// 控制模式事件
HDL_ON/UI/UI2/FuntionControlView/Curtain/CurtainModulePageBLL.cs
@@ -72,6 +72,15 @@
        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);
                }
                new System.Threading.Thread(() => {
                    System.Threading.Thread.Sleep(2000);
                    Application.RunOnMainThread(() => {
@@ -107,6 +116,15 @@
            btnCurtainStop.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                new System.Threading.Thread(() => {
                    System.Threading.Thread.Sleep(2000);
                    Application.RunOnMainThread(() => {
@@ -121,6 +139,15 @@
            };
            btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                new System.Threading.Thread(() => {
                    System.Threading.Thread.Sleep(2000);
                    Application.RunOnMainThread(() => {
HDL_ON/UI/UI2/FuntionControlView/Curtain/MotorCurtainPageBLL.cs
@@ -137,6 +137,15 @@
        {
            btnCurtainClose.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                new System.Threading.Thread(() =>
                {
                    System.Threading.Thread.Sleep(2000);
@@ -156,6 +165,15 @@
            btnCurtainStop.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                onCurtainAnimation = false;
                new System.Threading.Thread(() =>
                {
@@ -174,6 +192,15 @@
            btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                new System.Threading.Thread(() =>
                {
                    System.Threading.Thread.Sleep(2000);
@@ -191,107 +218,108 @@
                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;
                };
            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;
            };
                //btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
                //{
                //    function.percent--;
                //    controlBar.Progress = function.percent;
                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
                //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
                //};
            //btnMinusSignIcon.MouseUpEventHandler = (sender, e) =>
            //{
            //    function.percent--;
            //    controlBar.Progress = function.percent;
            //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
            //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
            //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
            //};
                //btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
                //{
                //    function.percent++;
                //    controlBar.Progress = function.percent;
                //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
                //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
                //};
            //btnPlusSgnIcon.MouseUpEventHandler = (sender, e) =>
            //{
            //    function.percent++;
            //    controlBar.Progress = function.percent;
            //    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
            //    d.Add(FunctionAttributeKey.Percent, function.percent.ToString());
            //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
            //};
            curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
            {
                btnProgress.Text = curtainSeekBar.Progress + "%";
            //    controlBar.Progress = curtainSeekBar.Progress;
            //    new System.Threading.Thread(() =>
            //    {
            //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
            //        {
            //            function.percent = e;
            //            function.refreshTime = DateTime.Now;
            //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
            //            d.Add("percent", function.percent.ToString());
            //            Control.SendWriteCommand(function, d);
            //        }
            //    })
            //    { IsBackground = true }.Start();
            };
            curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
            {
            btnProgress.Text = curtainSeekBar.Progress + "%";
                curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
                {
                    btnProgress.Text = curtainSeekBar.Progress + "%";
                    //    controlBar.Progress = curtainSeekBar.Progress;
                    //    new System.Threading.Thread(() =>
                    //    {
                    //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
                    //        {
                    //            function.percent = e;
                    //            function.refreshTime = DateTime.Now;
                    //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    //            d.Add("percent", function.percent.ToString());
                    //            Control.SendWriteCommand(function, d);
                    //        }
                    //    })
                    //    { IsBackground = true }.Start();
                };
                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();
            };
                    {
                        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();
                };
            //controlBar.OnProgressChangedEvent = (sender, e) =>
            //{
            //    curtainSeekBar.Progress = controlBar.Progress;
            //    new System.Threading.Thread(() =>
            //    {
            //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
            //        {
            //            function.percent = e;
            //            function.refreshTime = DateTime.Now;
            //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
            //            d.Add("percent", function.percent.ToString());
            //            Control.SendWriteCommand(function, d);
            //        }
            //    })
            //    { IsBackground = true }.Start();
            //};
                //controlBar.OnProgressChangedEvent = (sender, e) =>
                //{
                //    curtainSeekBar.Progress = controlBar.Progress;
                //    new System.Threading.Thread(() =>
                //    {
                //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
                //        {
                //            function.percent = e;
                //            function.refreshTime = DateTime.Now;
                //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                //            d.Add("percent", function.percent.ToString());
                //            Control.SendWriteCommand(function, d);
                //        }
                //    })
                //    { IsBackground = true }.Start();
                //};
            //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
            //{
            //    curtainSeekBar.Progress = controlBar.Progress;
            //    new System.Threading.Thread(() =>
            //    {
            //        function.percent = e;
            //        function.refreshTime = DateTime.Now;
            //        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
            //        d.Add("percent", function.percent.ToString());
            //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
            //    })
            //    { IsBackground = true }.Start();
            //};
                //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
                //{
                //    curtainSeekBar.Progress = controlBar.Progress;
                //    new System.Threading.Thread(() =>
                //    {
                //        function.percent = e;
                //        function.refreshTime = DateTime.Now;
                //        System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                //        d.Add("percent", function.percent.ToString());
                //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
                //    })
                //    { IsBackground = true }.Start();
                //};
            }
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/Curtain/RollingShutterPageBLL.cs
@@ -138,6 +138,15 @@
        {
            btnCurtainClose.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                new System.Threading.Thread(() =>
                {
                    System.Threading.Thread.Sleep(2000);
@@ -157,6 +166,15 @@
            btnCurtainStop.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                new System.Threading.Thread(() => {
                    System.Threading.Thread.Sleep(2000);
                    Application.RunOnMainThread(() => {
@@ -173,6 +191,15 @@
            btnCurtainOpen.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                }
                new System.Threading.Thread(() =>
                {
                    System.Threading.Thread.Sleep(2000);
@@ -208,61 +235,63 @@
            //    DriverLayer.Control.Ins.SendWriteCommand(function, d);
            //};
            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;
            };
                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) =>
            //{
            //    controlBar.Progress = curtainSeekBar.Progress;
            //    new System.Threading.Thread(() =>
            //    {
            //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
            //        {
            //            function.percent = e;
            //            function.refreshTime = DateTime.Now;
            //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
            //            d.Add("percent", function.percent.ToString());
            //            Control.SendWriteCommand(function, d);
            //        }
            //    })
            //    { IsBackground = true }.Start();
            //};
            curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
            {
                //curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
                //{
                //    controlBar.Progress = curtainSeekBar.Progress;
                //    new System.Threading.Thread(() =>
                //    {
                //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
                //        {
                //            function.percent = e;
                //            function.refreshTime = DateTime.Now;
                //            System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                //            d.Add("percent", function.percent.ToString());
                //            Control.SendWriteCommand(function, d);
                //        }
                //    })
                //    { IsBackground = true }.Start();
                //};
                curtainSeekBar.OnStopTrackingTouchEvent = (sender, e) =>
                {
                //controlBar.Progress = curtainSeekBar.Progress;
                btnProgress.Text = 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();
            };
                    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();
                };
            curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
            {
                btnProgress.Text = curtainSeekBar.Progress + "%";
                curtainSeekBar.OnProgressChangedEvent = (sender, e) =>
                {
                    btnProgress.Text = curtainSeekBar.Progress + "%";
                //    new System.Threading.Thread(() =>
                //    {
                //        if (controlBar.Progress == 0 || controlBar.Progress == 100 || (DateTime.Now - function.refreshTime).TotalMilliseconds > 300)
@@ -277,21 +306,21 @@
                //    { IsBackground = true }.Start();
            };
            //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
            //{
            //    curtainSeekBar.Progress = controlBar.Progress;
            //    btnProgress.Text = 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("percent", e.ToString());
            //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
            //    })
            //    { IsBackground = true }.Start();
            //};
                //controlBar.OnStopTrackingTouchEvent = (sender, e) =>
                //{
                //    curtainSeekBar.Progress = controlBar.Progress;
                //    btnProgress.Text = 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("percent", e.ToString());
                //        DriverLayer.Control.Ins.SendWriteCommand(function, d);
                //    })
                //    { IsBackground = true }.Start();
                //};
            }
        }
    }
}
HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockListPage.cs
@@ -52,7 +52,7 @@
            base.SetTitleText(Language.StringByID(StringId.DoorLock));
            //初始化头部历史记录控件
            this.InitTopHistoryControl();
            //this.InitTopHistoryControl();
            //初始化中部信息
            this.InitMiddleFrame();
@@ -173,7 +173,7 @@
            //电池图标
            var btnBattery = new BatteryPersentControl();
            btnBattery.Y = Application.GetRealHeight(62);
            frameBack.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
            //frameBack.AddChidren(btnBattery, ChidrenBindMode.BindEvent);
            btnBattery.InitControl();
            btnBattery.SetValue(80);
            btnBattery.X = frameBack.Width - btnBattery.Width - Application.GetRealWidth(12);
HDL_ON/UI/UI2/FuntionControlView/DoorLock/DoorLockPage.cs
@@ -129,7 +129,7 @@
            //它有个最小的X轴
            batteryControl.X = Application.GetRealWidth(104) > base.btnRoomName.Right ?
                Application.GetRealWidth(104) : base.btnRoomName.Right + Application.GetRealWidth(4);
            FrameWhiteCentet1.AddChidren(batteryControl);
            //FrameWhiteCentet1.AddChidren(batteryControl);
            if (batteryControl.Height > base.btnRoomName.Height)
            {
                //一个是25,一个是21,弄不准到底谁更高,因为计算方法不一样
@@ -147,7 +147,7 @@
            btnOnlineIcon.X = batteryControl.Right + Application.GetRealWidth(12);
            btnOnlineIcon.Y = batteryControl.Y;
            btnOnlineIcon.UnSelectedImagePath = "FunctionIcon/DoorLock/Connect.png";
            FrameWhiteCentet1.AddChidren(btnOnlineIcon);
            //FrameWhiteCentet1.AddChidren(btnOnlineIcon);
            //在线文本
            this.btnOnlineView = new NormalViewControl(Application.GetRealWidth(100), btnOnlineIcon.Height, false);
            btnOnlineView.X = btnOnlineIcon.Right + Application.GetRealWidth(4);
@@ -155,7 +155,7 @@
            btnOnlineView.TextSize = CSS_FontSize.PromptFontSize_SecondaryLevel;
            btnOnlineView.TextColor = CSS_Color.PromptingColor1;
            btnOnlineView.TextID = StringId.Connected;
            FrameWhiteCentet1.AddChidren(btnOnlineView);
            //FrameWhiteCentet1.AddChidren(btnOnlineView);
            //右上角配置结束的事件
            base.SettionFinishEvent += () =>
            {
HDL_ON/UI/UI2/FuntionControlView/Electrical/AirSwitchPage.cs
@@ -417,6 +417,16 @@
        {
            btnSwitchIcon.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
                new System.Threading.Thread(() =>
                {
@@ -429,6 +439,16 @@
            };
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
                new System.Threading.Thread(() =>
                {
HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerPage.cs
@@ -125,10 +125,17 @@
            FrameWhiteCentet1.AddChidren(btnDown);
            #region 控制
            btnUp.MouseDownEventHandler = (sender, e) => {
                btnUp.IsSelected = true;
            };
            btnUp.MouseUpEventHandler = (sender, e) => {
                if (!device.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);
@@ -143,10 +150,17 @@
                Control.Ins.SendWriteCommand(device, d);
            };
            //----
            btnStop.MouseDownEventHandler = (sender, e) => {
                btnStop.IsSelected = true;
            };
            btnStop.MouseUpEventHandler = (sender, e) => {
                if (!device.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);
@@ -160,11 +174,31 @@
                d.Add(FunctionAttributeKey.Position, "stop");
                Control.Ins.SendWriteCommand(device, d);
            };
            //-----
            btnDown.MouseDownEventHandler = (sender, e) => {
                btnDown.IsSelected = true;
            };
            if (!device.online)
            {
                btnUp.MouseDownEventHandler = (sender, e) => {
                    btnUp.IsSelected = true;
                };
                btnStop.MouseDownEventHandler = (sender, e) => {
                    btnStop.IsSelected = true;
                };
                //-----
                btnDown.MouseDownEventHandler = (sender, e) =>
                {
                    btnDown.IsSelected = true;
                };
            }
            btnDown.MouseUpEventHandler = (sender, e) => {
                if (!device.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);
@@ -208,6 +242,16 @@
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    return;
                    }
                    string onoff = hotDryView.Lighting ? "false" : "true";
                    device.SetAttrState(FunctionAttributeKey.HotDry, onoff);
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -237,6 +281,16 @@
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    return;
                    }
                    string onoff = windDryView.Lighting ? "false" : "true";
                    device.SetAttrState(FunctionAttributeKey.WindDry, onoff);
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -272,6 +326,16 @@
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    return;
                    }
                    string onoff = disinfectView.Lighting ? "false" : "true";
                    device.SetAttrState(FunctionAttributeKey.Disinfect, onoff);
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -312,6 +376,16 @@
                EventHandler<MouseEventArgs> eventHandler = (sender, e) =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                    return;
                    }
                    string onoff = lightingView.Lighting ? "off" : "on";
                    device.SetAttrState(FunctionAttributeKey.OnOff, onoff);
                    Dictionary<string, string> d = new Dictionary<string, string>();
HDL_ON/UI/UI2/FuntionControlView/Electrical/ClothesHangerSetTimePage.cs
@@ -74,6 +74,16 @@
                functionListView.AddChidren(hotDryTimeCell);
                hotDryTimeCell.GoAction = () =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                        return;
                    }
                    BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3, Language.StringByID(StringId.HotDryTime));
                    timeControl.RowHeight = Application.GetRealHeight(50);
                    timeControl.InitControl(0, 1, 162);
@@ -120,6 +130,16 @@
                functionListView.AddChidren(windDryCell);
                windDryCell.GoAction = () =>
                {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                        return;
                    }
                    BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3,Language.StringByID(StringId.WindDryTime));
                    timeControl.RowHeight = Application.GetRealHeight(50);
                    timeControl.InitControl(0, 1, 162);
@@ -167,6 +187,16 @@
                functionListView.AddChidren(disinfectTimeCell);
                disinfectTimeCell.GoAction = () => {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                        return;
                    }
                    BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3, Language.StringByID(StringId.DisinfectTime));
                    timeControl.RowHeight = Application.GetRealHeight(50);
                    timeControl.InitControl(0, 1, 162);
@@ -215,6 +245,16 @@
                anionTimeCell.LineView.RemoveFromParent();
                anionTimeCell.GoAction = () => {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                        return;
                    }
                    BottomTimeSelectControl timeControl = new BottomTimeSelectControl(hRange, mRange,3,Language.StringByID(StringId.AnionTime));
HDL_ON/UI/UI2/FuntionControlView/Electrical/FanPageBLL.cs
@@ -62,6 +62,16 @@
        {
            btnSwitchIcon.MouseUpEventHandler += (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitchIcon.IsSelected;
                new System.Threading.Thread(() =>
@@ -76,6 +86,16 @@
            };
            btnSwitch.MouseUpEventHandler += (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitch.IsSelected;
                new System.Threading.Thread(() =>
@@ -88,18 +108,21 @@
                { IsBackground = true }.Start();
            };
            barGradualChange.OnProgressChangedEvent = (sender, e) => {
                function.SetAttrState(FunctionAttributeKey.OpenLevel, e.ToString());
                new System.Threading.Thread(() =>
            if (!function.online)
            {
                barGradualChange.OnProgressChangedEvent = (sender, e) =>
                {
                    function.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, function.trait_on_off.curValue.ToString());
                    Control.Ins.SendWriteCommand(function, d);
                })
                { IsBackground = true }.Start();
            };
                    function.SetAttrState(FunctionAttributeKey.OpenLevel, e.ToString());
                    new System.Threading.Thread(() =>
                    {
                        function.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, function.trait_on_off.curValue.ToString());
                        Control.Ins.SendWriteCommand(function, d);
                    })
                    { IsBackground = true }.Start();
                };
            }
        }
    }
HDL_ON/UI/UI2/FuntionControlView/Electrical/IrLearnPage.cs
@@ -89,6 +89,17 @@
                row.AddChidren(btn);
                btn.MouseUpEventHandler = (sender, e) => {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                        return;
                    }
                    System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
                    d.Add(attr.key, "");
                    Control.Ins.SendWriteCommand(device, d);
HDL_ON/UI/UI2/FuntionControlView/Electrical/PjtPage.cs
@@ -480,6 +480,16 @@
                    btn.MouseUpEventHandler = (sender, e) =>
                    {
                        if (!device.online)
                        {
                            new Tip()
                            {
                                CloseTime = 1,
                                Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                                Direction = AMPopTipDirection.None,
                            }.Show(MainPage.BaseView);
                            return;
                        }
                        Dictionary<string, string> d = new Dictionary<string, string>();
                        d.Add(attr.key, "");
                        Control.Ins.SendWriteCommand(device, d);
@@ -538,6 +548,16 @@
            btnChlPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -547,6 +567,16 @@
            };
            btnChlReduce.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -556,6 +586,16 @@
            };
            btnVolPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -565,6 +605,16 @@
            };
            btnVolReduce.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -574,6 +624,16 @@
            };
            btnBack.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -583,6 +643,16 @@
            };
            btnPower.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -609,6 +679,16 @@
            };
            btnMenu.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -618,6 +698,17 @@
                }
            };
            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -627,6 +718,17 @@
                }
            };
            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -636,6 +738,17 @@
                }
            };
            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -645,6 +758,17 @@
                }
            };
            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -654,6 +778,17 @@
                }
            };
            btnOk.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
HDL_ON/UI/UI2/FuntionControlView/Electrical/SocketPage.cs
@@ -290,6 +290,16 @@
        {
            btnSwitchIcon.MouseUpEventHandler += (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitchIcon.IsSelected;
                new System.Threading.Thread(() =>
@@ -306,6 +316,16 @@
            };
            btnSwitch.MouseUpEventHandler += (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitch.IsSelected;
                new System.Threading.Thread(() =>
HDL_ON/UI/UI2/FuntionControlView/Electrical/StbPage.cs
@@ -421,6 +421,16 @@
                }
                numberView.AddChidren(btn);
                btn.MouseUpEventHandler = (sender, e) => {
                    if (!device.online)
                    {
                        new Tip()
                        {
                            CloseTime = 1,
                            Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                            Direction = AMPopTipDirection.None,
                        }.Show(MainPage.BaseView);
                        return;
                    }
                    string index = (sender as Button).Text;
                    btn.IsSelected = false;
                    if (DB_ResidenceData.Instance.GatewayType == 1)
@@ -474,6 +484,16 @@
        {
            btnMenu.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -483,6 +503,16 @@
            };
            btnChlPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -492,6 +522,16 @@
            };
            btnChlReduce.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -501,6 +541,16 @@
            };
            btnVolPlus.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -510,6 +560,16 @@
            };
            btnVolReduce.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -519,6 +579,16 @@
            };
            btnBack.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -529,6 +599,16 @@
            btnMenu.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -538,10 +618,30 @@
            };
            btn123.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                ShowNumberView();
            };
            btnMute.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -551,6 +651,16 @@
            };
            btnPower.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
@@ -560,23 +670,41 @@
            };
            btnTopMenuUp.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
            };
            btnTopMenuDown.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
            };
            btnTopMenuLeft.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
            };
            btnTopMenuRight.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
            };
            btnOk.MouseDownEventHandler = (sender, e) => {
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
            };
            if (!device.online)
            {
                btnTopMenuUp.MouseDownEventHandler = (sender, e) =>
                {
                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconUp.png";
                };
                btnTopMenuDown.MouseDownEventHandler = (sender, e) =>
                {
                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconDown.png";
                };
                btnTopMenuLeft.MouseDownEventHandler = (sender, e) =>
                {
                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconLeft.png";
                };
                btnTopMenuRight.MouseDownEventHandler = (sender, e) =>
                {
                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconRight.png";
                };
                btnOk.MouseDownEventHandler = (sender, e) =>
                {
                    topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIconOk.png";
                };
            }
            btnMenu.MouseUpEventHandler = (sender, e) =>
            {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -586,6 +714,17 @@
                }
            };
            btnTopMenuUp.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -595,6 +734,17 @@
                }
            };
            btnTopMenuLeft.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -604,6 +754,17 @@
                }
            };
            btnTopMenuRight.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -613,6 +774,17 @@
                }
            };
            btnTopMenuDown.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -622,6 +794,17 @@
                }
            };
            btnOk.MouseUpEventHandler = (sender, e) => {
                if (!device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                topMenuView.BackgroundImagePath = "FunctionIcon/Electrical/TV/TVOkIcon.png";
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
@@ -788,6 +971,16 @@
                    btn.MouseUpEventHandler = (sender, e) =>
                    {
                        if (!device.online)
                        {
                            new Tip()
                            {
                                CloseTime = 1,
                                Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                                Direction = AMPopTipDirection.None,
                            }.Show(MainPage.BaseView);
                            return;
                        }
                        Dictionary<string, string> d = new Dictionary<string, string>();
                        d.Add(attr.key, "");
                        Control.Ins.SendWriteCommand(device, d);
HDL_ON/UI/UI2/FuntionControlView/Electrical/TVPageBLL.cs
@@ -40,6 +40,16 @@
        /// </summary>
        void LoadControlEvent()
        {
            if (!function.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            btnChangeTVAV.MouseUpEventHandler = (sender, e) =>
            {
                if (DB_ResidenceData.Instance.GatewayType == 1)
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaAirCleanerPage.cs
@@ -539,7 +539,17 @@
        /// </summary>
        /// <param name="value">auto:自动  sleep:睡眠  manual:手动  strong:强烈</param>
        private void SendModeComand(string value)
        {
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            this.btnMode.CanClick = false;
            HdlThreadLogic.Current.RunThread(() =>
            {
@@ -558,7 +568,17 @@
        /// </summary>
        /// <param name="value">canel:取消 1:1小时 2:2小时 3:4小时 4:8小时</param>
        private void SendTimingComand(string value)
        {
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            this.btnTime.CanClick = false;
            HdlThreadLogic.Current.RunThread(() =>
            {
@@ -577,7 +597,17 @@
        /// </summary>
        /// <param name="value">1:低档 2:中档 3:高档</param>
        private void SendFanSpeedComand(string value)
        {
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            this.btnFan.CanClick = false;
            HdlThreadLogic.Current.RunThread(() =>
            {
@@ -595,7 +625,17 @@
        /// 发送开关命令
        /// </summary>
        private void SendSwitchComand()
        {
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            this.btnPictrue.CanClick = false;
            this.btnSwitch.CanClick = false;
@@ -622,7 +662,17 @@
        /// 发送使能命令
        /// </summary>
        private void SendEnableComand(MostRightIconControl btnSwitch, string sendKey, string value)
        {
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            if (btnSwitch != null)
            {
                btnSwitch.CanClick = false;
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaFanPage.cs
@@ -97,21 +97,25 @@
            //刷新界面状态
            this.RefreshFormStatu(false);
            //档
            var strView = Language.StringByID(StringId.Gear);
            seekBarContr.ProgressChangedEvent += (div, value) =>
            {
                this.btnNowGear.Text = value + strView;
                //滑动中
                if (div == 0) { this.fanData.IsProgressing = true; }
                //滑动结束
                else
                {
                    this.fanData.IsProgressing = false;
                    this.fanData.ProgressEndTime = DateTime.Now;
                    //发送风速命令
                    this.SendSpeedComand(value);
                }
            };
            var strView = Language.StringByID(StringId.Gear);
            if (device.online)
            {
                seekBarContr.ProgressChangedEvent += (div, value) =>
                {
                    this.btnNowGear.Text = value + strView;
                    //滑动中
                    if (div == 0) { this.fanData.IsProgressing = true; }
                    //滑动结束
                    else
                    {
                        this.fanData.IsProgressing = false;
                        this.fanData.ProgressEndTime = DateTime.Now;
                        //发送风速命令
                        this.SendSpeedComand(value);
                    }
                };
            }
        }
        #endregion
@@ -174,7 +178,17 @@
        /// 发送开关命令
        /// </summary>
        private void SendSwitchComand()
        {
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            this.btnSwitch.CanClick = false;
            string statu = this.btnSwitch.IsSelected == true ? "off" : "on";
@@ -194,7 +208,8 @@
        /// 发送风速命令
        /// </summary>
        private void SendSpeedComand(int value)
        {
        {
            var dic = new Dictionary<string, string>();
            dic.Add("fan_speed_percent", value.ToString());
            Control.Ins.SendWriteCommand(this.device, dic, true);
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWaterValvePage.cs
@@ -167,6 +167,16 @@
        /// </summary>
        private void SendSwitchComand()
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            this.btnPictrue.CanClick = false;
            this.btnSwitch.CanClick = false;
@@ -272,6 +282,16 @@
        private void SetControlTime()
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            var timeControl = new BottomTimeSelectControl();
            timeControl.RowCount = 5;
            timeControl.InitControl(0,0);
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotConsumablesMagPage.cs
@@ -86,6 +86,16 @@
            btnSwitch.IsSelected = i_brushStatu;
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                if (!i_device.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                if (btnSwitch.IsSelected == true)
                {
                    //取消的话直接取消
HDL_ON/UI/UI2/FuntionControlView/Electrical/TuyaWeepRobotPage.cs
@@ -454,7 +454,17 @@
        /// 发送命令
        /// </summary>
        private void SendComand(string key, string i_value)
        {
        {
            if (!device.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            HdlThreadLogic.Current.RunThread(() =>
            {
                var dic = new Dictionary<string, string>();
HDL_ON/UI/UI2/FuntionControlView/FoolHeating/FloorHeatingPageBLL.cs
@@ -129,6 +129,16 @@
        /// </summary>
        void LoadEvent_TempChange()
        {
            if (!function.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            btnMinus.MouseUpEventHandler = (sender, e) =>
            {
                if(function.trait_on_off.curValue.ToString() == "off")
HDL_ON/UI/UI2/FuntionControlView/Light/ColorTureLampPageBLL.cs
@@ -85,7 +85,17 @@
        /// 修改色温
        /// </summary>
        void LoadEvet_ChangeColorTemplatrue()
        {
        {
            if (!function.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            barColorTemplatrue.OnProgressChangedEvent += (sender, value) =>
            {
                new System.Threading.Thread(() =>
@@ -129,11 +139,18 @@
        /// </summary>
        void LoadEvent_DimmerBar()
        {
            dimmerBar.OnStartTrackingTouchEvent = (sender, e) => {
                onDimmerBar = true;
            };
            dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
            {
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                onDimmerBar = false;
                function.SetAttrState(FunctionAttributeKey.Brightness, dimmerBar.Progress);
                System.Collections.Generic.Dictionary<string, string> d = new System.Collections.Generic.Dictionary<string, string>();
@@ -143,48 +160,54 @@
                btnBrightnessText.Text = dimmerBar.Progress + "%";
                dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
            };
            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";
                //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();
                //    }
                //}
                //btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(222 - 16 - 16) / 100) + Application.GetRealWidth(40);
                //btnBrightnessText.Text = function.brightness + "%";
            };
            if (function.online)
            {
                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                {
                    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";
                //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();
                //    }
                //}
                //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.Text = dimmerBar.Progress + "%";
            };
                    btnBrightnessText.Text = dimmerBar.Progress + "%";
                };
            }
        }
        /// <summary>
@@ -193,7 +216,17 @@
        void LoadSwitchEvent()
        {
            btnSwitch.MouseUpEventHandler += (sender, e) =>
            {
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                //function.fadeTime = barFadeTime.Progress;
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                if (btnSwitch.IsSelected)
HDL_ON/UI/UI2/FuntionControlView/Light/DimmerPageBLL.cs
@@ -88,21 +88,25 @@
        /// </summary>
        void LoadEvent_DimmerBar()
        {
            dimmerBar.OnStartTrackingTouchEvent = (sender, e) => {
                onDimmerBar = true;
            };
            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
                onDimmerBar = 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());
                Control.Ins.SendWriteCommand(function, d);
                btnBrightnessText.Text = dimmerBar.Progress + "%";
            };
            //20201223 删除滑动发送命令,防止控件跳动
            dimmerBar.OnProgressChangedEvent = (sender, e) =>
            if (function.online)
            {
                dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                {
                    onDimmerBar = true;
                };
                dimmerBar.OnStopTrackingTouchEvent = (sender, e) =>
                {
                    onDimmerBar = 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());
                    Control.Ins.SendWriteCommand(function, d);
                    btnBrightnessText.Text = dimmerBar.Progress + "%";
                };
                //20201223 删除滑动发送命令,防止控件跳动
                dimmerBar.OnProgressChangedEvent = (sender, e) =>
                {
                    dimmerBar.SetProgressBarColors(CSS_Color.AuxiliaryColor1, CSS_Color.AuxiliaryColor1);
                //function.fadeTime = 0;
                //if (!btnSwitch.IsSelected)
                //{
@@ -133,10 +137,10 @@
                //    }
                //}
                btnBrightnessText.Y = ((100 - dimmerBar.Progress) * Application.GetRealHeight(288 - 16 - 16) / 100) + Application.GetRealWidth(40);
                btnBrightnessText.Text = dimmerBar.Progress + "%";
            };
                    btnBrightnessText.Text = dimmerBar.Progress + "%";
                };
            }
        }
        /// <summary>
        /// 加载开关事件
        /// </summary>
@@ -144,6 +148,16 @@
        {
            btnSwitch.MouseUpEventHandler += (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                if (btnSwitch.IsSelected)
                {
HDL_ON/UI/UI2/FuntionControlView/Light/RGBPageBLL.cs
@@ -88,6 +88,16 @@
        /// </summary>
        void LoadColorChangeEvent()
        {
            if (!function.online)
            {
                new Tip()
                {
                    CloseTime = 1,
                    Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                    Direction = AMPopTipDirection.None,
                }.Show(MainPage.BaseView);
                return;
            }
            DateTime colorChangeTime = DateTime.MinValue;
            //bool send = false;
@@ -202,11 +212,21 @@
        /// </summary>
        void LoadEvent_DimmerBar()
        {
            dimmerBar.OnStartTrackingTouchEvent = (sender, e)=>{
                onDimmerBar = true;
            };
            dimmerBar.OnStopTrackingTouchEvent = (sender, e) => {
                new System.Threading.Thread(() => {
            dimmerBar.OnStopTrackingTouchEvent = (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(200);
                    onDimmerBar = false;
                })
@@ -214,47 +234,54 @@
                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());
                Control.Ins.SendWriteCommand(function, d);
            };
            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 (function.online)
            {
                dimmerBar.OnStartTrackingTouchEvent = (sender, e) =>
                {
                    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 (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, 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!!");
                    //    }
                    //}
                };
            }
        }
        /// <summary>
        /// 修改灯光渐变时间
        /// </summary>
@@ -309,6 +336,10 @@
        {
            btnRestoredPoint.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    return;
                }
                if(function.trait_on_off.curValue.ToString() == "off")
                {
                    return;
HDL_ON/UI/UI2/FuntionControlView/Light/RelayPageBLL.cs
@@ -62,6 +62,16 @@
        {
            btnSwitchIcon.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitch.IsSelected = btnSwitchIcon.IsSelected = !btnSwitchIcon.IsSelected;
                new System.Threading.Thread(() =>
                {
@@ -74,6 +84,16 @@
            };
            btnSwitch.MouseUpEventHandler = (sender, e) =>
            {
                if (!function.online)
                {
                    new Tip()
                    {
                        CloseTime = 1,
                        Text = Language.StringByID(StringId.DeviceOfflineCannotOption),
                        Direction = AMPopTipDirection.None,
                    }.Show(MainPage.BaseView);
                    return;
                }
                btnSwitchIcon.IsSelected = btnSwitch.IsSelected = !btnSwitch.IsSelected;
                new System.Threading.Thread(() =>
                {
SiriIntents/Server/HttpUtil.cs
@@ -16,8 +16,8 @@
        /// 固定域名,正式环境
        /// 公共域名就近解析
        /// </summary>
        public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        //public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
        //public const string GlobalRequestHttpsHost = "https://nearest.hdlcontrol.com";
        public const string GlobalRequestHttpsHost = "https://test-gz.hdlcontrol.com";//mmmm
        /// <summary>
        /// RegionMark
        /// </summary>