xm
2020-07-21 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d
ZigbeeApp/Shared/Phone/UserCenter/Device/Relay/RelayThreeLoadBackLightSettionForm.cs
New file
@@ -0,0 +1,404 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DeviceRelay
{
    /// <summary>
    /// 三路继电器的背光灯设置
    /// </summary>
    public class RelayThreeLoadBackLightSettionForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 设备Mac地址
        /// </summary>
        private string deviceMac = string.Empty;
        /// <summary>
        /// 亮度调节的信息
        /// </summary>
        private Panel.PanelSwitchLevelInfo linghtLevelInfo = null;
        /// <summary>
        /// 节能模式
        /// </summary>
        private Panel.PanelSaveEnergyModeInfo energyModeInfo = null;
        /// <summary>
        /// 设备列表
        /// </summary>
        private List<CommonDevice> listDevice = null;
        /// <summary>
        /// 数据是否变更
        /// </summary>
        private bool valueChanged = false;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        public void ShowForm(string i_deviceMac)
        {
            this.ScrollEnabled = false;
            this.deviceMac = i_deviceMac;
            this.listDevice = Common.LocalDevice.Current.GetDevicesByMac(i_deviceMac);
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uBackLight));
            //初始化中部信息
            this.InitMiddleFrame();
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            //获取设备初始数据
            var result = this.GetDeviceDefultData();
            if (result == false)
            {
                return;
            }
            //清空bodyFrame
            this.ClearBodyFrame();
            //点击状态
            var btnClickStatu = new NormalViewControl(600, 49, true);
            btnClickStatu.X = ControlCommonResourse.XXLeft;
            btnClickStatu.Y = Application.GetRealHeight(207);
            btnClickStatu.TextSize = 12;
            btnClickStatu.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnClickStatu.TextID = R.MyInternationalizationString.uClickStatu;
            bodyFrameLayout.AddChidren(btnClickStatu);
            //各种背光灯的容器
            var frameLinght = new FrameLayout();
            frameLinght.Height = Application.GetRealHeight(818);
            frameLinght.Y = Application.GetRealHeight(279);
            frameLinght.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(frameLinght);
            //添加1-6干接点的背光灯进度条
            this.AddSixDryContactProgress(frameLinght);
            //第七干接点的背光灯进度条
            this.AddSevenDryContactProgress(frameLinght);
            //添加节能模式
            this.AddEnergyConservationRow(btnClickStatu, frameLinght);
            //保存
            var btnSave = new BottomClickButton();
            btnSave.TextID = R.MyInternationalizationString.uSave;
            bodyFrameLayout.AddChidren(btnSave);
            btnSave.ButtonClickEvent += (sender, e) =>
            {
                if (valueChanged == true)
                {
                    this.ShowProgressBar();
                    //亮度调节更改(他们说随便一个回路就行)
                    result = HdlDevicePanelLogic.Current.SetDeviceLightSettion(listDevice[0], linghtLevelInfo.panelDirectionsLevel, linghtLevelInfo.panelBacklightLevel);
                    if (result == false)
                    {
                        this.CloseProgressBar();
                        return;
                    }
                    //节能模式修改(他们说随便一个回路就行)
                    result = HdlDevicePanelLogic.Current.SetDeviceEnergyConservationMode(listDevice[0], energyModeInfo.enable, energyModeInfo.time, energyModeInfo.level);
                    this.CloseProgressBar();
                    if (result == false)
                    {
                        return;
                    }
                }
                //关闭自身
                this.CloseForm();
            };
        }
        #endregion
        #region ■ 节能模式行_________________________
        /// <summary>
        ///  添加节能模式行
        /// </summary>
        /// <param name="btnClickStatu">点击状态控件(控件伸缩使用)</param>
        /// <param name="frameLinght">各种背光灯的容器(控件伸缩使用)</param>
        private void AddEnergyConservationRow(NormalViewControl btnClickStatu, FrameLayout frameLinght)
        {
            //缩小:170  扩大:429
            var frameBack = new FrameRowControl();
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            frameBack.UseClickStatu = false;
            frameBack.Height = Application.GetRealHeight(170);
            bodyFrameLayout.AddChidren(frameBack);
            //当前亮度(先声明,为了对应IOS的折叠后,没有完全遮挡的问题)
            var btnProgressView1 = new NormalViewControl(200, 49, true);
            var btnProgress1 = new NormalViewControl(200, 49, true);
            //节能模式
            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(259);
                if (btnSwitch.IsSelected == true)
                {
                    frameBack.Height += value;
                    btnClickStatu.Y += value;
                    frameLinght.Y += value;
                    btnProgressView1.Visible = true;
                    btnProgress1.Visible = true;
                }
                else
                {
                    frameBack.Height -= value;
                    btnClickStatu.Y -= value;
                    frameLinght.Y -= value;
                    btnProgressView1.Visible = false;
                    btnProgress1.Visible = false;
                }
                //数据变更
                valueChanged = true;
            };
            if (energyModeInfo.enable == true)
            {
                btnSwitch.IsSelected = true;
            }
            //当前亮度
            btnProgressView1.X = ControlCommonResourse.XXLeft;
            btnProgressView1.Y = Application.GetRealHeight(161);
            btnProgressView1.TextSize = 12;
            btnProgressView1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgressView1.TextID = R.MyInternationalizationString.uNowLuminance;
            frameBack.AddChidren(btnProgressView1);
            btnProgressView1.Visible = false;
            btnProgress1.X = Application.GetRealWidth(222);
            btnProgress1.Y = Application.GetRealHeight(158);
            btnProgress1.TextSize = 12;
            btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgress1.Text = energyModeInfo.level + "%";
            frameBack.AddChidren(btnProgress1);
            btnProgress1.Visible = false;
            //进度条
            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;
                valueChanged = true;
            };
            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 = frameLinght.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(259);
                frameBack.Height += value;
                btnClickStatu.Y += value;
                frameLinght.Y += value;
                btnProgressView1.Visible = true;
                btnProgress1.Visible = true;
            }
        }
        #endregion
        #region ■ 1-6干接点的背光灯__________________
        /// <summary>
        ///  添加1-6干接点的背光灯进度条(这个对应的是【指示灯亮度】)
        /// </summary>
        /// <param name="frameLinght">各种背光灯的容器</param>
        private void AddSixDryContactProgress(FrameLayout frameLinght)
        {
            var btnProgressView1 = new NormalViewControl(200, 49, true);
            btnProgressView1.X = ControlCommonResourse.XXLeft;
            btnProgressView1.Y = Application.GetRealHeight(29);
            btnProgressView1.TextSize = 12;
            btnProgressView1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgressView1.Text = "Dry1-6";
            frameLinght.AddChidren(btnProgressView1);
            var btnProgress1 = new NormalViewControl(200, 49, true);
            btnProgress1.X = Application.GetRealWidth(204);
            btnProgress1.Y = Application.GetRealHeight(29);
            btnProgress1.TextSize = 12;
            btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgress1.Text = linghtLevelInfo.panelBacklightLevel + "%";
            frameLinght.AddChidren(btnProgress1);
            //进度条
            var seekBar1 = new SeekBarControl();
            seekBar1.Y = Application.GetRealHeight(124);
            seekBar1.ProgressBarColor = 0xfffdb500;
            frameLinght.AddChidren(seekBar1);
            seekBar1.ProgressChangedEvent += (div, value) =>
            {
                btnProgress1.Text = value + "%";
                //数据变更
                linghtLevelInfo.panelBacklightLevel = value;
                valueChanged = true;
            };
            seekBar1.Progress = linghtLevelInfo.panelBacklightLevel;
            var btnTemp1 = new NormalViewControl(200, 49, true);
            btnTemp1.X = ControlCommonResourse.XXLeft;
            btnTemp1.Y = Application.GetRealHeight(193);
            btnTemp1.TextSize = 12;
            btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp1.Text = "0%";
            frameLinght.AddChidren(btnTemp1);
            var btnTemp2 = new NormalViewControl(200, 49, true);
            btnTemp2.X = frameLinght.Width - Application.GetRealWidth(200 + 49);
            btnTemp2.Y = Application.GetRealHeight(193);
            btnTemp2.TextAlignment = TextAlignment.CenterRight;
            btnTemp2.TextSize = 12;
            btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp2.Text = "100%";
            frameLinght.AddChidren(btnTemp2);
            //线
            var btnLine = new NormalViewControl(Application.GetRealWidth(965), ControlCommonResourse.BottomLineHeight, false);
            btnLine.Y = Application.GetRealHeight(311);
            btnLine.Gravity = Gravity.CenterHorizontal;
            btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
            frameLinght.AddChidren(btnLine);
        }
        #endregion
        #region ■ 第七干接点的背光灯_________________
        /// <summary>
        ///  添加第七干接点的背光灯进度条(这个对应的是【背光灯亮度】)
        /// </summary>
        /// <param name="frameLinght">各种背光灯的容器</param>
        private void AddSevenDryContactProgress(FrameLayout frameLinght)
        {
            var btnProgressView1 = new NormalViewControl(200, 49, true);
            btnProgressView1.X = ControlCommonResourse.XXLeft;
            btnProgressView1.Y = Application.GetRealHeight(369);
            btnProgressView1.TextSize = 12;
            btnProgressView1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgressView1.Text = "Dry7";
            frameLinght.AddChidren(btnProgressView1);
            var btnProgress1 = new NormalViewControl(200, 49, true);
            btnProgress1.X = Application.GetRealWidth(161);
            btnProgress1.Y = Application.GetRealHeight(369);
            btnProgress1.TextSize = 12;
            btnProgress1.TextColor = UserCenterColor.Current.TextGrayColor1;
            btnProgress1.Text = linghtLevelInfo.panelDirectionsLevel + "%";
            frameLinght.AddChidren(btnProgress1);
            //进度条
            var seekBar1 = new SeekBarControl();
            seekBar1.Y = Application.GetRealHeight(464);
            seekBar1.ProgressBarColor = 0xfffdb500;
            frameLinght.AddChidren(seekBar1);
            seekBar1.ProgressChangedEvent += (div, value) =>
            {
                btnProgress1.Text = value + "%";
                //数据变更
                linghtLevelInfo.panelDirectionsLevel = value;
                valueChanged = true;
            };
            seekBar1.Progress = linghtLevelInfo.panelDirectionsLevel;
            var btnTemp1 = new NormalViewControl(200, 49, true);
            btnTemp1.X = ControlCommonResourse.XXLeft;
            btnTemp1.Y = Application.GetRealHeight(533);
            btnTemp1.TextSize = 12;
            btnTemp1.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp1.Text = "0%";
            frameLinght.AddChidren(btnTemp1);
            var btnTemp2 = new NormalViewControl(200, 49, true);
            btnTemp2.X = frameLinght.Width - Application.GetRealWidth(200 + 49);
            btnTemp2.Y = Application.GetRealHeight(533);
            btnTemp2.TextAlignment = TextAlignment.CenterRight;
            btnTemp2.TextSize = 12;
            btnTemp2.TextColor = UserCenterColor.Current.TextGrayColor3;
            btnTemp2.Text = "100%";
            frameLinght.AddChidren(btnTemp2);
            //线
            var btnLine = new NormalViewControl(Application.GetRealWidth(965), ControlCommonResourse.BottomLineHeight, false);
            btnLine.Gravity = Gravity.CenterHorizontal;
            btnLine.Y = Application.GetRealHeight(651);
            btnLine.BackgroundColor = UserCenterColor.Current.ButtomLine;
            frameLinght.AddChidren(btnLine);
        }
        #endregion
        #region ■ 获取初始数据_______________________
        /// <summary>
        /// 获取设备初始数据
        /// </summary>
        /// <returns></returns>
        private bool GetDeviceDefultData()
        {
            //开启进度条
            this.ShowProgressBar();
            //亮度调节(他们说随便拿一路回路就行了)
            linghtLevelInfo = HdlDevicePanelLogic.Current.GetDeviceLightSettion(listDevice[0]);
            if (linghtLevelInfo == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return false;
            }
            //节能模式(他们说随便拿一路回路就行了)
            energyModeInfo = HdlDevicePanelLogic.Current.GetDeviceEnergyConservationMode(listDevice[0]);
            if (energyModeInfo == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return false;
            }
            //关闭进度条
            this.CloseProgressBar();
            return true;
        }
        #endregion
    }
}