wxr
2021-05-23 4d14154c36ac5692aadc036eed97fb9f1c410e2a
Merge branch 'WJC' into temp-wxr
28个文件已修改
1 文件已重命名
631 ■■■■ 已修改文件
DLL/IOS/Shared.IOS.JLCountryCode.dll 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_Android/Assets/Language.ini 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL-ON_iOS/Resources/Language.ini 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Common/R.cs 18 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/Entity/Function/Function.cs 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs 64 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs 250 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs 23 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
DLL/IOS/Shared.IOS.JLCountryCode.dll
Binary files differ
HDL-ON_Android/Assets/Language.ini
@@ -1411,7 +1411,7 @@
6006=电视
6007=风扇
6008=机顶盒
6009=DVD/EVD/VCD
6009=DVD
6010=投影仪
6011=自定义
6012=红外遥控
@@ -1481,6 +1481,22 @@
6078=系统维护中~请稍后再试~
6079=获取数据失败
6080=暂时不支持该功能
6081=选择红外品牌
6082=摇头
6083=低速
6084=中速
6085=高速
6086=自动
6087=温度+
6088=温度-
6089=空气净化器
6090=热水器
6091=不存在的产品
6092=设备不存在
6093=设备不在线
6094=网关设备不存在
7000=新建自动化
7001=编辑自动化
HDL-ON_iOS/Resources/Language.ini
@@ -1411,7 +1411,7 @@
6006=电视
6007=风扇
6008=机顶盒
6009=DVD/EVD/VCD
6009=DVD
6010=投影仪
6011=自定义
6012=红外遥控
@@ -1481,6 +1481,22 @@
6078=系统维护中~请稍后再试~
6079=获取数据失败
6080=暂时不支持该功能
6081=选择红外品牌
6082=摇头
6083=低速
6084=中速
6085=高速
6086=自动
6087=温度+
6088=温度-
6089=空气净化器
6090=热水器
6091=不存在的产品
6092=设备不存在
6093=设备不在线
6094=网关设备不存在
7000=新建自动化
7001=编辑自动化
HDL_ON/Common/R.cs
@@ -984,10 +984,20 @@
        public const int xitongweihuzhong = 6078;
        public const int huoqushujushibao = 6079;
        public const int zanshibuzhichigaigongneng = 6080;
        public const int xuanzehongwaipinpai= 6081;
        public const int yaotou = 6082;
        public const int disu = 6083;
        public const int zhongsu = 6084;
        public const int gaosu = 6085;
        public const int zidong = 6086;
        public const int wendujia = 6087;
        public const int wendujian = 6088;
        public const int kongqijinghauqi = 6089;
        public const int reshuiqi = 6090;
        public const int bucunzaichanpin = 6091;
        public const int shebeibucunzai = 6092;
        public const int shebeibuzaixian = 6093;
        public const int wangguanshebeibuzaixian = 6094;
        public const int newAutomation = 7000;
        public const int editAutomation = 7001;
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -330,14 +330,14 @@
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.PirMethod.controldata = revString;
                                }
                                //App订阅遥控器自学按键学习成功通知
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.id}/app/thing/event/irCodeStudyDone/up")
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    UI.UI2.PersonalCenter.PirDevice.Method.buttondata = revString;
                                    UI.UI2.PersonalCenter.PirDevice.PirMethod.buttondata = revString;
                                }
                                #region 数据更新推送主题
                                //appHomeRefresh:住宅数据刷新通知
HDL_ON/Entity/Function/Function.cs
@@ -1234,6 +1234,30 @@
        /// </summary>
        public const string TvIr = "ir.tv";
        /// <summary>
        /// 红外投影仪
        /// </summary>
        public const string PjtIr = "ir.pjt";
        /// <summary>
        /// 红外机顶盒
        /// </summary>
        public const string StbIr = "ir.stb";
        /// <summary>
        /// 红外影碟机
        /// </summary>
        public const string DvDIr = "ir.dvd";
        /// <summary>
        /// 红外空气净化器
        /// </summary>
        public const string PurifierIr = "ir.air_purifier";
        /// <summary>
        /// 红外热水器
        /// </summary>
        public const string HeaterIr = " ir.water_heater";
        /// <summary>
        /// 红外风扇
        /// </summary>
        public const string FanIr = "ir.fan";
        /// <summary>
        /// 家电、风扇
        /// </summary>
        public const string ElectricFan = "electrical.fan";
HDL_ON/HDL_ON.projitems
@@ -352,7 +352,6 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirSend.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\AddControlComplete.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\PatchView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\Method.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\FailView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\ReplicationView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\ClothesHangerSetTimePage.cs" />
@@ -409,6 +408,7 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\DvdPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\PjtPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\FuntionControlView\Electrical\StbPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\PirMethod.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
HDL_ON/UI/UI2/3-Intelligence/Automation/AddInputType.cs
@@ -27,7 +27,7 @@
                BackgroundColor = CSS.CSS_Color.viewMiddle,
            };
            this.AddChidren(viewLayout);
            #region 时间  功能
            #region 时间  功能 室外变化
            //时间
            LogicView.SelectTypeView timeView = new LogicView.SelectTypeView();
            timeView.btnText.TextID = StringId.time;
@@ -59,7 +59,6 @@
                viewLayout.AddChidren(shiwaiView.FLayoutView());
            }
            #endregion
            #region  所有点击事件
            //时间
HDL_ON/UI/UI2/3-Intelligence/Automation/AddTarget.cs
@@ -46,7 +46,7 @@
            LogicView.SelectTypeView delayView = new LogicView.SelectTypeView();
            delayView.frameLayout.Y = sceneView.frameLayout.Bottom;
            delayView.btnText.TextID = StringId.delayLogic;
            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
            delayView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
            //viewLayout.AddChidren(delayView.FLayoutView());
            #endregion
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -926,7 +926,7 @@
                        break;
                    case "3":
                        {
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/delayed.png";
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicMethod.cs
@@ -325,13 +325,21 @@
        {
            List<string> deviceStrTypeList = new List<string>();
            deviceStrTypeList.Clear();
            var lightjosn = deviceList.Find((device) => device.spk == SPK.LightSwitch || device.spk == SPK.LightDimming || device.spk == SPK.LightCCT || device.spk == SPK.LightRGB || device.spk == SPK.LightRGBW);
            var lightjosn = deviceList.Find((device) =>
            device.spk == SPK.LightSwitch
            || device.spk == SPK.LightDimming
            || device.spk == SPK.LightCCT
            || device.spk == SPK.LightRGB
            || device.spk == SPK.LightRGBW);
            if (lightjosn != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.Lights));
            }
            var curtainjosn = deviceList.Find((device) => device.spk == SPK.CurtainSwitch || device.spk == SPK.CurtainTrietex || device.spk == SPK.CurtainRoller);
            var curtainjosn = deviceList.Find((device) =>
            device.spk == SPK.CurtainSwitch
            || device.spk == SPK.CurtainTrietex
            || device.spk == SPK.CurtainRoller);
            if (curtainjosn != null)
            {
                deviceStrTypeList.Add(Language.StringByID(StringId.Curtain));
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/LogicTypeTitleView.cs
@@ -28,7 +28,7 @@
            //Y = Application.GetRealHeight(12),
            X = Application.GetRealWidth(12),
            Gravity = Gravity.CenterVertical,
            IsMoreLines = true,
           // IsMoreLines = true,
        };
        /// <summary>
        /// 图标
HDL_ON/UI/UI2/3-Intelligence/Automation/LogicView/TimeView.cs
@@ -203,7 +203,7 @@
        {
            //初始化列表
            var hList = new List<string>();
            for (int i = 0; i < 23; i++)
            for (int i = 0; i < 24; i++)
            {
                if (i < 10)
                {
HDL_ON/UI/UI2/3-Intelligence/Automation/MainView.cs
@@ -279,7 +279,6 @@
                    var jay = jArray[a];
                    //数据返序列化为Logic对象
                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                    Console.WriteLine("获取逻辑==="+str);
                    var logic = Newtonsoft.Json.JsonConvert.DeserializeObject<Logic>(str);
                    if (logic != null)
                    {
@@ -288,38 +287,39 @@
                        if (if_logic == null)
                        {
                            //Logic newlogic = new Logic();
                            //newlogic.name = logic.name;
                            //newlogic.userLogicId = logic.userLogicId;
                            //newlogic.sid = logic.sid;
                            //newlogic.relation = logic.relation;
                            //newlogic.enable = logic.enable;
                            //newlogic.cycle = logic.cycle;
                            //for (int i = 0; i < logic.input.Count; i++)
                            //{
                            //    if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
                            //    {
                            //        //防止调试软件乱传东西上来;
                            //        //防止有空对象;
                            //        //正常情况下不会出现的现象;
                            //        continue;
                            //    }
                            //    newlogic.input.Add(logic.input[i]);
                            //}
                            //for (int i = 0; i < logic.output.Count; i++)
                            //{
                            //    if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
                            //    {
                            //        //防止调试软件乱传东西上来;
                            //        //防止有空对象;
                            //        //正常情况下不会该现象;
                            //        continue;
                            //    }
                            //    newlogic.output.Add(logic.output[i]);
                            //}
                            Logic newlogic = new Logic();
                            newlogic.name = logic.name;
                            newlogic.userLogicId = logic.userLogicId;
                            newlogic.sid = logic.sid;
                            newlogic.relation = logic.relation;
                            newlogic.enable = logic.enable;
                            newlogic.cycle = logic.cycle;
                            for (int i = 0; i < logic.input.Count; i++)
                            {
                                if (logic.input[i] == null || string.IsNullOrEmpty(logic.input[i].condition_type))
                                {
                                    //防止调试软件乱传东西上来;
                                    //防止有空对象;
                                    //正常情况下不会出现的现象;
                                    continue;
                                }
                                newlogic.input.Add(logic.input[i]);
                            }
                            for (int i = 0; i < logic.output.Count; i++)
                            {
                                if (logic.output[i] == null || string.IsNullOrEmpty(logic.output[i].target_type))
                                {
                                    //防止调试软件乱传东西上来;
                                    //防止有空对象;
                                    //正常情况下不会该现象;
                                    continue;
                                }
                                newlogic.output.Add(logic.output[i]);
                            }
                            newlogic.noticeConfig = logic.noticeConfig;
                            newlogic.pushConfigs = logic.pushConfigs;
                            //添加逻辑
                            Logic.LogicList.Add(logic);
                            Logic.LogicList.Add(newlogic);
                        }
                    }
HDL_ON/UI/UI2/4-PersonalCenter/AddFunction/DeviceListPage.cs
@@ -152,7 +152,7 @@
                    switch (device.spk)
                    {
                        case SPK.IrModule:
                            new UI2.PersonalCenter.PirDevice.Method().MainView(this, device,()=> {});
                            new UI2.PersonalCenter.PirDevice.PirMethod().MainView(this, device,()=> {});
                            break;
                    }
                };
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
@@ -151,7 +151,7 @@
                        //移除添加按钮界面
                        this.RemoveFromParent();
                        //移除之前可能存在的界面
                        Method.RemoveView("AddControl");
                        PirMethod.RemoveView("AddControl");
                        //加载数据界面
                        AddControl addControl = new AddControl();
                        MainPage.BasePageView.AddChidren(addControl);
@@ -161,7 +161,7 @@
                    else
                    {
                        replication.RemView();
                        Method method = new Method();
                        PirMethod method = new PirMethod();
                        method.ErrorShow(null,"添加失败");
                    }
@@ -176,7 +176,7 @@
        public override void RemoveFromParent()
        {
            //刷新指定界面
            Method.RefreshView("PirMain");
            PirMethod.RefreshView("PirMain");
            base.RemoveFromParent();
        }
    }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
@@ -143,7 +143,7 @@
                //移除当前界面
                this.RemoveFromParent();
                //可能之前已经存在该界面
                Method.RemoveView("AddControlComplete");
                PirMethod.RemoveView("AddControlComplete");
                AddControlComplete addControlComplete = new AddControlComplete();
                MainPage.BasePageView.AddChidren(addControlComplete);
                addControlComplete.Show(control, false);
@@ -162,7 +162,7 @@
            View.Buttons buttons = new View.Buttons();
            buttons.AddButton2(vv, control.status, (obj) =>
            {
                Method.ThreadSend(control, (responsePackNew) =>
                PirMethod.ThreadSend(control, (responsePackNew) =>
                {
                    var buttonObj = control.status.Find((c) => c.value == obj.value);
                    if (buttonObj != null)
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
@@ -113,11 +113,11 @@
                    //添加所有遥控名称列表
                    list.Add(Pir.currPir.FunctioList[i].name);
                }
                Method method = new Method();
                PirMethod method = new PirMethod();
                method.EditControlName(StringId.editName, list, control.name, (name, dialog) =>
                {
                    //发送更新名称命令
                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    {
                        //关闭窗口
                        dialog.Close();
@@ -133,7 +133,7 @@
            //所属区域点击事件
            quyuPatchView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                Method method = new Method();
                PirMethod method = new PirMethod();
                method.ManagementPosition(GetFunction(control.deviceId), () =>
                {
                    //更新区域
@@ -145,12 +145,12 @@
            {
                if (bool_library)
                {//继续添加库的遥控器
                    Method.RefreshView("PirMain");//刷新指点界面
                    PirMethod.RefreshView("PirMain");//刷新指点界面
                    this.RemoveFromParent();
                }
                else
                {//继续添加自定义的遥控器
                    Method method = new Method();
                    PirMethod method = new PirMethod();
                    method.AddControl(this, (controlDevice) =>
                    {
                        AddButton addButton = new AddButton();
@@ -164,7 +164,7 @@
            saveView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                //刷新指点界面
                Method.RefreshView("PirMain");
                PirMethod.RefreshView("PirMain");
                //移除所有界面
                MainPage.BasePageView.RemoveViewByTag("PirView");
            };
@@ -191,7 +191,7 @@
        public override void RemoveFromParent()
        {
            //刷新指定界面
            Method.RefreshView("PirMain");
            PirMethod.RefreshView("PirMain");
            base.RemoveFromParent();
        }
    }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
@@ -18,7 +18,8 @@
                string s = brandList[str].brandName;
                strList.Add(s);
            }
            JLCountrycode.CountryCodeView.Current.ShowSortSelection("选择红外品牌", GetDateList(strList), (countryName) =>
            var dicList = GetDateList(strList);
            JLCountrycode.CountryCodeView.Current.ShowSortSelection(Language.StringByID(StringId.xuanzehongwaipinpai), dicList, (countryName) =>
            {
                var brandObj = brandList.Find((c) => c.brandName == countryName);
@@ -60,6 +61,7 @@
                        {
                            if (libraryList.Count < 40)
                            {
                                //限制40个库;
                                libraryList.Add(library);
                            }
                        }
@@ -68,7 +70,7 @@
                }
                else
                {
                    Method method = new Method();
                    PirMethod method = new PirMethod();
                    method.ErrorShow(responsePackNew, "");
                }
            }, id, "品牌红外码库列表");
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
@@ -57,10 +57,10 @@
                {
                    list.Add(Pir.currPir.FunctioList[i].name);
                }
                Method method = new Method();
                PirMethod method = new PirMethod();
                method.EditControlName(StringId.editName,list, control.name, (name, dialog) =>
                {
                    Method.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    PirMethod.ThreadSend(new Control { deviceId = control.deviceId, name = name }, (responsePackNew) =>
                    {
                        dialog.Close();
                        editNameFLayout.btnEditText.Text = name;
@@ -73,7 +73,7 @@
            //遥控器所属区域选中事件
            areaFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                Method method = new Method();
                PirMethod method = new PirMethod();
                method.ManagementPosition(control, () =>
                {
                    //更新区域
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Matching.cs
@@ -176,14 +176,13 @@
                code = 1;
                GetBtnText(testBtn, code, spk);
            };
            //测试Text
            testBtn.MouseUpEventHandler += (sender, e) =>
            {
                var library = libraryList[index - 1];
                var control = GetControl(spk, testBtn.TextID, library);
                //发送测试码命令
                Method.ThreadSend(control, (responsePackNew) => { }, "库码测试", "frame", this, null);
                PirMethod.ThreadSend(control, (responsePackNew) => { }, "库码测试", "frame", this, null);
                if (code == 3) {
                    //标记最后那个码
                    if_bool = true;
@@ -216,7 +215,7 @@
                {
                    var library = libraryList[index-1];
                    var control = GetControl(spk, testBtn.TextID, library);
                    Method method = new Method();
                    PirMethod method = new PirMethod();
                    //发送库添加遥控器命令
                    method.ThreadAddControl(control, this, (device) =>  
                    {
@@ -295,6 +294,136 @@
                        }
                    }
                    break;
                case SPK.FanIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.zhongsu:
                                {
                                    key = "middle";
                                    value = "";
                                }
                                break;
                            case StringId.yaotou:
                                {
                                    key = "swing";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.PjtIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.yinliangjia:
                                {
                                    key = "volume+";
                                    value = "";
                                }
                                break;
                            case StringId.yinliangjian:
                                {
                                    key = "volume-";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.StbIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.yinliangjia:
                                {
                                    key = "volume+";
                                    value = "";
                                }
                                break;
                            case StringId.yinliangjian:
                                {
                                    key = "volume-";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.DvDIr:
                    {
                    }
                    break;
                case SPK.PurifierIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.zidong:
                                {
                                    key = "auto";
                                    value = "";
                                }
                                break;
                            case StringId.jingyin:
                                {
                                    key = "mute";
                                    value = "0";
                                }
                                break;
                        }
                    }
                    break;
                case SPK.HeaterIr:
                    {
                        switch (textInt)
                        {
                            case StringId.dianyuan:
                                {
                                    key = "on_off";
                                    value = "on";
                                }
                                break;
                            case StringId.wendujia:
                                {
                                    key = "temp+";
                                    value = "";
                                }
                                break;
                            case StringId.wendujian:
                                {
                                    key = "temp-";
                                    value = "";
                                }
                                break;
                        }
                    }
                    break;
            }
            AttributesStatus buttonObj = new AttributesStatus();
            buttonObj.key = key;
@@ -373,6 +502,121 @@
                        }
                    }
                    break;
                case SPK.FanIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.zhongsu;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.yaotou;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.PjtIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.yinliangjia;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.yinliangjian;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.StbIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.yinliangjia;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.yinliangjian;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.DvDIr:
                    {
                    }
                    break;
                case SPK.PurifierIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.zidong;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.jingyin;
                                }
                                break;
                        }
                    }
                    break;
                case SPK.HeaterIr:
                    {
                        switch (code)
                        {
                            case 1:
                                {
                                    textValue = StringId.dianyuan;
                                }
                                break;
                            case 2:
                                {
                                    textValue = StringId.wendujia;
                                }
                                break;
                            case 3:
                                {
                                    textValue = StringId.wendujian;
                                }
                                break;
                        }
                    }
                    break;
            }
            testBtn.TextID = textValue;
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
@@ -61,12 +61,7 @@
            };
            middFLayout.AddChidren(addDevice);
            if (Pir.currPir.FunctioList.Count < 10)
            {
                //10个遥控器就会隐藏添加图标
                // middFLayout.AddChidren(addDevice);
                addDevice.Visible = true;
            }
            #endregion
            #region 界面点击事件
@@ -76,7 +71,7 @@
                    ////关闭刷新View;
                    vv.EndHeaderRefreshing();
                    Method.GetControlList(this, () =>
                    PirMethod.GetControlList(this, () =>
                    {
                        Application.RunOnMainThread(() =>
                        {
@@ -108,7 +103,7 @@
                    //1=空调;2=电视;3=风扇;4=机顶盒;5=DVD/EVD/VCD;6=投影仪;7=自定义;
                    if (if_value == 7)
                    {
                        Method method = new Method();
                        PirMethod method = new PirMethod();
                        method.AddControl(this, (control) =>
                        {
                            //成功后移除;
@@ -121,7 +116,7 @@
                    }
                    else
                    {
                        if (if_value == 3 || if_value == 4 || if_value == 5 || if_value == 6)
                        if (if_value == 6)
                        {
                            new TipPopView().FlashingBox(Language.StringByID(StringId.zanshibuzhichigaigongneng));
                            return;
@@ -148,13 +143,18 @@
            ///初始化界面
            UIView(vv);
        }
        /// <summary>
        /// 加载UI界面
        /// </summary>
        /// <param name="vv">上下滑控件</param>
        private void UIView(VerticalRefreshLayout vv)
        {
            if (Pir.currPir.FunctioList.Count < 10)
            {
                //10个遥控器就会隐藏添加图标
                // middFLayout.AddChidren(addDevice);
                addDevice.Visible = true;
            }
            vv.RemoveAll();
            #region 红外宝图标 版本号 名称 状态
            FrameLayout fLayout = new FrameLayout
@@ -208,7 +208,7 @@
                    TipPopView tipPopView = new TipPopView();
                    tipPopView.TipBox(StringId.tip, text, (dialog) =>
                    {
                        Method.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
                        PirMethod.ThreadSend(new Control { deviceId=control.deviceId}, (responsePackNew) =>
                        {
                            dialog.Close();
                            var function = Pir.currPir.FunctioList.Find((c) => c.sid == Function.sid);
@@ -313,7 +313,7 @@
                {
                    if (tag)
                    {
                        Method method = new Method();
                        PirMethod method = new PirMethod();
                        method.ErrorShow(responsePackNew, "");
                    }
                }
@@ -360,7 +360,7 @@
                }
                else
                {
                    Method method = new Method();
                    PirMethod method = new PirMethod();
                    method.ErrorShow(responsePackNew, "");
                }
            }, id, "品牌列表");
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMethod.cs
File was renamed from HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
@@ -6,7 +6,7 @@
namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice
{
    public class Method
    public class PirMethod
    {
        /// <summary>
@@ -79,22 +79,22 @@
        {
            View.TipView tipView = new View.TipView();
            tipView.InputBox(frameLayout, "", (name, frame) =>
             {
                 if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
                 {
                     Control control = new Control();
                     control.name = name;
                     control.type = "learn";
                     control.spk = "ir.learn";
                     control.deviceId = Pir.currPir.deviceId;
                     ThreadAddControl(control, frame, action);
                 }
                 else
                 {
                     View.TipView tt = new View.TipView();
                     tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
                 }
             }, false);
            {
                if (Pir.currPir != null && Pir.currPir.FunctioList.Count < 10)
                {
                    Control control = new Control();
                    control.name = name;
                    control.type = "learn";
                    control.spk = "ir.learn";
                    control.deviceId = Pir.currPir.deviceId;
                    ThreadAddControl(control, frame, action);
                }
                else
                {
                    View.TipView tt = new View.TipView();
                    tt.TipBox(StringId.tip, StringId.bunengchaoguo10);
                }
            }, false);
        }
        /// <summary>
@@ -223,7 +223,7 @@
                                {
                                    if (null == PirDevice.Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
                                    {
                                    {
                                        PirDevice.Pir.pirDeviceList.Add(pirJosn);
                                    }
                                }
@@ -252,7 +252,7 @@
                            else
                            {
                                loading.Hide();
                                Method method = new Method();
                                PirMethod method = new PirMethod();
                                method.ErrorShow(null, "读取红外宝列表失败");
                            }
                        }
@@ -329,24 +329,24 @@
        public static void GetControlList(FrameLayout frame, Action action, Pir pirDevice)
        {
            ThreadSend(new Control { deviceId = pirDevice.deviceId }, (responsePackNew) =>
             {
                 var jArray = JArray.Parse(responsePackNew.Data.ToString());
                 for (int a = 0; a < jArray.Count; a++)
                 {
                     var jay = jArray[a];
                     //数据返序列化为Logic对象
                     var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                     var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
                     if (pirJosn != null)
                     {
                         if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
                         {
                             pirDevice.FunctioList.Add(pirJosn);
                         }
                     }
                 }
                 action();
             }, "获取遥控器列表", "frame", frame, null);
            {
                var jArray = JArray.Parse(responsePackNew.Data.ToString());
                for (int a = 0; a < jArray.Count; a++)
                {
                    var jay = jArray[a];
                    //数据返序列化为Logic对象
                    var str = Newtonsoft.Json.JsonConvert.SerializeObject(jay);
                    var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Entity.Function>(str);
                    if (pirJosn != null)
                    {
                        if (null == pirDevice.FunctioList.Find((c) => c.deviceId == pirJosn.deviceId))
                        {
                            pirDevice.FunctioList.Add(pirJosn);
                        }
                    }
                }
                action();
            }, "获取遥控器列表", "frame", frame, null);
        }
        /// <summary>
@@ -373,7 +373,7 @@
        /// <param name="frame">log父控件</param>
        /// <param name="dialog">log父控件</param>
        /// <param name="attributesStatus">学习按键</param>
        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus=null)
        public static void ThreadSend(Control control, Action<ResponsePackNew> action, string str, string view, FrameLayout frame, Dialog dialog, Entity.AttributesStatus attributesStatus = null)
        {
            //加载log
@@ -434,7 +434,7 @@
                        }
                        else
                        {
                            Method method = new Method();
                            PirMethod method = new PirMethod();
                            //自定义错误提示文本
                            string eorroText = "";
                            if (str == "删除")
@@ -565,6 +565,26 @@
                            }
                            break;
                        case "14002":
                            {
                                str = Language.StringByID(StringId.bucunzaichanpin);
                            }
                            break;
                        case "10805":
                            {
                                str = Language.StringByID(StringId.shebeibucunzai);
                            }
                            break;
                        case "14006":
                            {
                                str = Language.StringByID(StringId.shebeibuzaixian);
                            }
                            break;
                        case "9":
                            {
                                str = Language.StringByID(StringId.wangguanshebeibuzaixian);
                            }
                            break;
                        case "2":
                            {
                                str = Language.StringByID(StringId.xitongweihuzhong);
@@ -671,13 +691,10 @@
        public string id = "";
        public List<Objects> objects = new List<Objects>();
        public string time_stamp = string.Empty;
    }
    [Serializable]
    public class Objects
    {
        public string sid = string.Empty;
        public string spk = string.Empty;
        public List<Attributes> attributes = new List<Attributes>();
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
@@ -171,13 +171,13 @@
                    var responsePackNew = RequestServerhomeId(jObject, NewAPI.API_POST_Ir_CodeStudy);
                    if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                    {
                        Method method = new Method();
                        Method.buttondata = "";
                        PirMethod method = new PirMethod();
                        PirMethod.buttondata = "";
                        cloud = method.MqttDate("按键", control.sid, 25);
                    }
                    else
                    {
                        Method method = new Method();
                        PirMethod method = new PirMethod();
                        method.ErrorShow(responsePackNew, "");
                    }
                }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/SetPir.cs
@@ -81,10 +81,10 @@
            editNameFLayout.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                List<string> list = new List<string>();
                Method method = new Method();
                PirMethod method = new PirMethod();
                method.EditControlName(StringId.editName, list, Pir.currPir.name, (name, dialog) =>
                {
                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId, name = name }, (responsePackNew) =>
                    {
                        dialog.Close();
                        editNameFLayout.btnEditText.Text = name;
@@ -102,7 +102,7 @@
                tipPopView.TipBox(StringId.tip, text, (dialog) =>
                {
                    Method.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
                    PirMethod.ThreadSend(new Control { deviceId = Pir.currPir.deviceId }, (responsePackNew) =>
                    {
                        var pir = Pir.pirDeviceList.Find((c) => c.deviceId == Pir.currPir.deviceId);
                        if (pir != null)
@@ -111,7 +111,7 @@
                        }
                        dialog.Close();
                        this.RemoveFromParent();
                        Method.RemoveView("PirMain");
                        PirMethod.RemoveView("PirMain");
                    }, "删除", "dialog", null, dialog);
                }, () =>
@@ -131,7 +131,7 @@
        public override void RemoveFromParent()
        {
            //刷新PirMain界面
            Method.RefreshView("PirMain");
            PirMethod.RefreshView("PirMain");
            base.RemoveFromParent();
          
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
@@ -265,14 +265,14 @@
                    break;
                case 5:
                    {
                        iconPath = "PirIcon/dvd.png";
                        deviceNameIndex = StringId.dvd;
                        iconPath = "PirIcon/projector.png";
                        deviceNameIndex = StringId.touyingyi;
                    }
                    break;
                case 6:
                    {
                        iconPath = "PirIcon/projector.png";
                        deviceNameIndex = StringId.touyingyi;
                        iconPath = "PirIcon/dvd.png";
                        deviceNameIndex = StringId.dvd;
                    }
                    break;
                case 7:
@@ -310,29 +310,28 @@
                case 3:
                    {
                        //风扇
                        // type = "fan-" + SPK.ElectricFan;
                        type = "fan-" + SPK.FanIr;
                    }
                    break;
                case 4:
                    {
                        //机顶盒
                        //  type = "set_top_box-" + SPK.ElectricTV;
                        type = "set_top_box-" + SPK.StbIr;
                    }
                    break;
                case 5:
                    {
                        //影碟机
                        // type = "dvd-" + SPK.ElectricTV;
                        //投影仪
                        type = "projector-" + SPK.PjtIr;
                    }
                    break;
                case 6:
                    {
                        //投影仪
                        //  type = "projector-" + SPK.ElectricTV;
                        //影碟机
                        type = "dvd-" + SPK.DvDIr;
                    }
                    break;
            }
            return type;
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/PirView.cs
@@ -38,7 +38,7 @@
        {
            Y = Application.GetRealHeight(16),
            X = Application.GetRealWidth(72),
            Width = Application.GetRealWidth(120),
            Width = Application.GetRealWidth(120+80),
            Height = Application.GetRealHeight(20),
            //Text = pirDevice.name,
            TextAlignment = TextAlignment.CenterLeft,
HDL_ON/UI/UI2/FuntionControlView/Video/VideoMethod.cs
@@ -189,7 +189,7 @@
                        }
                        else
                        {
                            Method method = new Method();
                            PirMethod method = new PirMethod();
                            //自定义错误提示文本
                            string eorroText = "";
                            if (str == "获取可视对讲")
HDL_ON/UI/UI2/FuntionControlView/Video/View/ShowDialog.cs
@@ -130,7 +130,7 @@
                Height = Application.GetRealHeight(32),
                Width = Application.GetRealWidth(82+5),
                TextColor = MusicColor.SelectedColor,
                TextSize =20,//24
                TextSize =18,//24
                TextAlignment = TextAlignment.Center,
                IsBold = true,
                Text = str1,