gxc
2020-01-02 00ab3ddb140ba8bb88b5cf572b004a85e1da85e9
ZigbeeApp/Shared/Phone/UserCenter/Device/DeviceMacInfoEditorForm.cs
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using Shared.Common;
using Shared.Phone.UserView;
using ZigBee.Device;
namespace Shared.Phone.UserCenter.Device
@@ -30,6 +29,10 @@
        /// 设备具体类型的信息
        /// </summary>
        private DeviceEnumInfo deviceEnumInfo = null;
        /// <summary>
        /// 中央空调的版本控件
        /// </summary>
        private NormalViewControl btnAirConditionerVersion = null;
        #endregion
@@ -186,11 +189,10 @@
        /// </summary>
        private void AddAllMenuRow()
        {
            bool isHdlDevice = Common.LocalDevice.Current.IsHdlDevice(listNewDevice[0]);
            if (deviceEnumInfo.BeloneType == DeviceBeloneType.A智能门锁)
            {
                //只有是河东的设备的时候
                if (isHdlDevice == true)
                if (deviceEnumInfo.IsHdlDevice == true)
                {
                    //添加【用户管理】行
                    this.AddUserManageRow();
@@ -207,6 +209,8 @@
            }
            else
            {
                //添加【工作模式】行(pir传感器专用)
                this.AddPirSensorWorkModeRow();
                //添加【绑定目标】行(pir传感器专用)
                this.AddPirSensorBindRow();
                //添加【方向与限位】行(开合帘,卷帘专用)
@@ -220,10 +224,15 @@
                //添加【干接点设置】行
                this.AddDryContactSettionRow();
            }
            //添加【功能类型】行(空气开关专用)
            this.AddAirSwitchFunctionTypeRow();
            //添加【通用信息】行
            this.AddGeneralInformationRow();
            if (isHdlDevice == true)
            //添加【空调模块版本(空调专用)】行
            this.AddAirConditionerModelVersionRow();
            if (deviceEnumInfo.IsHdlDevice == true)
            {
                //添加【固件升级】行
                this.AddFirmwareUpdateRow();
@@ -497,6 +506,36 @@
        #endregion
        #region ■ 工作模式(pir传感器专用)____________
        /// <summary>
        /// 添加【工作模式】行(pir传感器专用)
        /// </summary>
        private void AddPirSensorWorkModeRow()
        {
            if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir
                || deviceEnumInfo.IsHdlDevice == false)
            {
                return;
            }
            //工作模式
            string caption = Language.StringByID(R.MyInternationalizationString.uWorkMode);
            var btnFunction = new FrameRowControl(listview.rowSpace / 2);
            listview.AddChidren(btnFunction);
            btnFunction.AddLeftCaption(caption, 600);
            //向右图标
            btnFunction.AddRightArrow();
            //底线
            btnFunction.AddBottomLine();
            btnFunction.ButtonClickEvent += (sender, e) =>
            {
                var form = new DevicePirSensor.PirSensorWorkModeMenuForm();
                form.AddForm((IASZone)this.listNewDevice[0]);
            };
        }
        #endregion;
        #region ■ 绑定目标(pir传感器专用)____________
        /// <summary>
@@ -664,7 +703,10 @@
                        //手拉控制
                        if (0 < (attriBute.AttriButeData & 0x04))
                        {
                            btnSwitch.IsSelected = true;
                            HdlThreadLogic.Current.RunMain(() =>
                            {
                                btnSwitch.IsSelected = true;
                            });
                        }
                    }
                }
@@ -704,6 +746,101 @@
        #endregion
        #region ■ 功能类型(空气开关专用)_____________
        /// <summary>
        /// 添加【功能类型】行(空气开关专用)
        /// </summary>
        private void AddAirSwitchFunctionTypeRow()
        {
            if (this.deviceEnumInfo.BeloneType != DeviceBeloneType.A智能空开)
            {
                //不是空气开关
                return;
            }
            //功能类型
            string caption = Language.StringByID(R.MyInternationalizationString.uFunctionType);
            var DfunctionType = this.listNewDevice[0].DfunctionType;
            //功能类型的翻译名字
            int nowSelectNo = 1;
            string strType = string.Empty;
            if (DfunctionType == DeviceFunctionType.A灯光)
            {
                strType = Language.StringByID(R.MyInternationalizationString.uLight);
                nowSelectNo = 1;
            }
            else if (DfunctionType == DeviceFunctionType.A开关)
            {
                strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
                nowSelectNo = 0;
            }
            else if (DfunctionType == DeviceFunctionType.A插座)
            {
                strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
                nowSelectNo = 2;
            }
            var btnFunction = new FrameCaptionViewControl(caption, strType, listview.rowSpace / 2);
            btnFunction.UseClickStatu = true;
            listview.AddChidren(btnFunction);
            btnFunction.InitControl();
            //底线
            btnFunction.AddBottomLine();
            //右箭头
            btnFunction.AddRightArrow();
            btnFunction.ButtonClickEvent += (sender, e) =>
            {
                //显示列表
                var listText = new List<string>();
                listText.Add(Language.StringByID(R.MyInternationalizationString.uSwitch));//开关
                listText.Add(Language.StringByID(R.MyInternationalizationString.uLight));//灯光
                listText.Add(Language.StringByID(R.MyInternationalizationString.uSocket1));//插座
                //标题:选择功能类型
                var title = Language.StringByID(R.MyInternationalizationString.uSelectFunctionType);
                var form = new BottomItemSelectForm();
                form.AddForm(title, listText, nowSelectNo);
                form.FinishSelectEvent += (selectNo) =>
                {
                    btnFunction.Text = listText[selectNo];
                    nowSelectNo = selectNo;
                    //记录起当前选择的功能类型
                    if (selectNo == 0)
                    {
                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A开关;
                        if (this.listNewDevice[0].IsCustomizeImage == false)
                        {
                            //重新设置图片
                            this.listNewDevice[0].IconPath = "Device/Switch.png";
                        }
                    }
                    else if (selectNo == 1)
                    {
                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A灯光;
                        if (this.listNewDevice[0].IsCustomizeImage == false)
                        {
                            //重新设置图片
                            this.listNewDevice[0].IconPath = "Device/Light.png";
                        }
                    }
                    else
                    {
                        this.listNewDevice[0].DfunctionType = DeviceFunctionType.A插座;
                        if (this.listNewDevice[0].IsCustomizeImage == false)
                        {
                            //重新设置图片
                            this.listNewDevice[0].IconPath = "Device/Socket1.png";
                        }
                    }
                    this.listNewDevice[0].ReSave();
                };
            };
        }
        #endregion
        #region ■ 通用信息___________________________
        /// <summary>
@@ -724,6 +861,34 @@
                var form = new DeviceGeneralInformationForm();
                form.AddForm(listNewDevice[0].DeviceAddr);
            };
        }
        #endregion
        #region ■ 空调模块版本(空调专用)_____________
        /// <summary>
        /// 添加【空调模块版本】行(河东的中央空调)
        /// </summary>
        private void AddAirConditionerModelVersionRow()
        {
            if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway)
            {
                //不是中央空调
                return;
            }
            string caption = Language.StringByID(R.MyInternationalizationString.uAirConditionerModelVersion);
            var rowVersion = new FrameRowControl(listview.rowSpace / 2);
            rowVersion.UseClickStatu = false;
            listview.AddChidren(rowVersion);
            rowVersion.AddLeftCaption(caption, 600);
            //版本
            this.btnAirConditionerVersion = rowVersion.AddMostRightView("", 800);
            //底线
            rowVersion.AddBottomLine();
            //获取中央空调模块的版本
            this.ReadAirConditionerVersion();
        }
        #endregion
@@ -762,9 +927,19 @@
            rowUpDate.ButtonClickEvent += (sender, e) =>
            {
                if (this.deviceEnumInfo.ConcreteType != DeviceConcreteType.AirConditioner_ZbGateway)
                {
                    //这个是一般设备的升级
                    var form = new DeviceFirmwareUpdateForm();
                    form.AddForm(listNewDevice[0].DeviceAddr);
                }
                else
                {
                    //中央空调的升级的话,是特殊的
                    var form = new DeviceAirConditioner.ACZbGatewayUpdateMenuForm();
                    form.AddForm((AC)listNewDevice[0], btnNewVersion.Visible);
                }
                btnNewVersion.Visible = false;
                var form = new DeviceFirmwareInfoForm();
                form.AddForm(listNewDevice[0].DeviceAddr);
            };
            //设置设备的版本信息
@@ -880,15 +1055,21 @@
        /// </summary>
        private void ShowTopRightMenu()
        {
            int menuCount = 1;
            string deviceMenu = string.Empty;
            //检测此回路是否拥有定位功能(拿端点最小的那个回路去定位)
            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(listNewDevice[0]);
            if (canTest == true)
            if (this.deviceEnumInfo.BeloneType == DeviceBeloneType.A智能门锁)
            {
                menuCount = 2;
                canTest = false;
            }
            var frame = new TopRightMenuControl(menuCount);
            else if (this.deviceEnumInfo.BeloneType == DeviceBeloneType.A传感器
                && this.deviceEnumInfo.ConcreteType != DeviceConcreteType.Sensor_Pir)
            {
                //传感器除了Pir都没有定位功能
                canTest = false;
            }
            var frame = new TopRightMenuControl(canTest == true ? 2 : 1, 1);
            string deviceMenu = string.Empty;
            if (canTest == true)
            {
                //定位
@@ -918,16 +1099,27 @@
        /// <summary>
        /// 删除指定设备
        /// </summary>
        private async void DoDeleteDevice()
        private void DoDeleteDevice()
        {
            //删除设备
            bool result = await Common.LocalDevice.Current.DeleteDevice(listNewDevice);
            if (result == false)
            HdlThreadLogic.Current.RunThread(async () =>
            {
                return;
            }
            //关闭界面
            this.CloseForm();
                //打开进度条
                this.ShowProgressBar();
                //删除设备
                bool result = await Common.LocalDevice.Current.DeleteDevice(listNewDevice);
                //关闭进度条
                this.CloseProgressBar();
                if (result == false)
                {
                    return;
                }
                HdlThreadLogic.Current.RunMain(() =>
                {
                    //关闭界面
                    this.CloseForm();
                });
            });
        }
        #endregion
@@ -973,8 +1165,56 @@
        #endregion
        #region ■ 界面重新激活事件___________________
        /// <summary>
        /// 自身的上层界面关闭后,它自身处于最上层时,触发的事件
        /// </summary>
        public override int FormActionAgainEvent()
        {
            //重新获取中央空调模块的版本
            this.ReadAirConditionerVersion();
            return 0;
        }
        #endregion
        #region ■ 一般方法___________________________
        /// <summary>
        /// 获取中央空调模块的版本
        /// </summary>
        private void ReadAirConditionerVersion()
        {
            if (this.btnAirConditionerVersion == null)
            {
                return;
            }
            //获取中....
            this.btnAirConditionerVersion.TextID = R.MyInternationalizationString.uGetting;
            HdlThreadLogic.Current.RunThread(async () =>
            {
                //读取空调模块版本
                var result = await ((AC)listNewDevice[0]).ReadACFirewareVersionAsync();
                if (result == null || result.readACFirewareVersionResponData == null || result.readACFirewareVersionResponData.Status != 0)
                {
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        //获取失败
                        btnAirConditionerVersion.TextID = R.MyInternationalizationString.uGettingFail;
                    });
                }
                else
                {
                    HdlThreadLogic.Current.RunMain(() =>
                    {
                        btnAirConditionerVersion.Text = result.readACFirewareVersionResponData.FirewareVersion.Replace("-", string.Empty);
                    });
                }
            });
        }
        #endregion
    }
}