黄学彪
2020-07-13 f3e65daca7978b21b5888f49b1bf35e1a6e5d4fd
ZigbeeApp/Shared/Phone/UserCenter/Device/Panel/PanelFangyueFreshAirButtonSettionForm.cs
@@ -1,6 +1,8 @@
using System;
using System.Collections.Generic;
using Shared.Common;
using Shared.Phone.UserCenter.Device.Bind;
using Shared.Phone.UserCenter.DeviceBind;
using ZigBee.Common;
using ZigBee.Device;
@@ -53,6 +55,10 @@
        /// 被绑目标是PM2.5
        /// </summary>
        private CommonDevice bindPMDev;
        // <summary>
        /// 按键中被绑定的目标列表
        /// </summary>
        public List<BindObj.BindListResponseObj> bindList = new List<BindObj.BindListResponseObj>();
        #endregion
@@ -66,7 +72,7 @@
        {
            this.deviceObj = i_device;
            //获取数据
            ReadDoorLockUserInfo(deviceObj);
            InitInfo(deviceObj);
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uPanelSettion));
@@ -143,7 +149,7 @@
        /// <summary>
        /// 初始化数据
        /// </summary>
        void ReadDoorLockUserInfo(CommonDevice curControlDev)
        void InitInfo(CommonDevice curControlDev)
        {
            System.Threading.Tasks.Task.Run(async () =>
            {
@@ -178,38 +184,153 @@
                }
            });
        }
        /// <summary>
        /// 获取绑定目标
        /// </summary>
        /// <param name="curControlDev"></param>
        /// <returns></returns>
        private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curDev)
        {
            bool result = false;
            //获取面板中存在的绑定目标
            FreshAir curControlDev = curDev as FreshAir;
            var panelBindListRes = HdlDeviceBindLogic.Current.GetDeviceBindAsync(curControlDev);
            if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
            {
                bindList = panelBindListRes.getAllBindResponseData.BindList;
                foreach (var bDev in bindList)
                {
                    var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
                    if (device == null)
                    {
                        continue;
                    }
                    if (device.Type == DeviceType.FreshAir)
                    {
                        //获取设备类型的
                        var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                        //新风面板的新风设备,则不显示
                        if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                        {
                            continue;
                        }
                        if (string.IsNullOrEmpty(bDev.ESName))
                        {
                            bindFreshAirName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                        }
                        else
                        {
                            bindFreshAirName = bDev.ESName;
                        }
                        bindFreshAirDev = device;
                    }
                    if (device.Type == DeviceType.TemperatureSensor)
                    {
                        var bD = device as TemperatureSensor;
                        if (bD.SensorDiv == 1)
                        {
                            if (string.IsNullOrEmpty(bDev.ESName))
                            {
                                bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                            }
                            else
                            {
                                bindTemperatureName = bDev.ESName;
                            }
                            bindTemperatureDev = device;
                        }
                        if (bD.SensorDiv == 2)
                        {
                            if (string.IsNullOrEmpty(bDev.ESName))
                            {
                                bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                            }
                            else
                            {
                                bindHumidityName = bDev.ESName;
                            }
                            bindHumidityDev = device;
                        }
                    }
                    if (device.Type == DeviceType.FreshAirHumiditySensor)
                    {
                        if (string.IsNullOrEmpty(bDev.ESName))
                        {
                            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                        }
                        else
                        {
                            bindHumidityName = bDev.ESName;
                        }
                        bindHumidityDev = device;
                    }
                    if (device.Type == DeviceType.PMSensor)
                    {
                        if (bDev.BindCluster == 1026)
                        {
                            bindTemperatureName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.TemperatureSensor);
                            bindTemperatureDev = device;
                        }
                        if (bDev.BindCluster == 1029)
                        {
                            bindHumidityName = Common.LocalDevice.Current.GetDeviceEpointName(device) + "-" + Language.StringByID(R.MyInternationalizationString.HumiditySensor);
                            bindHumidityDev = device;
                        }
                        if (bDev.BindCluster == 1066)
                        {
                            if (string.IsNullOrEmpty(bDev.ESName))
                            {
                                bindPmName = Common.LocalDevice.Current.GetDeviceEpointName(device);
                            }
                            else
                            {
                                bindPmName = bDev.ESName;
                            }
                            bindPMDev = device;
                        }
                    }
                }
                result = true;
            }
            return result;
        }
        #endregion
        #region ■ 新风目标_________________________ 
        /// <summary>
        ///  新风目标行
        /// </summary>
        private void AddFreshAirRow()
        {
            //新风目标
            var rowNewWind = new FrameRowControl(listview.rowSpace / 2);
            listview.AddChidren(rowNewWind);
            rowNewWind.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewWindTarget), 600);
            //底线
            rowNewWind.AddBottomLine();
            //右箭头
            rowNewWind.AddRightArrow();
            //新风目标
            var rowNewWind = new FrameRowControl(listview.rowSpace / 2);
            listview.AddChidren(rowNewWind);
            rowNewWind.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uNewWindTarget), 600);
            //底线
            rowNewWind.AddBottomLine();
            //右箭头
            rowNewWind.AddRightArrow();
            var msg = Language.StringByID(R.MyInternationalizationString.nothing);
            if (!string.IsNullOrEmpty(bindFreshAirName))
            {
                msg = bindFreshAirName;
            }
            var btnNewWindStatu = rowNewWind.AddMostRightView(msg, 700);
            var btnNewWindStatu = rowNewWind.AddMostRightView(msg, 700);
            rowNewWind.ButtonClickEvent += (sender, e) =>
            {
                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindFreshAirDev, 1);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
            rowNewWind.ButtonClickEvent += (sender, e) =>
            {
                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindFreshAirDev, BindInfo.BindType.FreshAir);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                addDevicePage.Show();
                addDevicePage.actionFreshAirTarget += (bindName) =>
                paneTargetsBaseFormp.Show();
                paneTargetsBaseFormp.actionFreshAirTarget += (bindName) =>
                {
                    Application.RunOnMainThread(() =>
                    {
@@ -223,70 +344,9 @@
                        }
                    });
                };
            };
        }
        #endregion
        /// <summary>
        /// 获取绑定目标
        /// </summary>
        /// <param name="curControlDev"></param>
        /// <returns></returns>
        private async System.Threading.Tasks.Task<bool> GetBindName(CommonDevice curDev)
        {
            bool result = false;
            //获取面板中存在的绑定目标
            FreshAir curControlDev = curDev as FreshAir;
            var panelBindListRes = await curControlDev.GetDeviceBindAsync();
            if (panelBindListRes != null && panelBindListRes.getAllBindResponseData != null)
            {
                foreach (var bDev in panelBindListRes.getAllBindResponseData.BindList)
                {
                    curControlDev.bindList.Add(bDev);
                    var device = Common.LocalDevice.Current.GetDevice(bDev.BindMacAddr, bDev.BindEpoint);
                    if (device.Type == DeviceType.FreshAir)
                    {
                        //获取设备类型的
                        var deviceEnumInfo = Common.LocalDevice.Current.GetMyDeviceEnumInfo(new List<CommonDevice>() { device });
                        //新风面板的新风设备,则不显示
                        if (deviceEnumInfo.ConcreteType == Common.DeviceConcreteType.ButtonPanel_FangyueFreshAir)
                        {
                            continue;
                        }
                        bindFreshAirName = device.DeviceEpointName;
                        bindFreshAirDev = device;
                    }
                    if (device.Type == DeviceType.TemperatureSensor)
                    {
                        var bD = device as TemperatureSensor;
                        if (bD.SensorDiv == 1)
                        {
                            bindTemperatureName = device.DeviceEpointName;
                            bindTemperatureDev = device;
                        }
                        if (bD.SensorDiv == 2)
                        {
                            bindHumidityName = device.DeviceEpointName;
                            bindHumidityDev = device;
                        }
                    }
                    if (device.Type == DeviceType.FreshAirHumiditySensor)
                    {
                        bindHumidityName = device.DeviceEpointName;
                        bindHumidityDev = device;
                    }
                    if (device.Type == DeviceType.PMSensor)
                    {
                        bindPmName = device.DeviceEpointName;
                        bindPMDev = device;
                    }
                }
                result = true;
            }
            return result;
        }
        #region ■ PM2.5来源_________________________ 
        /// <summary>
@@ -310,12 +370,11 @@
            var btnPMStatu = rowPM.AddMostRightView(msg, 700);
            rowPM.ButtonClickEvent += (sender, e) =>
            {
                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindPMDev, 4);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindPMDev, BindInfo.BindType.PM);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                addDevicePage.Show();
                addDevicePage.actionPMTarget += (bindName) =>
                paneTargetsBaseFormp.Show();
                paneTargetsBaseFormp.actionPMTarget += (bindName) =>
                {
                    Application.RunOnMainThread(() =>
                    {
@@ -355,12 +414,11 @@
            var btnTemperatureStatu = rowTemPerature.AddMostRightView(msg, 700);
            rowTemPerature.ButtonClickEvent += (sender, e) =>
            {
                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindTemperatureDev, 2);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindTemperatureDev, BindInfo.BindType.Temperature);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                addDevicePage.Show();
                addDevicePage.actionTemperatureTarget += (bindName) =>
                paneTargetsBaseFormp.Show();
                paneTargetsBaseFormp.actionTemperatureTarget += (bindName) =>
                {
                    Application.RunOnMainThread(() =>
                    {
@@ -400,12 +458,11 @@
            var btnHumidityStatu = rowHumidity.AddMostRightView(msg, 700);
            rowHumidity.ButtonClickEvent += (sender, e) =>
            {
                var addDevicePage = new Shared.Phone.UserCenter.DeviceBind.PanelFangyueFreshAirTargetsForm(this.deviceObj, bindHumidityDev, 3);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(addDevicePage);
                var paneTargetsBaseFormp = new PaneTargetsBaseForm(this.deviceObj, bindHumidityDev, BindInfo.BindType.Humidity);
                Shared.Phone.UserView.HomePage.Instance.AddChidren(paneTargetsBaseFormp);
                Shared.Phone.UserView.HomePage.Instance.PageIndex += 1;
                addDevicePage.Show();
                addDevicePage.actionHumidityTarget += (bindName) =>
                paneTargetsBaseFormp.Show();
                paneTargetsBaseFormp.actionHumidityTarget += (bindName) =>
                {
                    Application.RunOnMainThread(() =>
                    {
@@ -439,13 +496,8 @@
            rowLight.AddRightArrow();
            rowLight.ButtonClickEvent += (sender, e) =>
            {
                //给新风面板建立一个新的支持面板对象,用200端点设置
                var panel = new Panel();
                panel.DeviceAddr = this.deviceObj.DeviceAddr;
                panel.DeviceEpoint = 200;
                panel.CurrentGateWayId = this.deviceObj.CurrentGateWayId;
                var form = new PanelFangyueFreshAirBackLightSettionForm();
                form.AddForm(panel);
                var form = new PanelBrightnessAdjustForm();
                form.AddForm(this.deviceObj);
            };
        }
        #endregion