xm
2020-12-14 d6fb0646531172f23648441c224cdcccd721b894
ZigbeeApp/Shared/Phone/MainPage/ControlForm/DeviceFreshAirDetailCardForm.cs
New file
@@ -0,0 +1,405 @@
using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.UserCenter;
using ZigBee.Device;
namespace Shared.Phone.MainPage.ControlForm
{
    /// <summary>
    /// 新风类型的深度卡片界面
    /// </summary>
    public class DeviceFreshAirDetailCardForm : DeviceDetailCardCommonForm
    {
        #region ■ 变量声明___________________________
        /// <summary>
        /// 界面上可以操作的控件
        /// </summary>
        private List<ButtonBase> listControl = new List<ButtonBase>();
        /// <summary>
        /// 控件
        /// </summary>
        private FreshAir freshAirDev = null;
        /// <summary>
        /// 状态控件
        /// </summary>
        private NormalViewControl btnStatu = null;
        /// <summary>
        /// 当前的文本
        /// </summary>
        private string CurrentText = string.Empty;
        /// <summary>
        /// 设备名称控件
        /// </summary>
        private NormalViewControl btnDeviceName = null;
        #endregion
        #region ■ 初始化_____________________________
        public override void InitMiddleFrameAfter(FrameLayout frameWhiteBack)
        {
            //左滑不能
            this.ScrollEnabled = true;
            this.freshAirDev = (FreshAir)this.device;
            //先清空
            this.listControl = new List<ButtonBase>();
            InitFreshAirControl(frameWhiteBack);
            UpdateStatus();
        }
        /// <summary>
        /// 初始化新风控件
        /// </summary>
        /// <param name="frameWhiteBack"></param>
        private void InitFreshAirControl(FrameLayout frameWhiteBack)
        {
            //新风控件的容器
            var frameAcBack = new FrameLayout();
            frameAcBack.Y = Application.GetRealHeight(262);
            frameAcBack.Width = Application.GetMinRealAverage(444);
            frameAcBack.Height = Application.GetMinRealAverage(444);
            frameAcBack.Gravity = Gravity.CenterHorizontal;
            frameAcBack.BackgroundImagePath = "FreshAir/FreshAirPic.png";
            frameWhiteBack.AddChidren(frameAcBack);
            //新风自动Layout【为了扩大点击范围】
            var autoFrameLayout = new NormalViewControl(213 + 40, 63 + 80, true);
            autoFrameLayout.X = Application.GetRealWidth(275 - 20);
            autoFrameLayout.Y = Application.GetRealHeight(821 - 20);
            frameWhiteBack.AddChidren(autoFrameLayout);
            autoFrameLayout.ButtonClickEvent += HandlerAuto;
            // 自动(第1个,listControl【0】)
            var btnAuto = new NormalViewControl(213, 63, true);
            btnAuto.X = Application.GetRealWidth(275);
            btnAuto.Y = Application.GetRealHeight(821);
            btnAuto.TextID = R.MyInternationalizationString.Mode_Auto;
            btnAuto.TextColor = ZigbeeColor.Current.XMGray3;
            btnAuto.IsBold = false;
            btnAuto.TextAlignment = TextAlignment.Center;
            frameWhiteBack.AddChidren(btnAuto);
            this.listControl.Add(btnAuto);
            btnAuto.ButtonClickEvent += HandlerAuto;
            //自动下划线(第2个,listControl【1】)
            var btnAutoLine = new NormalViewControl(72, 12, true);
            btnAutoLine.X = Application.GetRealWidth(346);
            btnAutoLine.Y = Application.GetRealHeight(896);
            btnAutoLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
            btnAutoLine.Visible = false;
            frameWhiteBack.AddChidren(btnAutoLine);
            this.listControl.Add(btnAutoLine);
            btnAutoLine.ButtonClickEvent += HandlerAuto;
            //新风手动Layout【为了扩大点击范围】
            var manualFrameLayout = new NormalViewControl(213 + 40, 63 + 80, true);
            manualFrameLayout.X = Application.GetRealWidth(488 - 20);
            manualFrameLayout.Y = Application.GetRealHeight(821 - 20);
            frameWhiteBack.AddChidren(manualFrameLayout);
            manualFrameLayout.ButtonClickEvent += HandlerManual;
            //手动(第3个,listControl【2】)
            var btnManual = new NormalViewControl(213, 63, true);
            btnManual.X = Application.GetRealWidth(488);
            btnManual.Y = btnAuto.Y;
            btnManual.TextID = R.MyInternationalizationString.Manual;
            btnManual.TextColor = ZigbeeColor.Current.XMGray3;
            btnManual.IsBold = false;
            btnManual.TextAlignment = TextAlignment.Center;
            frameWhiteBack.AddChidren(btnManual);
            this.listControl.Add(btnManual);
            btnManual.ButtonClickEvent += HandlerManual;
            //手动下划线(第4个,listControl【3】)
            var btnManualLine = new NormalViewControl(72, 12, true);
            btnManualLine.X = Application.GetRealWidth(560);
            btnManualLine.BackgroundColor = ZigbeeColor.Current.XMOrange;
            btnManualLine.Y = btnAutoLine.Y;
            btnManualLine.Visible = false;
            frameWhiteBack.AddChidren(btnManualLine);
            this.listControl.Add(btnManualLine);
            btnManualLine.ButtonClickEvent += HandlerManual;
            //高风(第5个,listControl【4】)
            var btnHighSpeed = new IconViewControl(81);
            btnHighSpeed.X = Application.GetRealWidth(207);
            btnHighSpeed.Y = Application.GetRealHeight(999);
            btnHighSpeed.UnSelectedImagePath = "AC/Fan_Height.png";
            btnHighSpeed.SelectedImagePath = "AC/Fan_HeightSelected.png";
            frameWhiteBack.AddChidren(btnHighSpeed);
            this.listControl.Add(btnHighSpeed);
            btnHighSpeed.ButtonClickEvent += (sender, e) =>
            {
                if (freshAirDev.currentFanStatus == 0)
                {
                    return;
                }
                if (freshAirDev.currentFanMode == 5)
                {
                    var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AutoModeForbiddenOperate));
                    msgContr.Show();
                    return;
                }
                if (!btnHighSpeed.IsSelected)
                {
                    this.listControl[4].Enable = false;
                    this.SetFanComand(3);
                }
            };
            //开关(第6个,listControl【5】)
            var btnSwitch = new IconViewControl(81);
            btnSwitch.X = Application.GetRealWidth(444);
            btnSwitch.Y = btnHighSpeed.Y;
            btnSwitch.UnSelectedImagePath = "AC/OpenOrClose.png";
            btnSwitch.SelectedImagePath = "AC/OpenOrCloseSelected.png";
            frameWhiteBack.AddChidren(btnSwitch);
            this.listControl.Add(btnSwitch);
            btnSwitch.ButtonClickEvent += (sender, e) =>
            {
                btnSwitch.IsSelected = !btnSwitch.IsSelected;
                if (btnSwitch.IsSelected)
                {
                    this.listControl[5].Enable = false;
                    this.SetFanComand(4);
                }
                else
                {
                    this.listControl[5].Enable = false;
                    this.SetFanComand(0);
                }
            };
            //低风(第7个,listControl【6】)
            var btnLowSpeed = new IconViewControl(81);
            btnLowSpeed.X = Application.GetRealWidth(677);
            btnLowSpeed.Y = btnHighSpeed.Y;
            btnLowSpeed.UnSelectedImagePath = "AC/Fan_Low.png";
            btnLowSpeed.SelectedImagePath = "AC/Fan_LowSelected.png";
            frameWhiteBack.AddChidren(btnLowSpeed);
            this.listControl.Add(btnLowSpeed);
            btnLowSpeed.ButtonClickEvent += (sender, e) =>
            {
                if (freshAirDev.currentFanStatus == 0)
                {
                    return;
                }
                if (freshAirDev.currentFanMode == 5)
                {
                    var msgContr = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.AutoModeForbiddenOperate));
                    msgContr.Show();
                    return;
                }
                if (!btnLowSpeed.IsSelected)
                {
                    this.listControl[6].Enable = false;
                    this.SetFanComand(1);
                }
            };
        }
        /// <summary>
        /// 自动事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HandlerAuto(object sender, MouseEventArgs e)
        {
            if (freshAirDev.currentFanStatus == 0)
            {
                return;
            }
            if (freshAirDev.currentFanMode == 5)
            {
                return;
            }
            if (!listControl[0].IsSelected)
            {
                this.listControl[0].Enable = false;
                this.SetFanComand(5);
            }
        }
        /// <summary>
        /// 手动事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void HandlerManual(object sender, MouseEventArgs e)
        {
            if (freshAirDev.currentFanStatus == 0)
            {
                return;
            }
            if (freshAirDev.currentFanMode == 15)
            {
                return;
            }
            if (!this.listControl[2].IsSelected)
            {
                this.listControl[2].Enable = false;
                this.SetFanComand(15);
            }
        }
        #endregion
        #region ■ 是否获取网关反馈的结果_____________
        /// <summary>
        /// 检测网关的反馈结果(属性上报的对象:device.DeviceStatusReport)
        /// </summary>
        /// <param name="comandDiv">命令区分</param>
        /// <param name="report">上报数据</param>
        /// <returns></returns>
        public override bool CheckResponeResultStatu(ReceiveComandDiv comandDiv, CommonDevice report)
        {
            if (comandDiv == ReceiveComandDiv.A设备属性上报)
            {
                if (report.DeviceStatusReport.CluterID == 514)
                {
                    var attriButeList = report.DeviceStatusReport.AttriBute;
                    foreach (var attList in attriButeList)
                    {
                        if (attList.AttributeId == 0)
                        {
                            //风速
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                UpdateStatus();
                            });
                            //已经接收到网关的反馈
                            return true;
                        }
                    }
                }
            }
            this.listControl[0].Enable = true;
            this.listControl[2].Enable = true;
            this.listControl[4].Enable = true;
            this.listControl[5].Enable = true;
            this.listControl[6].Enable = true;
            return false;
        }
        #endregion
        #region ■ 设置方法
        /// <summary>
        ///命令
        ///0:Off
        ///1:Low
        ///3:High
        ///4:On
        ///5:Auto
        /// 15:Manual
        /// </summary>
        private void SetFanComand(int command)
        {
            //检测是否获取网关反馈的结果,如果网关没有回复,则会弹出消息
            this.StartCheckResponeResult(this.listControl, (result) =>
            {
                //接收到网关回复
                if (result == true)
                {
                }
            });
            switch (command)
            {
                case 0:
                    freshAirDev.Close();
                    break;
                case 1:
                    freshAirDev.SetLowSpeed();
                    break;
                case 3:
                    freshAirDev.SetHighSpeed();
                    break;
                case 4:
                    freshAirDev.Open();
                    break;
                case 5:
                    freshAirDev.SetAuto();
                    break;
                case 15:
                    freshAirDev.SetManual();
                    break;
            }
        }
        #endregion
        #region ■ 刷新状态_____________
        /// <summary>
        /// 刷新状态
        /// </summary>
        private void UpdateStatus()
        {
            //设置状态文字
            if (freshAirDev.currentFanStatus == 4)
            {
                this.listControl[5].Enable = true;
                //打开
                this.listControl[5].IsSelected = true;
                //设置状态文字
                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.uOpen1));
            }
            if (freshAirDev.currentFanStatus == 0)
            {
                //关闭
                this.listControl[0].TextColor = ZigbeeColor.Current.XMGray3;
                this.listControl[0].IsBold = false;
                this.listControl[1].Visible = false;
                this.listControl[2].TextColor = ZigbeeColor.Current.XMGray3;
                this.listControl[2].IsBold = false;
                this.listControl[3].Visible = false;
                this.listControl[4].IsSelected = false;
                this.listControl[5].IsSelected = false;
                this.listControl[6].IsSelected = false;
                this.listControl[5].Enable = true;
                //设置状态文字
                this.SetStatuText(Language.StringByID(R.MyInternationalizationString.Close));
                return;
            }
            //设置模式
            if (freshAirDev.currentFanMode == 5)
            {
                this.listControl[0].TextColor = ZigbeeColor.Current.XMGray1;
                this.listControl[0].IsBold = true;
                this.listControl[1].Visible = true;
                this.listControl[2].TextColor = ZigbeeColor.Current.XMGray3;
                this.listControl[2].IsBold = false;
                this.listControl[3].Visible = false;
                this.listControl[0].Enable = true;
            }
            else if (freshAirDev.currentFanMode == 15)
            {
                this.listControl[0].TextColor = ZigbeeColor.Current.XMGray3;
                this.listControl[0].IsBold = false;
                this.listControl[1].Visible = false;
                this.listControl[2].TextColor = ZigbeeColor.Current.XMGray1;
                this.listControl[2].IsBold = true;
                this.listControl[3].Visible = true;
                this.listControl[2].Enable = true;
            }
            //设置风速
            if (freshAirDev.currentFanSpeed == 1)
            {
                this.listControl[4].IsSelected = false;
                this.listControl[6].IsSelected = true;
                this.listControl[6].Enable = true;
            }
            else if (freshAirDev.currentFanSpeed == 3)
            {
                this.listControl[4].IsSelected = true;
                this.listControl[6].IsSelected = false;
                this.listControl[4].Enable = true;
            }
        }
        #endregion
    }
}