gxc
2019-11-07 a4924de3136289d10cabbf2f61a228387d44ded7
ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorLightPerceptionRegulationForm.cs
New file
@@ -0,0 +1,252 @@
using System;
using System.Collections.Generic;
using System.Text;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DevicePirSensor
{
    /// <summary>
    /// PIR传感器光感调节界面★
    /// </summary>
    public class PirSensorLightPerceptionRegulationForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 传感器设备
        /// </summary>
        private IASZone deviceIASZone = null;
        /// <summary>
        /// 滑动的进度条
        /// </summary>
        private HorizontalSeekBar SeekBar = null;
        /// <summary>
        /// 灯光的配置
        /// </summary>
        private IASZone.ConfigureParamates Lightconfigure = null;
        /// <summary>
        /// 当前选择的光感等级
        /// </summary>
        private int selectLightLevel = -1;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_iasZone">传感器设备</param>
        /// <param name="i_Lightconfigure">灯光的配置</param>
        public void ShowForm(IASZone i_iasZone, IASZone.ConfigureParamates i_Lightconfigure)
        {
            UserView.HomePage.Instance.ScrollEnabled = false;
            deviceIASZone = i_iasZone;
            Lightconfigure = i_Lightconfigure;
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uLightPerceptionRegulation));
            //初始化中部信息
            this.InitMiddleFrame();
            //完成
            //var btnfinish = new TopLayoutFinshView();
            //topFrameLayout.AddChidren(btnfinish);
            //btnfinish.MouseUpEventHandler += (sender, e) =>
            //{
            //    if (this.selectLightLevel == -1)
            //    {
            //        //什么都没有选择过
            //        this.CloseForm();
            //        return;
            //    }
            //    //保存传感器的灯光的配置信息
            //    this.SaveLightSettionData();
            //};
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            //清空bodyFrame
            this.ClearBodyFrame();
            //左右间距
            int space = Application.GetRealWidth(60);
            int YY = Application.GetRealHeight(220);
            //全天
            var btnFullDay = new NormalViewControl(200, true);
            btnFullDay.X = space;
            btnFullDay.Y = YY;
            btnFullDay.TextID = R.MyInternationalizationString.uFullDay;
            btnFullDay.TextAlignment = TextAlignment.CenterLeft;
            bodyFrameLayout.AddChidren(btnFullDay);
            //中等
            var btnMiddle = new NormalViewControl(200, true);
            btnMiddle.Gravity = Gravity.CenterHorizontal;
            btnMiddle.Y = YY;
            btnMiddle.TextID = R.MyInternationalizationString.uMedium;
            btnMiddle.TextAlignment = TextAlignment.Center;
            bodyFrameLayout.AddChidren(btnMiddle);
            //较暗
            var btnMoreDark = new NormalViewControl(200, true);
            btnMoreDark.Y = YY;
            btnMoreDark.TextID = R.MyInternationalizationString.uMoreDark;
            btnMoreDark.TextAlignment = TextAlignment.CenterRight;
            bodyFrameLayout.AddChidren(btnMoreDark);
            btnMoreDark.X = bodyFrameLayout.Width - space - btnMoreDark.Width;
            //刻度图片
            var btnScale = new PicViewControl(919, 97);
            btnScale.Y = btnMoreDark.Bottom + Application.GetRealHeight(20);
            btnScale.Gravity = Gravity.CenterHorizontal;
            btnScale.UnSelectedImagePath = "Item/PirSensorLightScale.png";
            bodyFrameLayout.AddChidren(btnScale);
            //初始化光感等级的滑动进度条
            this.InitLightLevelControl(space, YY);
        }
        #endregion
        #region ■ 设置光感等级_______________________
        /// <summary>
        /// 初始化光感等级的滑动进度条
        /// </summary>
        /// <param name="space">左右间距大小</param>
        /// <param name="TextYY">文本的Y轴</param>
        private async void InitLightLevelControl(int space, int TextYY)
        {
            //打开进度条
            this.ShowProgressBar();
            //获取PIR传感器的【光感等级总刻度】
            var level = await HdlPirSensorLogic.Current.GetPirLightAbilitySize(this.deviceIASZone);
            if (level == -1)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return;
            }
            Application.RunOnMainThread(() =>
            {
                if (this.Parent != null)
                {
                    //初始化滑动进度条
                    this.InitSeekBarControl(level, space, TextYY);
                }
            });
            //关闭进度条
            this.CloseProgressBar();
        }
        /// <summary>
        /// 初始化滑动进度条
        /// </summary>
        /// <param name="level">光感等级总刻度</param>
        /// <param name="space">左右间距大小</param>
        /// <param name="TextYY">文本的Y轴</param>
        private void InitSeekBarControl(int level, int space, int TextYY)
        {
            //这个是刻度移动一次的范围
            int avgWidth = (Application.CurrentWidth - space * 2) / level;
            //刻度按钮
            var btnScale = new IconViewControl(55);
            btnScale.X = space + avgWidth * (level - Lightconfigure.levelSize) + Application.GetRealWidth(10);
            btnScale.Y = Application.GetRealHeight(220) + TextYY;
            btnScale.UnSelectedImagePath = "Item/PirSensorLightScaleButton.png";
            bodyFrameLayout.AddChidren(btnScale);
            //这东西有误差
            btnScale.X += Application.GetRealWidth(4) * (level - Lightconfigure.levelSize);
            //光感等级总刻度
            int lightLevelCount = level;
            //进度条
            SeekBar = new HorizontalSeekBar();
            SeekBar.X = space;
            SeekBar.Y = Application.GetRealHeight(200) + TextYY;
            SeekBar.Width = bodyFrameLayout.Width - space * 2;
            SeekBar.Height = Application.GetRealHeight(110);
            SeekBar.Max = level - 1;
            SeekBar.Gravity = Gravity.CenterHorizontal;
            SeekBar.BackgroundColor = UserCenterColor.Current.Transparent;
            SeekBar.BorderColor = UserCenterColor.Current.Transparent;
            SeekBar.ThumbColor = UserCenterColor.Current.Transparent;
            SeekBar.ProgressColor = UserCenterColor.Current.Transparent;
            bodyFrameLayout.AddChidren(SeekBar);
            SeekBar.Progress = level - Lightconfigure.levelSize;
            SeekBar.ProgressChanged += (sender, value) =>
            {
                //因为它的等级刻度从左往右是从大到小的
                this.selectLightLevel = lightLevelCount - value;
                //图标移动
                btnScale.X = space + avgWidth * value + Application.GetRealWidth(10);
                //这东西有误差
                btnScale.X += Application.GetRealWidth(4) * value;
            };
        }
        #endregion
        #region ■ 保存配置___________________________
        /// <summary>
        /// 保存传感器的灯光的配置信息
        /// </summary>
        /// <returns></returns>
        private async void SaveLightSettionData()
        {
            //开启进度条
            this.ShowProgressBar();
            //先记录缓存
            int levelSize = this.Lightconfigure.levelSize;
            //设置新值
            this.Lightconfigure.levelSize = this.selectLightLevel;
            var result = await HdlPirSensorLogic.Current.SetPirSensorLightSettion(this.deviceIASZone, this.Lightconfigure);
            //关闭进度条
            this.CloseProgressBar();
            if (result == true)
            {
                Application.RunOnMainThread(() =>
                {
                    this.CloseForm();
                });
            }
            else
            {
                //还原缓存
                this.Lightconfigure.levelSize = levelSize;
            }
        }
        #endregion
        #region ■ 界面关闭___________________________
        /// <summary>
        /// 界面关闭
        /// </summary>
        public override void CloseForm()
        {
            UserView.HomePage.Instance.ScrollEnabled = true;
            base.CloseForm();
        }
        #endregion
    }
}