xm
2020-12-14 d6fb0646531172f23648441c224cdcccd721b894
ZigbeeApp/Shared/Phone/UserCenter/Device/PirSensor/PirSensorWorkModeMenuForm.cs
New file
@@ -0,0 +1,308 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.DevicePirSensor
{
    /// <summary>
    /// pir传感器的工作模式的菜单界面
    /// </summary>
    public class PirSensorWorkModeMenuForm : EditorCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// pir传感器对象
        /// </summary>
        private IASZone iASZone = null;
        /// <summary>
        /// 传感器的配置信息
        /// </summary>
        private IASZone.ConfigureParamates pirConfigure = null;
        /// <summary>
        /// 数据是否更改
        /// </summary>
        private bool isDataChanged = false;
        #endregion
        #region ■ 初始化_____________________________
        /// <summary>
        /// 画面显示(底层会固定调用此方法,借以完成画面创建)
        /// </summary>
        /// <param name="i_iASZone">pir传感器</param>
        public void ShowForm(IASZone i_iASZone)
        {
            this.iASZone = i_iASZone;
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uWorkMode));
            HdlThreadLogic.Current.RunThread(() =>
            {
                //获取初始数据
                var result = this.GetDeviceAllDefultData();
                if (result == false)
                {
                    return;
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //初始化中部信息
                    this.InitMiddleFrame();
                });
            });
        }
        /// <summary>
        /// 初始化中部信息
        /// </summary>
        private void InitMiddleFrame()
        {
            var frameBack = new FrameLayout();
            frameBack.Height = Application.GetRealHeight(11);
            frameBack.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(frameBack);
            var listView = new VerticalListControl(12);
            listView.Height = Application.GetRealHeight(700);
            listView.Y = frameBack.Bottom;
            listView.BackgroundColor = UserCenterColor.Current.White;
            bodyFrameLayout.AddChidren(listView);
            //添加控制模式行
            this.AddControlModeRow(listView);
            //添加触发模式行
            this.AddTriggerModeRow(listView);
            //添加上报间隔行
            this.AddReportTimeSpaceRow(listView);
            //调整高度
            listView.AdjustRealHeight(Application.GetRealHeight(23));
            //保存
            var btnSave = new BottomClickButton();
            btnSave.TextID = R.MyInternationalizationString.uSave;
            bodyFrameLayout.AddChidren(btnSave);
            btnSave.ButtonClickEvent += (sender, e) =>
            {
                if (this.isDataChanged == false)
                {
                    //数据没有变更过,关闭界面
                    this.CloseForm();
                    return;
                }
                HdlThreadLogic.Current.RunThread(() =>
                {
                    //保存Pir传感器数据
                    this.SavePirSensorData();
                });
            };
            //查看模板时,不允许编辑
            if (Common.Config.Instance.Home.IsShowTemplate == true)
            {
                btnSave.CanClick = false;
            }
        }
        #endregion
        #region ■ 控制模式___________________________
        /// <summary>
        /// 添加控制模式行
        /// </summary>
        /// <param name="listView"></param>
        private void AddControlModeRow(VerticalListControl listView)
        {
            var listSelect = new List<string>();
            //全自动模式
            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uFullAutoMode));
            //半自动模式
            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uHafeAutoMode));
            //控制模式
            var row1 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row1);
            var btnCaption1 = row1.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uControlMode), 400);
            btnCaption1.TextSize = 15;
            row1.AddRightArrow();
            var btnStatu = row1.AddMostRightView(this.pirConfigure.mode == 0 ? listSelect[1] : listSelect[0], 400);
            row1.AddBottomLine();
            row1.ButtonClickEvent += (sender, e) =>
            {
                var form = new BottomItemSelectForm();
                form.AddForm(btnCaption1.Text, listSelect, null, this.pirConfigure.mode == 0 ? 1 : 0);
                form.FinishSelectEvent += (value) =>
                {
                    this.isDataChanged = true;
                    btnStatu.Text = listSelect[value];
                    this.pirConfigure.mode = value == 0 ? 1 : 0;
                };
            };
            //查看模板时,不允许编辑
            if (Common.Config.Instance.Home.IsShowTemplate == true)
            {
                row1.CanClick = false;
            }
        }
        #endregion
        #region ■ 触发模式___________________________
        /// <summary>
        /// 添加触发模式行
        /// </summary>
        /// <param name="listView"></param>
        private void AddTriggerModeRow(VerticalListControl listView)
        {
            var listSelect = new List<string>();
            //调光模式
            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uDimmingMode));
            //开关模式
            listSelect.Add(Language.StringByID(R.MyInternationalizationString.uSwitchMode));
            //触发模式
            var row2 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row2);
            var btnCaption2 = row2.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uTriggerMode), 400);
            btnCaption2.TextSize = 15;
            row2.AddRightArrow();
            var btnStatu2 = row2.AddMostRightView(this.pirConfigure.type == 0 ? listSelect[0] : listSelect[1], 400);
            row2.AddBottomLine();
            row2.ButtonClickEvent += (sender, e) =>
            {
                var form = new BottomItemSelectForm();
                form.AddForm(btnCaption2.Text, listSelect, null, this.pirConfigure.type);
                form.FinishSelectEvent += (value) =>
                {
                    this.isDataChanged = true;
                    btnStatu2.Text = listSelect[value];
                    this.pirConfigure.type = value;
                    //如果是调光模式,则进入下一个界面
                    if (value == 0)
                    {
                        var form2 = new PirSensorDimmingModeForm();
                        form2.AddForm(pirConfigure);
                    }
                };
            };
            //查看模板时,不允许编辑
            if (Common.Config.Instance.Home.IsShowTemplate == true)
            {
                row2.CanClick = false;
            }
        }
        #endregion
        #region ■ 上报间隔___________________________
        /// <summary>
        /// 添加上报间隔行
        /// </summary>
        /// <param name="listView"></param>
        private void AddReportTimeSpaceRow(VerticalListControl listView)
        {
            var listTime = new List<string>();
            var miao = Language.StringByID(R.MyInternationalizationString.uSecond);
            for (int i = 10; i <= 300; i += 5)
            {
                listTime.Add(i + miao);
            }
            //让它处于5的整倍数
            this.pirConfigure.iasReportPeriod = (this.pirConfigure.iasReportPeriod / 5) * 5;
            int index = listTime.IndexOf(this.pirConfigure.iasReportPeriod + miao);
            //上报间隔
            var row3 = new FrameRowControl(listView.rowSpace / 2);
            listView.AddChidren(row3);
            var btnCaption3 = row3.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uReportTimeSpace), 400);
            btnCaption3.TextSize = 15;
            row3.AddRightArrow();
            var btnStatu3 = row3.AddMostRightView(this.pirConfigure.iasReportPeriod + miao, 400);
            row3.ButtonClickEvent += (sender, e) =>
            {
                PickerView.Show(listTime, (value) =>
                {
                    this.isDataChanged = true;
                    btnStatu3.Text = listTime[value];
                    this.pirConfigure.iasReportPeriod = Convert.ToInt32(listTime[value].Replace(miao, string.Empty));
                }, index == -1 ? 0 : index, btnCaption3.Text,
                Language.StringByID(R.MyInternationalizationString.uFinish),
                Language.StringByID(R.MyInternationalizationString.uCancel));
            };
            //查看模板时,不允许编辑
            if (Common.Config.Instance.Home.IsShowTemplate == true)
            {
                row3.CanClick = false;
            }
        }
        #endregion
        #region ■ 获取初始数据_______________________
        /// <summary>
        /// 获取初始数据
        /// </summary>
        /// <returns></returns>
        private bool GetDeviceAllDefultData()
        {
            //打开进度条
            this.ShowProgressBar();
            //获取PIR传感器的【配置信息】
            this.pirConfigure = HdlDevicePirSensorLogic.Current.GetPirSensorLightSettion(this.iASZone);
            if (pirConfigure == null)
            {
                //关闭进度条
                this.CloseProgressBar(ShowReLoadMode.YES);
                return false;
            }
            //关闭进度条
            this.CloseProgressBar();
            return true;
        }
        #endregion
        #region ■ 数据保存___________________________
        /// <summary>
        /// 保存Pir传感器数据
        /// </summary>
        private void SavePirSensorData()
        {
            //打开进度条
            this.ShowProgressBar();
            //保存配置信息
            var result = HdlDevicePirSensorLogic.Current.SetPirSensorSettion(this.iASZone, this.pirConfigure);
            //关闭进度条
            this.CloseProgressBar();
            if (result == true)
            {
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //界面关闭
                    this.CloseForm();
                });
            }
        }
        #endregion
    }
}