wxr
2021-03-16 9b44e30275621a48335fbea7b32b5065a2859c9c
Merge branch 'WJC' into temp-wxr
2个文件已添加
12个文件已修改
910 ■■■■■ 已修改文件
HDL_ON/DAL/Mqtt/MqttClient.cs 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/HDL_ON.projitems 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs 70 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/DeviceSet.cs 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs 201 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Pir.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs 332 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/HeigthChangeView.cs 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/MainView.cs 143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
HDL_ON/DAL/Mqtt/MqttClient.cs
@@ -330,7 +330,9 @@
                                {
                                    var bytes = Securitys.EncryptionService.AesDecryptPayload(e.ApplicationMessage.Payload, tuyaEncryptKey);
                                    var revString = Encoding.UTF8.GetString(bytes);
                                    UI.UI2.PersonalCenter.PirDevice.Method.mqttdata = revString;
                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.controldata = revString;
                                    //ReceiveCheckGateway(ss);
                                    //return;
                                }
                                //App订阅遥控器自学按键学习成功通知
                                else if (topic == $"/user/{DB_ResidenceData.Instance.CurrentRegion.RegionID}/app/thing/event/irCodeStudyDone/up")
@@ -411,6 +413,9 @@
                                    {
                                        MainPage.Log($"读取云端设备数据失败:Code:{deviceResult.Code};  Msg:{deviceResult.message}");
                                    }
                                    HDL_ON.UI.UI2.PersonalCenter.PirDevice.Method.buttondata = revString;
                                    //ReceiveCheckGateway(ss);
                                    //return;
                                }
                                #endregion
                                //A网关设备状态-包含涂鸦设备
HDL_ON/HDL_ON.projitems
@@ -377,6 +377,8 @@
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\ControlView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\AddDevciePage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\AddFunction\DeviceListPage.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\MainView.cs" />
    <Compile Include="$(MSBuildThisFileDirectory)UI\UI2\4-PersonalCenter\PirDevice\View\HeigthChangeView.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="$(MSBuildThisFileDirectory)DAL\" />
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddButton.cs
@@ -134,11 +134,12 @@
                    if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                    {
                        Method method = new Method();
                        var mqttdate = method.MqttDate(control.sid, 25);
                        if (mqttdate !=null)
                        Method.buttondata = "";
                        var mqttdate = method.MqttDate("按键", control.sid, 25);
                        if (mqttdate != null)
                        {
                            //休眠是为显示引导界面
                           // System.Threading.Thread.Sleep(3000);
                            // System.Threading.Thread.Sleep(3000);
                            //移除添加按钮引导界面
                            replication.RemView();
                            var buttonName = control.status.Find((c) => c.value == buttonObj.value);
@@ -173,12 +174,12 @@
                            new TipPopView().FlashingBox(Language.StringByID(StringId.tianjiashibai));
                        }
                    }
                    else
                    {
                        Method method = new Method();
                        method.ErrorShow(responsePackNew);
                        method.ErrorShow(responsePackNew, "");
                    }
                });
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControl.cs
@@ -243,7 +243,6 @@
                                loading.Hide();
                                if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                                {
                                    ///这里:监听MTTP推送下来主题,才知道是否添加成功
                                    var buttonObj = control.status.Find((c) => c.value == obj.value);
                                    if (buttonObj != null)
                                    {
@@ -253,7 +252,7 @@
                                }
                                else {
                                    Method method = new Method();
                                    method.ErrorShow(responsePackNew);
                                    method.ErrorShow(responsePackNew,"");
                                }
                            });
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/AddControlComplete.cs
@@ -65,7 +65,7 @@
                TextAlignment = TextAlignment.Center,
            };
            fLayout.AddChidren(text1Btn);
            //可到分类-功能-电器操作使用
            //可到分类-功能-操作使用
            Button text2Btn = new Button
            {
                Width = Application.GetRealWidth(375 - 32),
@@ -90,13 +90,41 @@
            this.AddChidren(namePatchView.FLayoutView());
            namePatchView.btnText1.TextID = StringId.yaokongqimingcheng;
            namePatchView.btnText2.Text = control.name;
            namePatchView.btnClick.MouseUpEventHandler += (sender,e) => {
            //所属区域
            View.PatchView quyuPatchView = new View.PatchView();
            quyuPatchView.frameLayout.Y = namePatchView.frameLayout.Bottom;
            this.AddChidren(quyuPatchView.FLayoutView());
            quyuPatchView.btnText1.TextID = StringId.suoshuquyu;
            quyuPatchView.btnText2.Text=Intelligence.Automation.LogicMethod.GetGetRoomName(function);
            //继续添加
            Button addBtn = new Button
            {
                Y = quyuPatchView.frameLayout.Bottom + Application.GetRealHeight(125),
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(375 - 32),
                Height = Application.GetRealHeight(20),
                TextID = StringId.jixutianjia,
                TextSize = TextSize.text14,
                TextColor = CSS.CSS_Color.textConfirmColor,
                TextAlignment = TextAlignment.Center,
            };
            this.AddChidren(addBtn);
            //完成
            View.SaveView saveView = new View.SaveView();
            this.AddChidren(saveView.FLayoutView());
            saveView.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #endregion
            #region  界面点击事件
            //遥控器名称点击事件
            namePatchView.btnClick.MouseUpEventHandler += (sender, e) => {
                List<string> list = new List<string>();
                for (int i = 0; i < Pir.currPir.FunctioList.Count; i++)
                for (int i = 0; i < PirDevice.Pir.currPir.FunctioList.Count; i++)
                {
                    list.Add(Pir.currPir.FunctioList[i].name);
                    list.Add(PirDevice.Pir.currPir.FunctioList[i].name);
                }
                Method method = new Method();
                method.EditControlName(StringId.editName, list, control.name, (name, view) =>
@@ -127,7 +155,7 @@
                                else
                                {
                                    Method methodError = new Method();
                                    methodError.ErrorShow(responsePackNew);
                                    methodError.ErrorShow(responsePackNew, "");
                                }
                            });
@@ -139,12 +167,7 @@
                }, () => { });
            };
            //所属区域
            View.PatchView quyuPatchView = new View.PatchView();
            quyuPatchView.frameLayout.Y = namePatchView.frameLayout.Bottom;
            this.AddChidren(quyuPatchView.FLayoutView());
            quyuPatchView.btnText1.TextID = StringId.suoshuquyu;
            quyuPatchView.btnText2.Text=Intelligence.Automation.LogicMethod.GetGetRoomName(function);
            //所属区域点击事件
            quyuPatchView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                Method method = new Method();
@@ -154,31 +177,6 @@
                    quyuPatchView.btnText2.Text = Intelligence.Automation.LogicMethod.GetGetRoomName(function);
                });
            };
            //继续添加
            Button addBtn = new Button
            {
                Y = quyuPatchView.frameLayout.Bottom + Application.GetRealHeight(125),
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(375 - 32),
                Height = Application.GetRealHeight(20),
                TextID = StringId.jixutianjia,
                TextSize = TextSize.text14,
                TextColor = CSS.CSS_Color.textConfirmColor,
                TextAlignment = TextAlignment.Center,
            };
            this.AddChidren(addBtn);
            //完成
            View.SaveView saveView = new View.SaveView();
            this.AddChidren(saveView.FLayoutView());
            saveView.frameLayout.SetCornerWithSameRadius(Application.GetRealHeight(24), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight);
            #endregion
            #region  界面点击事件
            //遥控器名称点击事件
            namePatchView.btnClick.MouseUpEventHandler += (sender, e) => { };
            //所属区域点击事件
            quyuPatchView.btnClick.MouseUpEventHandler += (sender, e) => { };
            //继续添加点击事件
            addBtn.MouseUpEventHandler += (sender, e) =>
            {
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/BrandList.cs
@@ -261,7 +261,7 @@
                else
                {
                    Method method = new Method();
                    method.ErrorShow(responsePackNew);
                    method.ErrorShow(responsePackNew,"");
                }
            }, id, "品牌红外码库列表");
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/DeviceSet.cs
@@ -177,9 +177,9 @@
                if (StringId.xiugaimingzi == intValue)
                {
                    List<string> list = new List<string>();
                    for (int b = 0; b < Pir.pirDeviceList.Count; b++)
                    for (int b = 0; b < PirDevice.Pir.pirDeviceList.Count; b++)
                    {
                        list.Add(Pir.pirDeviceList[b].name);
                        list.Add(PirDevice.Pir.pirDeviceList[b].name);
                    }
                    Method methodView = new Method();
                    methodView.EditControlName(StringId.xiugaimingzi, list, pirclick.name, (name, view) =>
@@ -202,12 +202,16 @@
                    TipPopView tipPopView = new TipPopView();
                    tipPopView.TipBox(StringId.tip, text, (dialog) =>
                    {
                        Thread(dialog, (responsePackNew) =>
                        {
                            dialog.Close();
                            UIView(vv);
                        }, "删除", pirclick.deviceId, "");
                                {
                                    var pir = Pir.pirDeviceList.Find((c) => c.deviceId == pirclick.deviceId);
                                    if (pir != null)
                                    {
                                        Pir.pirDeviceList.Remove(pirclick);
                                    }
                                    dialog.Close();
                                    UIView(vv);
                                }, "删除", pirclick.deviceId, "");
                    }, () =>
                    {
                        NewSwitchView(pirclick, vv);
@@ -258,7 +262,7 @@
                        else
                        {
                            Method method = new Method();
                            method.ErrorShow(responsePackNew);
                            method.ErrorShow(responsePackNew,"");
                        }
                    });
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/EditControl.cs
@@ -84,7 +84,7 @@
                                else
                                {
                                    Method methodError = new Method(); 
                                    methodError.ErrorShow(responsePackNew);
                                    methodError.ErrorShow(responsePackNew,"");
                                }
                            });
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Method.cs
@@ -84,7 +84,8 @@
                    if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                    {
                        string sid = responsePackNew.Data.ToString();
                        mqttdate = MqttDate(sid);
                        controldata = "";
                        mqttdate = MqttDate("遥控器", sid);
                        if (mqttdate != null)
                        {
                            control.sid = sid;
@@ -180,10 +181,24 @@
                                var pirJosn = Newtonsoft.Json.JsonConvert.DeserializeObject<Pir>(str);
                                if (pirJosn != null)
                                {
                                    if (null == Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
/* 项目“HDL-ON_iOS”的未合并的更改
在此之前:
                                    if (null == Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
在此之后:
                                    if (null == list.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
*/
                                    if (null == PirDevice.Pir.pirDeviceList.Find((c) => c.deviceId == pirJosn.deviceId))
                                    {
                                        Pir.pirDeviceList.Add(pirJosn);
/* 项目“HDL-ON_iOS”的未合并的更改
在此之前:
                                        Pir.pirDeviceList.Add(pirJosn);
在此之后:
                                        list.pirDeviceList.Add(pirJosn);
*/
                                        PirDevice.Pir.pirDeviceList.Add(pirJosn);
                                    }
                                }
@@ -319,6 +334,7 @@
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// 发送命令线程
        /// </summary>
@@ -326,47 +342,159 @@
        /// <param name="action">回调函数</param>
        /// <param name="str">判断字符</param>
        /// <param name="frame">log父控件</param>
        /// <param name="dialog">log父控件</param>
        public void ThreadSend(Control control, Action<HDL_ON.DAL.Server.ResponsePackNew> action, string str, FrameLayout frame, Dialog dialog)
        public void ThreadSend(Control control, Action<ResponsePackNew> action, string str, FrameLayout frame)
        {
            //加载log
            Loading loading = new Loading();
            frame.AddChidren(loading);
            loading.Start();
            ResponsePackNew responsePackNew = null;
            new System.Threading.Thread(() =>
            {
                try
                {
                    if (str == "删除")
                    {
                        responsePackNew = PirSend.DeleteDevice(control.deviceId);
                    }
                    else if (str == "修改名称")
                    {
                        responsePackNew = PirSend.DeviceRename(control.deviceId, control.name);
                    }
                    else if (str == "删除按键") {
                       // responsePackNew = PirSend.CodeRemove(control.deviceId, control.name);
                    }
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loading.Hide();
                        if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                        {
                            action(responsePackNew);
                        }
                        else
                        {
                            Method method = new Method();
                            method.ErrorShow(responsePackNew, "");
                        }
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// MQTT主题推送下来的数据
        /// 发送命令线程
        /// </summary>
        public static string mqttdata = "";
        /// <param name="control">发送数据对象</param>
        /// <param name="action">回调函数</param>
        /// <param name="str">判断字符</param>
        /// <param name="dialog">log父控件</param>
        public void ThreadSend(Control control, Action<ResponsePackNew> action, string str,Dialog dialog)
        {
            //加载log
            Loading loading = new Loading();
            dialog.AddChidren(loading);
            ResponsePackNew responsePackNew = null;
            loading.Start();
            new System.Threading.Thread(() =>
            {
                try
                {
                    if (str == "删除")
                    {
                        responsePackNew = PirSend.DeleteDevice(control.deviceId);
                    }
                    else if (str == "修改名称")
                    {
                        responsePackNew = PirSend.DeviceRename(control.deviceId, control.name);
                    }
                    else if (str == "删除按键")
                    {
                       // responsePackNew = PirSend.CodeRemove(control.deviceId, control.name);
                    }
                }
                catch { }
                finally
                {
                    Application.RunOnMainThread(() =>
                    {
                        loading.Hide();
                        if (responsePackNew != null && responsePackNew.Code == "0" && responsePackNew.Data.ToString() != "")
                        {
                            action(responsePackNew);
                        }
                        else
                        {
                            Method method = new Method();
                            method.ErrorShow(responsePackNew, "");
                        }
                    });
                }
            })
            { IsBackground = true }.Start();
        }
        /// <summary>
        /// MQTT主题推送下来的遥控器数据
        /// </summary>
        public static string controldata = "";
        /// <summary>
        /// MQTT主题推送下来按键的数据
        /// </summary>
        public static string buttondata = "";
        /// <summary>
        /// 判断这个主题是否是添加遥控器主题
        /// </summary>
        /// <param name="text">表示不同主题数据</param>
        /// <param name="sid">唯一标识</param>
        /// <param name="timeValue">等待时间值</param>
        /// <returns></returns>
        public Cloud MqttDate(string sid, int timeValue = 10)
        public Cloud MqttDate(string text, string sid, int timeValue = 10)
        {
            Cloud cloud = null;
            var dateTime = DateTime.Now;
            while ((DateTime.Now - dateTime).TotalMilliseconds < timeValue * 1000)
            {
                if (!string.IsNullOrEmpty(mqttdata))
                string str = "";
                if (text == "遥控器")
                {
                    str = controldata;
                }
                else if (text == "按键")
                {
                    str = buttondata;
                }
                if (!string.IsNullOrEmpty(controldata))
                {
                    try
                    {
                        var cloudjson = Newtonsoft.Json.JsonConvert.DeserializeObject<Cloud>(mqttdata);
                        var cloudjson = Newtonsoft.Json.JsonConvert.DeserializeObject<Cloud>(str);
                        for (int i = 0; i < cloudjson.objects.Count; i++)
                        {
                            var objects = cloudjson.objects[i];
                            if (sid == objects.sid)
                            {
                                cloud = cloudjson;
                                mqttdata = "";
                                break;
                            }
                        }
                        if (cloud!=null)
                        if (cloud != null)
                        {
                            break;
                        }
@@ -381,44 +509,63 @@
        /// 错误码提示
        /// </summary>
        /// <param name="responsePackNew"></param>
        /// <param name="str"></param>
        public void ErrorShow(ResponsePackNew responsePackNew=null, string str = "")
        /// <param name="text">自定义错误文本</param>
        /// <param name="popValue">弹框类型(1=闪烁弹框)</param>
        public void ErrorShow(ResponsePackNew responsePackNew, string text, int popValue = 1)
        {
            if (str == "删除遥控器")
            string str = "";
            if (text == "删除遥控器")
            {
                new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.delFail));
            } else if (str == "读取红外宝列表失败") {
                new Intelligence.Automation.LogicView.TipPopView().FlashingBox("读取红外宝列表失败");
                str = Language.StringByID(StringId.delFail);
            }
            else if (text == "读取红外宝列表失败")
            {
                str = "读取红外宝列表失败"; //Language.StringByID(StringId.delFail);
            }
            else
            {
                if (responsePackNew != null)
                {
                    switch (responsePackNew.Code)
                    {
                        case "14005":
                            {
                                new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.gatewayNotOnline));
                                str = Language.StringByID(StringId.gatewayNotOnline);
                            }
                            break;
                        case "10807":
                            {
                                //红外宝下遥控器超过最大(10个)数量限制
                                new Intelligence.Automation.LogicView.TipPopView().FlashingBox("红外宝下遥控器超过最大(10个)数量限制");
                                str = "红外宝下遥控器超过最大(10个)数量限制";// Language.StringByID(StringId.gatewayNotOnline);
                            }
                            break;
                        case "2":
                            {
                                str = "系统维护中~请稍后再试~";
                            }
                            break;
                        default:
                            {
                                new Intelligence.Automation.LogicView.TipPopView().FlashingBox(Language.StringByID(StringId.saveFail));
                                str ="获取数据失败" ;// Language.StringByID(StringId.saveFail);
                            }
                            break;
                    }
                }
            }
            switch (popValue)
            {
                case 1:
                    {
                        new Intelligence.Automation.LogicView.TipPopView().FlashingBox(str);
                    }
                    break;
                case 2: { } break;
                case 3: { } break;
            }
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/Pir.cs
@@ -5,7 +5,7 @@
namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice
{
    [System.Serializable]
    public class Pir : Entity.Function
    public class Pir : Entity.Function
    {
        /// <summary>
        /// 红外宝列表
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirMain.cs
@@ -10,7 +10,6 @@
        public PirMain()
        {
            Tag = "PirMain";
        }
        /// <summary>
        /// 临时储存设备类型列表
@@ -28,117 +27,10 @@
            middFLayout.Y = Application.GetRealHeight(64);
            middFLayout.Height = Application.GetRealHeight(667 - 64);
            this.AddChidren(middFLayout);
            FrameLayout pirDeviceFLayout = new FrameLayout();
            pirDeviceFLayout.Y = Application.GetRealHeight(12);
            pirDeviceFLayout.X = Application.GetRealWidth(16);
            pirDeviceFLayout.Width = Application.GetRealWidth(343);
            pirDeviceFLayout.Height = Application.GetRealHeight(187);
            pirDeviceFLayout.BackgroundColor = CSS.CSS_Color.view;
            pirDeviceFLayout.Radius = (uint)Application.GetRealHeight(12);
            middFLayout.AddChidren(pirDeviceFLayout);
            //设备管理
            Button text1Btn = new Button
            {
                Y = Application.GetRealHeight(11),
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(120),
                Height = Application.GetRealHeight(20),
                TextSize = TextSize.text14,
                TextColor = CSS.CSS_Color.textConfirmColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextID = StringId.shebeigaunli,
                IsBold = true,
            };
            pirDeviceFLayout.AddChidren(text1Btn);
            Button pirIcon = new Button
            {
                Y = Application.GetRealHeight(47),
                X = Application.GetRealWidth(28),
                Width = Application.GetRealWidth(66),
                Height = Application.GetRealWidth(66),
                UnSelectedImagePath = "PirIcon/Infraredtreasure.png",
            };
            pirDeviceFLayout.AddChidren(pirIcon);
            //mini智能遥控器
            Button text2Btn = new Button
            {
                Y = Application.GetRealHeight(70),
                X = Application.GetRealWidth(112),
                Width = Application.GetRealWidth(120),
                Height = Application.GetRealHeight(20),
                TextSize = TextSize.text14,
                TextColor = CSS.CSS_Color.textTipColor,
                TextAlignment = TextAlignment.CenterLeft,
                Text = "mini智能遥控器",
            };
            pirDeviceFLayout.AddChidren(text2Btn);
            //
            Button numberDeviceBtn = new Button
            {
                Y = Application.GetRealHeight(137),
                X = Application.GetRealWidth(32),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealHeight(20),
                TextSize = TextSize.text14,
                TextColor = CSS.CSS_Color.textColor,
                TextAlignment = TextAlignment.CenterLeft,
                Text = "1" + Language.StringByID(StringId.ge),
                IsBold = true,
            };
            pirDeviceFLayout.AddChidren(numberDeviceBtn);
            //当前红外遥控设备
            Button numberDeviceTextBtn = new Button
            {
                Y = numberDeviceBtn.Bottom + Application.GetRealHeight(4),
                X = Application.GetRealWidth(32),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealHeight(14),
                TextSize = TextSize.text10,
                TextColor = CSS.CSS_Color.textCancelColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextID = StringId.dangqianhongwaishebei,
            };
            pirDeviceFLayout.AddChidren(numberDeviceTextBtn);
            //
            Button currDeviceNumberControlBtn = new Button
            {
                Y = Application.GetRealHeight(137),
                X = Application.GetRealWidth(198),
                Width = Application.GetRealWidth(80),
                Height = Application.GetRealHeight(20),
                TextSize = TextSize.text14,
                TextColor = CSS.CSS_Color.textColor,
                TextAlignment = TextAlignment.CenterLeft,
                Text = "1" + Language.StringByID(StringId.ge),
                IsBold = true,
            };
            pirDeviceFLayout.AddChidren(currDeviceNumberControlBtn);
            //已添加遥控器
            Button currDeviceNumberControlTextBtn = new Button
            {
                Y = currDeviceNumberControlBtn.Bottom + Application.GetRealHeight(4),
                X = Application.GetRealWidth(198),
                Width = Application.GetRealWidth(80),
                Height = Application.GetRealHeight(14),
                TextSize = TextSize.text10,
                TextColor = CSS.CSS_Color.textCancelColor,
                TextAlignment = TextAlignment.CenterLeft,
                TextID = StringId.yitianjiayaokongqi,
            };
            pirDeviceFLayout.AddChidren(currDeviceNumberControlTextBtn);
            ///红外宝点击事件
            FrameLayout clickFLayout = new FrameLayout();
            pirDeviceFLayout.AddChidren(clickFLayout);
            View.MainView mainView = new View.MainView();
            mainView.Show(middFLayout);
            FrameLayout deviceListFLayout = new FrameLayout();
            deviceListFLayout.Y = pirDeviceFLayout.Bottom + Application.GetRealHeight(12);
            deviceListFLayout.Y = mainView.pirDeviceFLayout.Bottom + Application.GetRealHeight(12);
            deviceListFLayout.X = Application.GetRealWidth(16);
            deviceListFLayout.Width = Application.GetRealWidth(343);
            deviceListFLayout.Height = Application.GetRealHeight(328);
@@ -172,11 +64,6 @@
                Text = "mini智能遥控器",
            };
            deviceListFLayout.AddChidren(deviceNameBtn);
            if (Pir.pirDeviceList.Count != 0)
            {
                deviceNameBtn.Text = Pir.pirDeviceList[0].name;
                Pir.currPir = Pir.pirDeviceList[0];
            }
            //下拉图标
            var dropdownIconBtn = new Button
@@ -188,107 +75,57 @@
                UnSelectedImagePath = "PirIcon/dropdown.png",
            };
            deviceListFLayout.AddChidren(dropdownIconBtn);
            #endregion
            deviceNameBtn.MouseUpEventHandler += (sender, e) =>
            if (Pir.pirDeviceList.Count != 0)
            {
                #region 区域弹框界面
                FrameLayout fLayout = new FrameLayout
                {
                    BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                };
                this.AddChidren(fLayout);
                fLayout.MouseUpEventHandler += (sender1, e1) =>
                {
                    fLayout.RemoveFromParent();
                };
                FrameLayout iconFLyout = new FrameLayout
                {
                    X = Application.GetRealWidth(205),
                    Y = Application.GetRealHeight(314),
                    Width = Application.GetRealWidth(160),
                    Height = Application.GetRealHeight(21 + 44),
                    //BackgroundImagePath = "LogicIcon/bjicon.png",
                };
                fLayout.AddChidren(iconFLyout);
                FrameLayout textFLyout = new FrameLayout
                {
                    X = Application.GetRealWidth(8),
                    Y = Application.GetRealHeight(14),
                    Width = Application.GetRealWidth(144),
                    Height = Application.GetRealHeight(44),
                };
                VerticalScrolViewLayout vv = new VerticalScrolViewLayout
                {
                    X = Application.GetRealWidth(8),
                    Y = Application.GetRealHeight(14),
                    Width = Application.GetRealWidth(144),
                    Height = Application.GetRealHeight(44 * 4),
                };
                if (Pir.pirDeviceList.Count > 4)
                {
                    iconFLyout.Height = Application.GetRealHeight(21 + 44 * 4);
                    iconFLyout.AddChidren(vv);
                    iconFLyout.BackgroundImagePath = "PirIcon/4.png";
                }
                else
                {
                    iconFLyout.AddChidren(textFLyout);
                    iconFLyout.Height = Application.GetRealHeight(21 + 44 * Pir.pirDeviceList.Count);
                    textFLyout.Height = Application.GetRealHeight(44 * Pir.pirDeviceList.Count);
                    iconFLyout.BackgroundImagePath = $"PirIcon/{Pir.pirDeviceList.Count}.png";
                }
                #endregion
                //默认第一个红外宝
                Pir.currPir = Pir.pirDeviceList[0];
                int sum = 0;
                for (int i = 0; i < Pir.pirDeviceList.Count; i++)
                {
                    var pirJson = Pir.pirDeviceList[i];
                    View.PirNameView pirNameView = new View.PirNameView();
                    if (Pir.pirDeviceList.Count > 4)
                    {
                        vv.AddChidren(pirNameView.FLayoutView());
                    }
                    else
                    {
                        pirNameView.frameLayout.Y = Application.GetRealHeight(i * 44);
                        textFLyout.AddChidren(pirNameView.FLayoutView());
                    }
                    pirNameView.btnName.Text = pirJson.name;
                    pirNameView.btnClick.Tag = pirJson;
                    pirNameView.btnClick.MouseUpEventHandler += (sender2, e2) =>
                    {
                        fLayout.RemoveFromParent();
                        deviceNameBtn.Text = pirJson.name;
                        Pir.currPir = pirJson;
                    };
                    if (Pir.pirDeviceList.Count - 1 == i)
                    {
                        ///改变最后那条一个线的颜色,界面显示效果作用;
                        pirNameView.btnLine.BackgroundColor = CSS.CSS_Color.view;
                    }
                    //查找
                    sum += Pir.pirDeviceList[i].FunctioList.Count;
                }
            };
            clickFLayout.MouseUpEventHandler += (sender, e) =>
                deviceNameBtn.Text = Pir.pirDeviceList[0].name;
                mainView.numberDeviceBtn.Text = Pir.pirDeviceList.Count.ToString() + Language.StringByID(StringId.ge);
                mainView.currDeviceNumberControlBtn.Text = sum.ToString() + Language.StringByID(StringId.ge);
            }
            ///设备管理的点击事件
            mainView.clickBtn.MouseUpEventHandler += (sender, e) =>
            {
                DeviceSet deviceSet = new DeviceSet();
                MainPage.BasePageView.AddChidren(deviceSet);
                deviceSet.Show(() => {
                deviceSet.Show(() =>
                {
                    if (Pir.currPir != null)
                    {
                        deviceNameBtn.Text = Pir.currPir.name;
                        mainView.numberDeviceBtn.Text = Pir.pirDeviceList.Count.ToString() + Language.StringByID(StringId.ge);
                    }
                    int sum = 0;
                    for (int i = 0; i < Pir.pirDeviceList.Count; i++)
                    {
                        sum += Pir.pirDeviceList[i].FunctioList.Count;
                    }
                    mainView.currDeviceNumberControlBtn.Text = sum.ToString() + Language.StringByID(StringId.ge);
                });
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            #endregion
            ///红外名称的点击事件
            deviceNameBtn.MouseUpEventHandler += (sender, e) =>
            {
                View.HeigthChangeView heigthChangeView = new View.HeigthChangeView();
                heigthChangeView.Show(this, Pir.pirDeviceList, (pirJson) =>
                {
                    deviceNameBtn.Text = pirJson.name;
                    Pir.currPir = pirJson;
                });
            };
            int line = 0;
            for (int i = 1, j = 0; i <= 7; i++, j++)
            {
@@ -347,45 +184,60 @@
                    }
                    else
                    {
                        var strings = GetTypeString(if_value).Split('-');
                        var jobDeviceType = DeviceTypeList.Find((c) => c.deviceType == strings[0]);
                        if (jobDeviceType == null)
                        if (DeviceTypeList.Count == 0)
                        {
                            return;
                            GetDeviceTypeList(true, () =>
                             {
                                 DeviceTypeViewClick(if_value);
                             });
                        }
                        GetBrandList(jobDeviceType.id, (brandList) =>
                        else
                        {
                            var brandSupportStrList = GetBrandSupport(if_value);
                            var strList = new List<string>();
                            for (int str = 0; str < brandList.Count; str++)
                            {
                                string s = brandList[str].brandName;
                                var bool_if = brandSupportStrList.Find((c) => s.Contains(c));
                                if (bool_if != null)
                                {
                                    strList.Add(s);
                                }
                            }
                            Application.RunOnMainThread(() =>
                            {
                                BrandList brandObj = new BrandList();
                                MainPage.BasePageView.AddChidren(brandObj);
                                brandObj.Show(brandList, strList, strings[1]);
                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            });
                        });
                            DeviceTypeViewClick(if_value);
                        }
                    }
                };
            }
        }
        /// <summary>
        /// 设备进入下一级方法
        /// </summary>
        /// <param name="if_value"></param>
        private void DeviceTypeViewClick(int if_value)
        {
            var strings = GetTypeString(if_value).Split('-');
            var jobDeviceType = DeviceTypeList.Find((c) => c.deviceType == strings[0]);
            if (jobDeviceType == null)
            {
                return;
            }
            GetBrandList(jobDeviceType.id, (brandList) =>
            {
                var brandSupportStrList = GetBrandSupport(if_value);
                var strList = new List<string>();
                for (int str = 0; str < brandList.Count; str++)
                {
                    string s = brandList[str].brandName;
                    var bool_if = brandSupportStrList.Find((c) => s.Contains(c));
                    if (bool_if != null)
                    {
                        strList.Add(s);
                    }
                }
                Application.RunOnMainThread(() =>
                {
                    BrandList brandObj = new BrandList();
                    MainPage.BasePageView.AddChidren(brandObj);
                    brandObj.Show(brandList, strList, strings[1]);
                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                });
                };
            }
            GetDeviceTypeList();
            });
        }
        /// <summary>
        /// 获取品牌支持
        /// </summary>
@@ -551,7 +403,9 @@
        /// <summary>
        /// 读取红外设备类型列表
        /// </summary>
        private void GetDeviceTypeList()
        /// <param name="tag">标识要不要提示(true=提示)</param>
        /// <param name="action">回调函数</param>
        public  void GetDeviceTypeList(bool tag, Action action)
        {
            PirSend.GetDeviceTypesList(this, (responsePackNew) =>
            {
@@ -574,18 +428,22 @@
                            }
                        }
                    }
                    action();
                }
                else
                {
                    Method method = new Method();
                    method.ErrorShow(responsePackNew);
                    if (tag)
                    {
                        Method method = new Method();
                        method.ErrorShow(responsePackNew, "");
                    }
                }
            }, "", "设备类型列表");
        }
        /// <summary>
        /// 读取红外设备类型的品牌列表
        /// </summary>
        private void GetBrandList(string id, Action<List<Brand>> actionBrand)
        public  void GetBrandList(string id, Action<List<Brand>> actionBrand)
        {
            List<Brand> brandList = new List<Brand>();
            PirSend.GetDeviceTypesList(this, (responsePackNew) =>
@@ -614,7 +472,7 @@
                else
                {
                    Method method = new Method();
                    method.ErrorShow(responsePackNew);
                    method.ErrorShow(responsePackNew, "");
                }
            }, id, "品牌列表");
        }
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/PirSend.cs
@@ -247,7 +247,7 @@
                        url = "/smart-footstone/app/ir/code/list";
                        jObject.Add("brandId", id);
                    }
                    responsePackNew = RequestServerhomeId(jObject, url);
                    responsePackNew = RequestServerhomeId(jObject, url,5);
                }
                catch { }
                finally
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/HeigthChangeView.cs
New file
@@ -0,0 +1,113 @@
using System;
using Shared;
using System.Collections.Generic;
namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice.View
{
    public class HeigthChangeView
    {
        /// <summary>
        /// 背景
        /// </summary>
        FrameLayout fLayout = new FrameLayout
        {
            BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
        };
        /// <summary>
        ///
        /// </summary>
        FrameLayout iconFLyout = new FrameLayout
        {
            X = Application.GetRealWidth(205),
            Y = Application.GetRealHeight(314),
            Width = Application.GetRealWidth(160),
            Height = Application.GetRealHeight(21 + 44),
            //BackgroundImagePath = "LogicIcon/bjicon.png",
        };
        /// <summary>
        ///
        /// </summary>
        FrameLayout textFLyout = new FrameLayout
        {
            X = Application.GetRealWidth(8),
            Y = Application.GetRealHeight(14),
            Width = Application.GetRealWidth(144),
            Height = Application.GetRealHeight(44),
        };
        /// <summary>
        ///
        /// </summary>
        VerticalScrolViewLayout vv = new VerticalScrolViewLayout
        {
            X = Application.GetRealWidth(8),
            Y = Application.GetRealHeight(14),
            Width = Application.GetRealWidth(144),
            Height = Application.GetRealHeight(44 * 4),
        };
        /// <summary>
        /// View方法
        /// </summary>
        /// <param name="frame"></param>
        /// <param name="list"></param>
        /// <param name="action"></param>
        public void Show(FrameLayout frame, List<Pir> list, Action<Pir> action)
        {
            frame.AddChidren(fLayout);
            fLayout.AddChidren(iconFLyout);
            fLayout.MouseUpEventHandler += (sender1, e1) =>
            {
                fLayout.RemoveFromParent();
            };
            if (list.Count > 4)
            {
                iconFLyout.Height = Application.GetRealHeight(21 + 44 * 4);
                iconFLyout.AddChidren(vv);
                iconFLyout.BackgroundImagePath = "PirIcon/4.png";
            }
            else
            {
                iconFLyout.AddChidren(textFLyout);
                iconFLyout.Height = Application.GetRealHeight(21 + 44 * list.Count);
                textFLyout.Height = Application.GetRealHeight(44 * list.Count);
                iconFLyout.BackgroundImagePath = $"PirIcon/{list.Count}.png";
            }
            for (int i = 0; i < list.Count; i++)
            {
                var pirJson = list[i];
                View.PirNameView pirNameView = new View.PirNameView();
                if (list.Count > 4)
                {
                    vv.AddChidren(pirNameView.FLayoutView());
                }
                else
                {
                    pirNameView.frameLayout.Y = Application.GetRealHeight(i * 44);
                    textFLyout.AddChidren(pirNameView.FLayoutView());
                }
                pirNameView.btnName.Text = pirJson.name;
                pirNameView.btnClick.Tag = pirJson;
                pirNameView.btnClick.MouseUpEventHandler += (sender2, e2) =>
                {
                    var pir = pirNameView.btnClick.Tag as Pir;
                    action(pir);
                    fLayout.RemoveFromParent();
                    //deviceNameBtn.Text = pirJson.name;
                    //Pir.currPir = pirJson;
                };
                if (list.Count - 1 == i)
                {
                    ///改变最后那条一个线的颜色,界面显示效果作用;
                    pirNameView.btnLine.BackgroundColor = CSS.CSS_Color.view;
                }
            }
        }
    }
}
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/MainView.cs
New file
@@ -0,0 +1,143 @@
using System;
using HDL_ON.UI.UI2.Intelligence.Automation.LogicView;
using Shared;
namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice.View
{
    public class MainView
    {
        /// <summary>
        /// 主空间
        /// </summary>
        public FrameLayout pirDeviceFLayout = new FrameLayout
        {
            Y = Application.GetRealHeight(12),
            X = Application.GetRealWidth(16),
            Width = Application.GetRealWidth(343),
            Height = Application.GetRealHeight(187),
            BackgroundColor = CSS.CSS_Color.view,
            Radius = (uint)Application.GetRealHeight(12),
        };
        /// <summary>
        /// 设备管理
        /// </summary>
        public Button text1Btn = new Button
        {
            Y = Application.GetRealHeight(11),
            X = Application.GetRealWidth(16),
            Width = Application.GetRealWidth(120),
            Height = Application.GetRealHeight(20),
            TextSize = TextSize.text14,
            TextColor = CSS.CSS_Color.textConfirmColor,
            TextAlignment = TextAlignment.CenterLeft,
            TextID = StringId.shebeigaunli,
            IsBold = true,
        };
        /// <summary>
        /// 图标
        /// </summary>
        public Button pirIcon = new Button
        {
            Y = Application.GetRealHeight(47),
            X = Application.GetRealWidth(28),
            Width = Application.GetRealWidth(66),
            Height = Application.GetRealWidth(66),
            UnSelectedImagePath = "PirIcon/Infraredtreasure.png",
        };
        /// <summary>
        /// mini智能遥控器
        /// </summary>
        public Button text2Btn = new Button
        {
            Y = Application.GetRealHeight(70),
            X = Application.GetRealWidth(112),
            Width = Application.GetRealWidth(120),
            Height = Application.GetRealHeight(20),
            TextSize = TextSize.text14,
            TextColor = CSS.CSS_Color.textTipColor,
            TextAlignment = TextAlignment.CenterLeft,
            Text = "mini智能遥控器",
        };
        /// <summary>
        /// 红外宝数量
        /// </summary>
        public Button numberDeviceBtn = new Button
        {
            Y = Application.GetRealHeight(137),
            X = Application.GetRealWidth(32),
            Width = Application.GetRealWidth(100),
            Height = Application.GetRealHeight(20),
            TextSize = TextSize.text14,
            TextColor = CSS.CSS_Color.textColor,
            TextAlignment = TextAlignment.CenterLeft,
            Text = "1" + Language.StringByID(StringId.ge),
            IsBold = true,
        };
        /// <summary>
        /// 当前红外遥控设备
        /// </summary>
        public Button numberDeviceTextBtn = new Button
        {
            Y = Application.GetRealHeight(137 + 20) + Application.GetRealHeight(4),
            X = Application.GetRealWidth(32),
            Width = Application.GetRealWidth(100),
            Height = Application.GetRealHeight(14),
            TextSize = TextSize.text10,
            TextColor = CSS.CSS_Color.textCancelColor,
            TextAlignment = TextAlignment.CenterLeft,
            TextID = StringId.dangqianhongwaishebei,
        };
        /// <summary>
        /// 所有红外宝的遥控器数量
        /// </summary>
        public Button currDeviceNumberControlBtn = new Button
        {
            Y = Application.GetRealHeight(137),
            X = Application.GetRealWidth(198),
            Width = Application.GetRealWidth(80),
            Height = Application.GetRealHeight(20),
            TextSize = TextSize.text14,
            TextColor = CSS.CSS_Color.textColor,
            TextAlignment = TextAlignment.CenterLeft,
            Text = "1" + Language.StringByID(StringId.ge),
            IsBold = true,
        };
        /// <summary>
        /// 已添加遥控器
        /// </summary>
        public Button currDeviceNumberControlTextBtn = new Button
        {
            Y = Application.GetRealHeight(137 + 20) + Application.GetRealHeight(4),
            X = Application.GetRealWidth(198),
            Width = Application.GetRealWidth(80),
            Height = Application.GetRealHeight(14),
            TextSize = TextSize.text10,
            TextColor = CSS.CSS_Color.textCancelColor,
            TextAlignment = TextAlignment.CenterLeft,
            TextID = StringId.yitianjiayaokongqi,
        };
        ///红外宝点击事件
        public Button clickBtn = new Button();
        public void Show(FrameLayout middFLayout)
        {
            middFLayout.AddChidren(pirDeviceFLayout);
            pirDeviceFLayout.AddChidren(text1Btn);
            pirDeviceFLayout.AddChidren(pirIcon);
            pirDeviceFLayout.AddChidren(text2Btn);
            pirDeviceFLayout.AddChidren(numberDeviceBtn);
            pirDeviceFLayout.AddChidren(numberDeviceTextBtn);
            pirDeviceFLayout.AddChidren(currDeviceNumberControlBtn);
            pirDeviceFLayout.AddChidren(currDeviceNumberControlTextBtn);
            pirDeviceFLayout.AddChidren(clickBtn);
        }
    }
}