xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/4-PersonalCenter/PirDevice/View/Buttons.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using HDL_ON.Entity;
using HDL_ON.UI.UI2.Intelligence.Automation.LogicView;
using Shared;
namespace HDL_ON.UI.UI2.PersonalCenter.PirDevice.View
@@ -13,7 +14,7 @@
        /// <param name="buttonList">数据列表</param>
        /// <param name="action">回调</param>
        /// <param name="line">表示多少行</param>
        /// <param name="line">表示一行加载多少个按钮</param>
        /// <param name="sum">表示一行加载多少个按钮</param>
        public void AddButton(FrameLayout buttonFLayout, List<string> buttonList, Action<string> action, int line = 7, int sum = 3)
        {
            VerticalScrolViewLayout vv = new VerticalScrolViewLayout();
@@ -59,6 +60,282 @@
        }
        /// <summary>
        /// 动态加载按钮列表
        /// </summary>
        /// <param name="vv">父控件</param>
        /// <param name="list">数据列表</param>
        /// <param name="action">回调</param>
        /// <param name="if_bool">表示是否显示删除图标</param>
        public void AddButton2(VerticalScrolViewLayout vv, List<Entity.AttributesStatus> list, Action<Entity.AttributesStatus> action, bool if_bool)
        {
            //定义一个变量记录行数
            int sum = 0;
            if (list.Count % 3 == 0)
            {
                sum = list.Count / 3;
            }
            else
            {
                sum = list.Count / 3 + 1;
            }
            //计算加载出来的数据需要的高度
            int h = 16 + sum * (16 + 44) + 104 + 76;
            int line = 0;
            //按钮的父控件
            var FLayout = new FrameLayout
            {
                Height = Application.GetRealWidth(h),
            };
            vv.AddChidren(FLayout);
            for (int i = 1, j = 0; i <= list.Count; i++, j++)
            {
                var nameObj = list[i - 1];
                //按钮
                var buttonNameBtn = new Button
                {
                    Y = Application.GetRealHeight(16 + line * (16 + 44)),
                    X = Application.GetRealWidth(16 + (16 + 104) * j),
                    Width = Application.GetRealWidth(104),
                    Height = Application.GetRealHeight(44),
                    Text = nameObj.value,
                    TextSize = TextSize.text16,
                    TextColor = CSS.CSS_Color.textColor,
                    TextAlignment = TextAlignment.Center,
                    Radius = (uint)Application.GetRealHeight(18),
                    BorderWidth = 1,
                    BorderColor = CSS.CSS_Color.textCancelColor,
                };
                FLayout.AddChidren(buttonNameBtn);
                //删除图标
                var delIconBtn = new Button
                {
                    UnSelectedImagePath = "PirIcon/delbuton.png",
                    Y = Application.GetRealHeight(12 + line * (16 + 44)),
                    X = Application.GetRealWidth((16 + 92) + (104 + 16) * j),
                    Width = Application.GetRealWidth(16),
                    Height = Application.GetRealWidth(16),
                    Tag = nameObj,
                };
                if (if_bool)
                {
                    FLayout.AddChidren(delIconBtn);
                }
                //删除图标的点击事件
                delIconBtn.MouseUpEventHandler += (sender, e) =>
                {
                    var obj = delIconBtn.Tag as Entity.AttributesStatus;
                    action(obj);
                };
                if (i % 3 == 0)
                {
                    //满一行重置j=0值;
                    j = -1;
                    line += 1;
                }
            }
        }
        /// <summary>
        /// 动态加载按钮列表
        /// </summary>
        /// <param name="FLayout">父控件</param>
        /// <param name="action">回调</param>
        /// <param name="sum">多少个FrameLayout控件</param>
        public void AddFrameLayout(FrameLayout FLayout, Action<int,FrameLayout> action, int sum)
        {
            FrameLayout viewFLayout = new FrameLayout
            {
                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
            };
            FLayout.AddChidren(viewFLayout);
            FrameLayout controlFl = new FrameLayout();
            controlFl.Y = Application.GetRealHeight(319);
            controlFl.X = Application.GetRealWidth(16);
            controlFl.Width = Application.GetRealWidth(343);
            controlFl.Height = Application.GetRealHeight(328);
            controlFl.BackgroundColor = CSS.CSS_Color.view;
            controlFl.Radius = (uint)Application.GetRealHeight(12);
            viewFLayout.AddChidren(controlFl);
            ///添加遥控器
            Button text3Btn = new Button
            {
                Y = Application.GetRealHeight(12),
                X = Application.GetRealWidth(16),
                Width = Application.GetRealWidth(343 - 16 * 2),
                Height = Application.GetRealHeight(20),
                TextSize = TextSize.text14,
                TextColor = CSS.CSS_Color.textConfirmColor,
                TextAlignment = TextAlignment.Center,
                TextID = StringId.tianjiayaokongqi,
                IsBold = true,
            };
            controlFl.AddChidren(text3Btn);
            viewFLayout.MouseUpEventHandler += (sender1, e1) =>
            {
                //关闭允许左滑
                MainPage.BasePageView.ScrollEnabled = true;
                viewFLayout.RemoveFromParent();
            };
            int line = 0;
            for (int i = 1, j = 0; i <= sum; i++, j++)
            {
                var currpirdeviceFLayout = new FrameLayout
                {
                    Width = Application.GetRealWidth(80),
                    Height = Application.GetRealWidth(80),
                    X = Application.GetRealWidth(26 + (80 + 25) * j),
                    Y = Application.GetRealHeight(52 + (80 + 12) * line),
                };
                controlFl.AddChidren(currpirdeviceFLayout);
                var deviceIconBtn = new Button
                {
                    Y = Application.GetRealHeight(8),
                    X = Application.GetRealWidth(20),
                    Width = Application.GetRealWidth(40),
                    Height = Application.GetRealWidth(40),
                    UnSelectedImagePath = "PirIcon/Infraredtreasure.png",
                };
                currpirdeviceFLayout.AddChidren(deviceIconBtn);
                var iconNameBtn = new Button
                {
                    Y = deviceIconBtn.Bottom + Application.GetRealHeight(8),
                    Width = Application.GetRealWidth(80),
                    Height = Application.GetRealHeight(17),
                    TextSize = TextSize.text12,
                    TextColor = CSS.CSS_Color.TextualColor,
                    TextAlignment = TextAlignment.Center,
                };
                currpirdeviceFLayout.AddChidren(iconNameBtn);
                var clickBtn = new Button { Tag = i };
                currpirdeviceFLayout.AddChidren(clickBtn);
                if (i % 3 == 0)
                {
                    //满一行重置j=0值;
                    j = -1;
                    line += 1;
                }
                GetIconAndText(i, deviceIconBtn, iconNameBtn);
                clickBtn.MouseUpEventHandler += (sender2, e2) =>
                {
                    //1=空调;2=电视;3=风扇;4=机顶盒;5=DVD/EVD/VCD;6=投影仪;7=自定义;
                    int if_value = int.Parse(clickBtn.Tag.ToString());
                    action(if_value, viewFLayout);
                };
            }
        }
        /// <summary>
        /// 设置图片和备注
        /// </summary>
        /// <param name="index">索引值</param>
        /// <param name="deviceIconBtn">图标Btn</param>
        /// <param name="deviceNameBtn">设备备注Btn</param>
        private void GetIconAndText(int index, Button deviceIconBtn, Button deviceNameBtn)
        {
            string iconPath = "";
            int deviceNameIndex = 0;
            switch (index)
            {
                case 1:
                    {
                        iconPath = "PirIcon/air.png";
                        deviceNameIndex = StringId.kongtiao;
                    }
                    break;
                case 2:
                    {
                        iconPath = "PirIcon/tv.png";
                        deviceNameIndex = StringId.dianshi;
                    }
                    break;
                case 3:
                    {
                        iconPath = "PirIcon/fan.png";
                        deviceNameIndex = StringId.fengshan;
                    }
                    break;
                case 4:
                    {
                        iconPath = "PirIcon/stb.png";
                        deviceNameIndex = StringId.jidinghe;
                    }
                    break;
                case 5:
                    {
                        iconPath = "PirIcon/projector.png";
                        deviceNameIndex = StringId.touyingyi;
                    }
                    break;
                case 6:
                    {
                        iconPath = "PirIcon/dvd.png";
                        deviceNameIndex = StringId.dvd;
                    }
                    break;
                case 7:
                    {
                        iconPath = "PirIcon/custom.png";
                        deviceNameIndex = StringId.zidingyi;
                    }
                    break;
            }
            deviceIconBtn.UnSelectedImagePath = iconPath;
            deviceNameBtn.TextID = deviceNameIndex;
        }
        /// <summary>
        /// 获取设备类型str
        /// </summary>
        /// <param name="index">索引值</param>
        public static string GetTypeString(int index)
        {
            string type = "";
            switch (index)
            {
                case 1:
                    {
                        //空调
                        type = "ac-" + SPK.AcIr;
                    }
                    break;
                case 2:
                    {
                        //电视
                        type = "tv-" + SPK.TvIr;
                    }
                    break;
                case 3:
                    {
                        //风扇
                        type = "fan-" + SPK.FanIr;
                    }
                    break;
                case 4:
                    {
                        //机顶盒
                        type = "set_top_box-" + SPK.StbIr;
                    }
                    break;
                case 5:
                    {
                        //投影仪
                        type = "projector-" + SPK.PjtIr;
                    }
                    break;
                case 6:
                    {
                        //影碟机
                        type = "dvd-" + SPK.DvDIr;
                    }
                    break;
            }
            return type;
        }
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="tag">标记值</param>