xm
2020-07-10 acb2b278663952ce555b06a2e821f359225f15e0
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelBackLighWithSensorForm.cs
New file
@@ -0,0 +1,819 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DevicePanel
{
    public class PanelBackLighWithSensorForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 列表控件
        /// </summary>
        private VerticalScrolViewLayout listview = null;
        /// <summary>
        /// 面板的回路
        /// </summary>
        private Panel panelDevice = null;
        /// <summary>
        /// 亮度调节的信息
        /// </summary>
        private Panel.PanelSwitchLevelInfo linghtLevelInfo = null;
        /// <summary>
        /// 亮度调节的信息
        /// </summary>
        private Panel.PanelProximitySensorInfo proximitySensorsInfo = null;
        /// <summary>
        /// 节能模式
        /// </summary>
        private Panel.PanelSaveEnergyModeInfo energyModeInfo = null;
        /// <summary>
        /// 按键的颜色数据
        /// </summary>
        private Panel.KeyColorData keyColorData = null;
        /// <summary>
        /// 选择睡眠时间的事件 value:索引(从0开始)  文本信息请用Text获取
        /// </summary>
        public Action<int> timeAction = null;
        /// <summary>
        /// 当前选择的功能类型索引
        /// </summary>
        private int nowSelectNo = 0;
        /// <summary>
        /// /// <summary>
        /// 睡眠时间的值
        /// </summary>
        /// </summary>
        public string sleepTimeText
        {
            get { return btnSleepTime.Text; }
            set { btnSleepTime.Text = value; }
        }
        /// <summary>
        ///睡眠时间
        /// </summary>
        public NormalViewControl btnSleepTime = null;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_listdevice">面板设备的全部回路</param>
        public void ShowForm(Panel i_panel)
        {
            this.ScrollEnabled = false;
            this.panelDevice = i_panel;
            //设置标题信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uBackLight));
            HdlThreadLogic.Current.RunThread(() =>
            {
                //初始化中部控件
                this.InitMiddleFrame();
            });
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private async void InitMiddleFrame()
        {
            //获取设备初始数据
            var result = await this.GetDeviceDefultData();
            if (result == false)
            {
                return;
            }
            //清空bodyFrame
            this.ClearBodyFrame();
            HdlThreadLogic.Current.RunMain(() =>
            {
                listview = new VerticalScrolViewLayout();
                listview.Height = Application.GetRealHeight(1981 - 184);
                bodyFrameLayout.AddChidren(listview);
                //添加节能模式
                this.AddEnergyConservationRow();
                //添加点击前,亮度进度条
                this.AddBeforeClickProgress();
                //添加点击后,亮度进度条
                this.AddAfterClickProgress();
                this.FinishInitControl(listview, energyModeInfo.enable);
                //保存
                var btnSave = new BottomClickButton();
                btnSave.TextID = R.MyInternationalizationString.uSave;
                bodyFrameLayout.AddChidren(btnSave);
                btnSave.ButtonClickEvent += (sender, e) =>
                {
                    //保存面板数据
                    this.SavePanelData();
                };
            });
        }
        #endregion
        #region ■ 节能模式行_________________________
        /// <summary>
        ///  添加节能模式行
        /// </summary>
        /// <param name="frameLinght">各种背光灯的容器(控件伸缩使用)</param>
        private void AddEnergyConservationRow()
        {
            //缩小:170  扩大:614
            var frameBack = new FrameRowControl();
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.UseClickStatu = false;
            frameBack.Height = Application.GetRealHeight(170);
            listview.AddChidren(frameBack);
            //节能模式
            frameBack.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uEnergyConservationMode), 400);
            //开关控件
            var btnSwitch = frameBack.AddMostRightSwitchIcon();
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                energyModeInfo.enable = btnSwitch.IsSelected;
                //展开或者缩小的高度
                var value = Application.GetRealHeight(614);
                if (btnSwitch.IsSelected == true)
                {
                    frameBack.Height += value;
                }
                else
                {
                    frameBack.Height -= value;
                }
                //容器补充
                this.FinishInitControl(listview, energyModeInfo.enable);
            };
            if (energyModeInfo.enable == true)
            {
                btnSwitch.IsSelected = true;
            }
            //当前亮度
            var btnProgressView1 = new NormalViewControl(200, 49, true);
            btnProgressView1.X = ControlCommonResourse.XXLeft;
            btnProgressView1.Y = Application.GetRealHeight(164);
            btnProgressView1.TextSize = 12;
            btnProgressView1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgressView1.TextID = R.MyInternationalizationString.uNowLuminance;
            frameBack.AddChidren(btnProgressView1);
            var btnProgress1 = new NormalViewControl(200, 49, true);
            btnProgress1.X = Application.GetRealWidth(222);
            btnProgress1.Y = Application.GetRealHeight(164);
            btnProgress1.TextSize = 12;
            btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgress1.Text = energyModeInfo.level + "%";
            frameBack.AddChidren(btnProgress1);
            //进度条
            var seekBar1 = new SeekBarControl();
            seekBar1.Y = Application.GetRealHeight(253);
            seekBar1.ProgressBarColor = 0xff3e99f4;
            frameBack.AddChidren(seekBar1);
            seekBar1.ProgressChangedEvent += (div, value) =>
            {
                btnProgress1.Text = value + "%";
                //数据变更
                energyModeInfo.level = value;
            };
            seekBar1.Progress = energyModeInfo.level;
            var btnTemp1 = new NormalViewControl(200, 49, true);
            btnTemp1.X = ControlCommonResourse.XXLeft;
            btnTemp1.Y = Application.GetRealHeight(325);
            btnTemp1.TextSize = 12;
            btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp1.Text = "0%";
            frameBack.AddChidren(btnTemp1);
            var btnTemp2 = new NormalViewControl(200, 49, true);
            btnTemp2.X = listview.Width - Application.GetRealWidth(200 + 49);
            btnTemp2.Y = Application.GetRealHeight(325);
            btnTemp2.TextAlignment = TextAlignment.CenterRight;
            btnTemp2.TextSize = 12;
            btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp2.Text = "100%";
            frameBack.AddChidren(btnTemp2);
            if (energyModeInfo.enable == true)
            {
                //展开或者缩小的高度
                var value = Application.GetRealHeight(614);
                frameBack.Height += value;
            }
            //添加接近感应
            this.AddProximitySensorsRow(frameBack);
            //底线
            var btnLine = new NormalViewControl(965, 5, true);
            btnLine.Height = 1;
            btnLine.X = Application.GetRealWidth(52);
            btnLine.Y = Application.GetRealHeight(484 + 127);
            btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
            frameBack.AddChidren(btnLine);
            //添加睡眠时间
            this.AddSleepTimeRow(frameBack);
        }
        #endregion
        #region ■ 接近感应___________________________
        /// <summary>
        /// 接近感应行
        /// </summary>
        private void AddProximitySensorsRow(FrameRowControl frameRowControl)
        {
            //接近感应行
            var frameBack = new FrameRowControl();
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.UseClickStatu = false;
            frameBack.Y = Application.GetRealHeight(443);
            frameBack.Height = Application.GetRealHeight(170);
            frameRowControl.AddChidren(frameBack);
            //接近感应
            frameBack.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.ProximitySensors), 400);
            //开关控件
            var btnSwitch = frameBack.AddMostRightSwitchIcon();
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                proximitySensorsInfo.enable = btnSwitch.IsSelected;
            };
            if (proximitySensorsInfo.enable == true)
            {
                btnSwitch.IsSelected = true;
            }
        }
        #endregion
        #region ■ 睡眠时间___________________________
        /// <summary>
        /// 睡眠时间行
        /// </summary>
        private void AddSleepTimeRow(FrameRowControl frameRowControl)
        {
            //睡眠时间行
            var frameBack = new FrameRowControl();
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.UseClickStatu = false;
            frameBack.Y = Application.GetRealHeight(784 - 170);
            frameBack.Height = Application.GetRealHeight(170);
            frameRowControl.AddChidren(frameBack);
            //睡眠时间
            frameBack.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.SleepTime), 400);
            //右箭头
            frameBack.AddRightArrow();
            btnSleepTime = new NormalViewControl(700, true);
            switch (energyModeInfo.time)
            {
                case 15:
                    btnSleepTime.Text = "15s";
                    nowSelectNo = 0;
                    break;
                case 60:
                    btnSleepTime.Text = "1min";
                    nowSelectNo = 1;
                    break;
                case 300:
                    btnSleepTime.Text = "5min";
                    nowSelectNo = 2;
                    break;
            }
            frameBack.AddMostRightView(this.sleepTimeText, 700);
            timeAction = null;
            timeAction += (nowSelectNo) =>
            {
                switch (nowSelectNo)
                {
                    case 0:
                        energyModeInfo.time = 15;
                        break;
                    case 1:
                        energyModeInfo.time = 60;
                        break;
                    case 2:
                        energyModeInfo.time = 300;
                        break;
                }
                AddSleepTimeRow(frameRowControl);
            };
            frameBack.ButtonClickEvent += (sender, e) =>
            {
                this.ShowSelectDeviceSleepTimeListForm();
            };
        }
        #endregion
        #region ■ 显示选择设备睡眠时间_______________
        /// <summary>
        /// 显示选择设备睡眠时间的界面
        /// </summary>
        public void ShowSelectDeviceSleepTimeListForm()
        {
            //显示列表
            var listText = new List<string>();
            listText.Add("15s");
            listText.Add("1min");
            listText.Add("5min");
            //标题:选择功能类型
            var title = Language.StringByID(R.MyInternationalizationString.SleepTime);
            var form = new BottomItemSelectForm();
            form.CancelCallEvent = false;//允许取消
            form.AddForm(title, listText, nowSelectNo);
            form.FinishSelectEvent += (selectNo) =>
            {
                if (selectNo == nowSelectNo)
                {
                    //选择的是相同的
                    return;
                }
                //-1:选择取消
                this.sleepTimeText = selectNo == -1 ? string.Empty : listText[selectNo];
                nowSelectNo = selectNo;
                //调用回调函数
                this.timeAction?.Invoke(nowSelectNo);
            };
        }
        #endregion
        #region ■ 点击前_____________________________
        /// <summary>
        ///  添加点击前的背光灯进度条
        /// </summary>
        /// <param name="frameLinght">各种背光灯的容器</param>
        private void AddBeforeClickProgress()
        {
            //点击前
            var btnClick = new NormalViewControl(600, 107, true);
            btnClick.X = ControlCommonResourse.XXLeft;
            btnClick.TextSize = 12;
            btnClick.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnClick.TextID = R.MyInternationalizationString.uBeforeClick;
            listview.AddChidren(btnClick);
            //背景
            var frameBack = new FrameLayout();
            frameBack.Y = Application.GetRealHeight(107);
            frameBack.Height = Application.GetRealHeight(395);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            listview.AddChidren(frameBack);
            //当前亮度
            var btnProgressView1 = new NormalViewControl(200, 49, true);
            btnProgressView1.X = ControlCommonResourse.XXLeft;
            btnProgressView1.Y = Application.GetRealHeight(52);
            btnProgressView1.TextSize = 12;
            btnProgressView1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgressView1.TextID = R.MyInternationalizationString.uNowLuminance;
            frameBack.AddChidren(btnProgressView1);
            var btnProgress1 = new NormalViewControl(200, 49, true);
            btnProgress1.X = Application.GetRealWidth(222);
            btnProgress1.Y = Application.GetRealHeight(52);
            btnProgress1.TextSize = 12;
            btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgress1.Text = linghtLevelInfo.panelBacklightLevel + "%";
            frameBack.AddChidren(btnProgress1);
            //进度条
            var seekBar1 = new SeekBarControl();
            seekBar1.Y = Application.GetRealHeight(147);
            frameBack.AddChidren(seekBar1);
            seekBar1.ProgressChangedEvent += (div, value) =>
            {
                btnProgress1.Text = value + "%";
                //数据变更
                linghtLevelInfo.panelBacklightLevel = value;
            };
            seekBar1.Progress = linghtLevelInfo.panelBacklightLevel;
            var btnTemp1 = new NormalViewControl(200, 49, true);
            btnTemp1.X = ControlCommonResourse.XXLeft;
            btnTemp1.Y = Application.GetRealHeight(216);
            btnTemp1.TextSize = 12;
            btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp1.Text = "0%";
            frameBack.AddChidren(btnTemp1);
            var btnTemp2 = new NormalViewControl(200, 49, true);
            btnTemp2.X = listview.Width - Application.GetRealWidth(200 + 49);
            btnTemp2.Y = Application.GetRealHeight(216);
            btnTemp2.TextAlignment = TextAlignment.CenterRight;
            btnTemp2.TextSize = 12;
            btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp2.Text = "100%";
            frameBack.AddChidren(btnTemp2);
            var frameColor = new FrameLayoutStatuControl();
            frameColor.UseClickStatu = false;
            frameColor.Width = Application.GetRealHeight(262);
            frameColor.Height = this.GetPictrueRealSize(79);
            frameColor.Y = Application.GetRealHeight(26);
            frameColor.X = listview.Width - ControlCommonResourse.XXLeft - Application.GetRealHeight(262);
            frameBack.AddChidren(frameColor);
            //颜色
            var btnColorView = new NormalViewControl(Application.GetRealHeight(110), this.GetPictrueRealSize(49), false);
            btnColorView.Gravity = Gravity.CenterVertical;
            btnColorView.TextAlignment = TextAlignment.CenterRight;
            btnColorView.TextSize = 12;
            btnColorView.Y = Application.GetRealHeight(5);
            btnColorView.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnColorView.TextID = R.MyInternationalizationString.uColor;
            frameColor.AddChidren(btnColorView, ChidrenBindMode.BindEvent);
            int R1 = Convert.ToInt32(this.keyColorData.CloseColorR, 16);
            int G1 = Convert.ToInt32(this.keyColorData.CloseColorG, 16);
            int B1 = Convert.ToInt32(this.keyColorData.CloseColorB, 16);
            uint backColor = this.GetColorByRGB((byte)R1, (byte)G1, (byte)B1);
            //颜色外框
            var btnColorLine = new FrameLayoutStatuControl();
            btnColorLine.Width = Application.GetRealHeight(79);
            btnColorLine.Height = this.GetPictrueRealSize(79);
            btnColorLine.X = btnColorView.Right + Application.GetRealHeight(18);
            btnColorLine.Radius = (uint)this.GetPictrueRealSize(79) / 2;
            btnColorLine.BorderWidth = 1;
            btnColorLine.BorderColor = 0xffcccccc;
            frameColor.AddChidren(btnColorLine, ChidrenBindMode.BindEvent);
            var btnColor = new NormalViewControl(this.GetPictrueRealSize(69), this.GetPictrueRealSize(69), false);
            btnColor.Gravity = Gravity.Center;
            btnColor.Radius = (uint)this.GetPictrueRealSize(69) / 2;
            btnColor.BackgroundColor = backColor;
            btnColorLine.AddChidren(btnColor, ChidrenBindMode.BindEvent);
            //变更滑动条的颜色
            seekBar1.ProgressBarColor = backColor;
            var btnRight = new NormalViewControl(this.GetPictrueRealSize(58), this.GetPictrueRealSize(58), false);
            btnRight.UnSelectedImagePath = "Item/RightNext.png";
            btnRight.Y = Application.GetRealHeight(5);
            btnRight.X = frameColor.Width - this.GetPictrueRealSize(58);
            frameColor.AddChidren(btnRight, ChidrenBindMode.BindEvent);
            btnRight.Y += this.GetPictrueRealSize(8);
            frameColor.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnColorView.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnColor.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnColorLine.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnRight.ButtonClickEvent += (sender, e) =>
            {
                PanelColor(btnColor, seekBar1, R1, G1, B1);
            };
        }
        /// <summary>
        /// PanelColorBefore
        /// </summary>
        private void PanelColor(NormalViewControl btnColor, SeekBarControl seekBar1, int R1, int G1, int B1)
        {
            var form = new PanelColorSelectForm();
            form.AddForm(R1, G1, B1);
            form.FinishSelectColorEvent += (Rcolor, Gcolor, Bcolor) =>
            {
                R1 = Rcolor;
                G1 = Gcolor;
                B1 = Bcolor;
                this.keyColorData.CloseColorR = Convert.ToString(Rcolor, 16);
                this.keyColorData.CloseColorG = Convert.ToString(Gcolor, 16);
                this.keyColorData.CloseColorB = Convert.ToString(Bcolor, 16);
                btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
                //变更滑动条的颜色
                seekBar1.ProgressBarColor = btnColor.BackgroundColor;
            };
        }
        #endregion
        #region ■ 点击后_____________________________
        /// <summary>
        /// 添加点击后的背光灯进度条
        /// </summary>
        /// <param name="frameLinght">各种背光灯的容器</param>
        private void AddAfterClickProgress()
        {
            //点击后
            var btnClick = new NormalViewControl(600, 107, true);
            btnClick.X = ControlCommonResourse.XXLeft;
            btnClick.TextSize = 12;
            btnClick.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnClick.TextID = R.MyInternationalizationString.uAfterClick;
            listview.AddChidren(btnClick);
            //背景
            var frameBack = new FrameLayout();
            frameBack.Y = Application.GetRealHeight(608);
            frameBack.Height = Application.GetRealHeight(395);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            listview.AddChidren(frameBack);
            //当前亮度
            var btnProgressView1 = new NormalViewControl(200, 49, true);
            btnProgressView1.X = ControlCommonResourse.XXLeft;
            btnProgressView1.Y = Application.GetRealHeight(52);
            btnProgressView1.TextSize = 12;
            btnProgressView1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgressView1.TextID = R.MyInternationalizationString.uNowLuminance;
            frameBack.AddChidren(btnProgressView1);
            var btnProgress1 = new NormalViewControl(200, 49, true);
            btnProgress1.X = Application.GetRealWidth(222);
            btnProgress1.Y = Application.GetRealHeight(52);
            btnProgress1.TextSize = 12;
            btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgress1.Text = linghtLevelInfo.panelDirectionsLevel + "%";
            frameBack.AddChidren(btnProgress1);
            //进度条
            var seekBar1 = new SeekBarControl();
            seekBar1.Y = Application.GetRealHeight(147);
            frameBack.AddChidren(seekBar1);
            seekBar1.ProgressChangedEvent += (div, value) =>
            {
                btnProgress1.Text = value + "%";
                //数据变更
                linghtLevelInfo.panelDirectionsLevel = value;
            };
            seekBar1.Progress = linghtLevelInfo.panelDirectionsLevel;
            var btnTemp1 = new NormalViewControl(200, 49, true);
            btnTemp1.X = ControlCommonResourse.XXLeft;
            btnTemp1.Y = Application.GetRealHeight(216);
            btnTemp1.TextSize = 12;
            btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp1.Text = "0%";
            frameBack.AddChidren(btnTemp1);
            var btnTemp2 = new NormalViewControl(200, 49, true);
            btnTemp2.X = listview.Width - Application.GetRealWidth(200 + 49);
            btnTemp2.Y = Application.GetRealHeight(216);
            btnTemp2.TextAlignment = TextAlignment.CenterRight;
            btnTemp2.TextSize = 12;
            btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp2.Text = "100%";
            frameBack.AddChidren(btnTemp2);
            var frameColor = new FrameLayoutStatuControl();
            frameColor.UseClickStatu = false;
            frameColor.Width = Application.GetRealHeight(262);
            frameColor.Height = this.GetPictrueRealSize(79);
            frameColor.Y = Application.GetRealHeight(26);
            frameColor.X = listview.Width - ControlCommonResourse.XXLeft - Application.GetRealHeight(262);
            frameBack.AddChidren(frameColor);
            //颜色
            var btnColorView = new NormalViewControl(Application.GetRealHeight(110), this.GetPictrueRealSize(49), false);
            btnColorView.Gravity = Gravity.CenterVertical;
            btnColorView.TextAlignment = TextAlignment.CenterRight;
            btnColorView.TextSize = 12;
            btnColorView.Y = Application.GetRealHeight(5);
            btnColorView.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnColorView.TextID = R.MyInternationalizationString.uColor;
            frameColor.AddChidren(btnColorView, ChidrenBindMode.BindEvent);
            int R1 = Convert.ToInt32(this.keyColorData.OpenColorR, 16);
            int G1 = Convert.ToInt32(this.keyColorData.OpenColorG, 16);
            int B1 = Convert.ToInt32(this.keyColorData.OpenColorB, 16);
            uint backColor = this.GetColorByRGB((byte)R1, (byte)G1, (byte)B1);
            //颜色外框
            var btnColorLine = new FrameLayoutStatuControl();
            btnColorLine.Width = Application.GetRealHeight(79);
            btnColorLine.Height = this.GetPictrueRealSize(79);
            btnColorLine.X = btnColorView.Right + Application.GetRealHeight(18);
            btnColorLine.Radius = (uint)this.GetPictrueRealSize(79) / 2;
            btnColorLine.BorderWidth = 1;
            btnColorLine.BorderColor = 0xffcccccc;
            frameColor.AddChidren(btnColorLine, ChidrenBindMode.BindEvent);
            var btnColor = new NormalViewControl(this.GetPictrueRealSize(69), this.GetPictrueRealSize(69), false);
            btnColor.Gravity = Gravity.Center;
            btnColor.Radius = (uint)this.GetPictrueRealSize(69) / 2;
            btnColor.BackgroundColor = backColor;
            btnColorLine.AddChidren(btnColor, ChidrenBindMode.BindEvent);
            //变更滑动条的颜色
            seekBar1.ProgressBarColor = backColor;
            var btnRight = new NormalViewControl(this.GetPictrueRealSize(58), this.GetPictrueRealSize(58), false);
            btnRight.UnSelectedImagePath = "Item/RightNext.png";
            btnRight.Y = Application.GetRealHeight(5);
            btnRight.X = frameColor.Width - this.GetPictrueRealSize(58);
            frameColor.AddChidren(btnRight, ChidrenBindMode.BindEvent);
            btnRight.Y += this.GetPictrueRealSize(8);
            frameColor.ButtonClickEvent += (sender, e) =>
            {
                PanelAfterColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnColorView.ButtonClickEvent += (sender, e) =>
            {
                PanelAfterColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnColor.ButtonClickEvent += (sender, e) =>
            {
                PanelAfterColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnColorLine.ButtonClickEvent += (sender, e) =>
            {
                PanelAfterColor(btnColor, seekBar1, R1, G1, B1);
            };
            btnRight.ButtonClickEvent += (sender, e) =>
            {
                PanelAfterColor(btnColor, seekBar1, R1, G1, B1);
            };
        }
        /// <summary>
        /// PanelColorBefore
        /// </summary>
        private void PanelAfterColor(NormalViewControl btnColor, SeekBarControl seekBar1, int R1, int G1, int B1)
        {
            var form = new PanelColorSelectForm();
            form.AddForm(R1, G1, B1);
            form.FinishSelectColorEvent += (Rcolor, Gcolor, Bcolor) =>
            {
                R1 = Rcolor;
                G1 = Gcolor;
                B1 = Bcolor;
                this.keyColorData.OpenColorR = Convert.ToString(Rcolor, 16);
                this.keyColorData.OpenColorG = Convert.ToString(Gcolor, 16);
                this.keyColorData.OpenColorB = Convert.ToString(Bcolor, 16);
                btnColor.BackgroundColor = this.GetColorByRGB((byte)Rcolor, (byte)Gcolor, (byte)Bcolor);
                //变更滑动条的颜色
                seekBar1.ProgressBarColor = btnColor.BackgroundColor;
            };
        }
        #endregion
        #region ■ 获取初始数据_______________________
        /// <summary>
        /// 获取设备初始数据
        /// </summary>
        /// <returns></returns>
        private async Task<bool> GetDeviceDefultData()
        {
            //开启进度条
            this.ShowProgressBar();
            //亮度调节(他们说随便拿一路回路就行了)
            linghtLevelInfo = HdlDevicePanelLogic.Current.GetDeviceLightSettion(panelDevice);
            if (linghtLevelInfo == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return false;
            }
            //接近感应(他们说随便拿一路回路就行了)
            proximitySensorsInfo = await HdlDevicePanelLogic.Current.GetDeviceProximitySensorsSettion(panelDevice);
            if (proximitySensorsInfo == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return false;
            }
            //节能模式(他们说随便拿一路回路就行了)
            energyModeInfo = HdlDevicePanelLogic.Current.GetDeviceEnergyConservationMode(panelDevice);
            if (energyModeInfo == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return false;
            }
            keyColorData = HdlDevicePanelLogic.Current.GetPanelEpointColorInfo(panelDevice);
            if (this.keyColorData == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return false;
            }
            //关闭进度条
            this.CloseProgressBar();
            return true;
        }
        #endregion
        #region ■ 保存数据___________________________
        /// <summary>
        /// 保存面板数据
        /// </summary>
        private async void SavePanelData()
        {
            this.ShowProgressBar();
            //亮度调节更改(他们说随便一个回路就行)
            var result = HdlDevicePanelLogic.Current.SetDeviceLightSettion(panelDevice, linghtLevelInfo.panelDirectionsLevel, linghtLevelInfo.panelBacklightLevel);
            if (result == false)
            {
                this.CloseProgressBar();
                return;
            }
            //节能模式修改(他们说随便一个回路就行)
            //肖志豪给按键控制面板(四开八控)设备,说默认15秒时间,这样接近感应功能才合理
            result = HdlDevicePanelLogic.Current.SetDeviceEnergyConservationMode(panelDevice, energyModeInfo.enable, energyModeInfo.time, energyModeInfo.level);
            if (result == false)
            {
                this.CloseProgressBar();
                return;
            }
            //接近传感设置  (肖志豪给按键控制面板(四开八控)设备,传感距离和触发延迟时间默认用最大值)
            result = await HdlDevicePanelLogic.Current.SetProximitySensorStatus(panelDevice, proximitySensorsInfo.enable);
            if (result == false)
            {
                this.CloseProgressBar();
                return;
            }
            //设置按键面板指定端点的【指示灯开关颜色】的信息
            result = HdlDevicePanelLogic.Current.SetPanelEpointColorInfo(panelDevice, this.keyColorData);
            this.CloseProgressBar();
            if (result == false)
            {
                return;
            }
            //关闭自身
            this.CloseForm();
        }
        #endregion
        #region ■ 补充容器___________________________
        /// <summary>
        /// 行数超过容器时,补一个空白FrameLayout,使之能滑动
        /// </summary>
        /// <param name="listview">当前滑动页范围</param>
        /// <param name="enable">是否添加容器</param>
        public void FinishInitControl(VerticalScrolViewLayout listview, bool enable = false)
        {
            //促使被挡住的菜单能够向上滑动
            var frameTemp = new FrameLayout();
            listview.AddChidren(frameTemp);
            frameTemp.Tag = "移除容器";
            if (enable == true)
            {
                listview.ScrollEnabled = true;
                frameTemp.Height = Application.GetRealHeight(2212 - 1921 + 173);
            }
            else
            {
                listview.RemoveViewByTag("移除容器");
                listview.ScrollEnabled = false;
            }
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 将RGB转换为颜色
        /// </summary>
        /// <param name="R"></param>
        /// <param name="G"></param>
        /// <param name="B"></param>
        /// <returns></returns>
        private uint GetColorByRGB(byte R, byte G, byte B)
        {
            return (uint)(0xFF000000 + R * 256 * 256 + G * 256 + B);
        }
        #endregion
    }
}