HDL Home App 第二版本 旧平台金堂用 正在使用
黄学彪
2020-03-06 a5b3c4bae726ef6770d4bfcbf2f4b50a37ed4a15
ZigbeeApp/Shared/Phone/Device/Light/LightControl.cs
@@ -20,7 +20,7 @@
        /// <summary>
        /// The action.
        /// </summary>
        public Action<DeviceUI, Common.Room> action;
        public Action<CommonDevice, Common.Room> action;
        /// <summary>
        /// The light image.
@@ -33,7 +33,7 @@
        /// <summary>
        /// 传过来的设备
        /// </summary>
        private DeviceUI device;
        private CommonDevice device;
        /// <summary>
        /// 传过来的房间
        /// </summary>
@@ -115,20 +115,20 @@
                    {
                        var deviceUI = device;
                        //设备为空
                        if (deviceUI.CommonDevice == null)
                        if (deviceUI == null)
                        {
                            return;
                        }
                        //是否为当前设备
                        if (deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint || deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr)
                        if (deviceUI.DeviceEpoint != common.DeviceEpoint || deviceUI.DeviceAddr != common.DeviceAddr)
                        {
                            return;
                        }
                        if (deviceUI.CommonDevice.Type == DeviceType.OnOffOutput)
                        if (deviceUI.Type == DeviceType.OnOffOutput)
                        {
                            if (common.DeviceStatusReport.CluterID == 6)
                            {
                                var light = deviceUI.CommonDevice as ToggleLight;
                                var light = deviceUI as ToggleLight;
                                light.DeviceStatusReport = common.DeviceStatusReport;
                                //记录、更新状态
                                if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0)
@@ -137,7 +137,7 @@
                                }
                                light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                deviceIMG.IsSelected = switchBtn.IsSelected = light.OnOffStatus == 1;
                                StatuBtn.Text = $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}";
                                StatuBtn.Text = Language.StringByID(R.MyInternationalizationString.Current) + "   " + UserCenter.HdlDeviceOtherLogic.Current.GetDeviceStatu(device);
                                light.LastDateTime = DateTime.Now;
                            }
                        }
@@ -156,18 +156,17 @@
                    {
                        var deviceUI = device;
                        //设备为空
                        if (deviceUI.CommonDevice == null)
                        if (deviceUI == null)
                        {
                            return;
                        }
                        //是否为当前设备
                        if (deviceUI.CommonDevice.DeviceEpoint != common.DeviceEpoint || deviceUI.CommonDevice.DeviceAddr != common.DeviceAddr)
                        if (deviceUI.DeviceEpoint != common.DeviceEpoint || deviceUI.DeviceAddr != common.DeviceAddr)
                        {
                            return;
                        }
                        deviceUI.CommonDevice.IsOnline = common.IsOnline;
                        //deviceIMG.IsSelected = switchBtn.IsSelected = deviceUI.CommonDevice.IsOnline == 1;
                        deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                        deviceUI.IsOnline = common.IsOnline;
                        deviceUI.LastDateTime = DateTime.Now;
                    }
                    catch (Exception ex)
                    {
@@ -208,10 +207,10 @@
        /// </summary>
        /// <param name="dev">Device.</param>
        /// <param name="room">Room.</param>
        public void Show(DeviceUI dev,Shared.Common.Room  room)
        public void Show(CommonDevice dev,Shared.Common.Room  room)
        {
            device = dev;
            zbGateway = this.device.CommonDevice.Gateway;
            zbGateway = this.device.Gateway;
            this.room = room;
            AddTop();
@@ -219,7 +218,7 @@
            AddBodyView(device);
            var light = dev.CommonDevice as ToggleLight;
            var light = dev as ToggleLight;
            //补上非远程
            if (light.Gateway == null)
            {
@@ -229,7 +228,7 @@
            {
                UserHomeView.ReadStatus(light, () =>
                {
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
                });
            }
            else
@@ -237,11 +236,11 @@
                //防止短时间内多次读取状态
                if (CommonPage.ReadDeviceStatuSpan < (DateTime.Now - light.LastDateTime).TotalSeconds)
                {
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device.CommonDevice);
                    ReadDeviceAttributeLogic.Instance.SendLightStatuComand(device);
                }
            }
            if(Common.Room.CurrentRoom.IsCollectInRoom(device.FileName) == false)
            if(UserCenter.HdlRoomLogic.Current.IsCollectInRoom(device) == false)
            {
                collectionBtn.IsSelected = false;
            }
@@ -289,7 +288,7 @@
        /// <summary>
        /// AddBodyView
        /// </summary>
        public void AddBodyView(DeviceUI device)
        public void AddBodyView(CommonDevice device)
        {
            bodyFrameLayout = new FrameLayout()
            {
@@ -327,7 +326,7 @@
                Width=Application.GetRealWidth(500),
                Height = Application.GetRealHeight(60),
                Gravity = Gravity.CenterHorizontal,
                Text = Common.LocalDevice.Current.GetDeviceEpointName(device.CommonDevice),
                Text = Common.LocalDevice.Current.GetDeviceEpointName(device),
                TextColor = ZigbeeColor.Current.GXCTextBlackColor,
                TextSize=15,
                IsBold=true
@@ -341,8 +340,8 @@
                Height = Application.GetRealHeight(60),
                Gravity = Gravity.CenterHorizontal,
                TextColor = ZigbeeColor.Current.GXCTextGrayColor,
                Text= $"{Language.StringByID(R.MyInternationalizationString.Current)} {device.GetDeviceStatu()}",
                TextSize =10
                Text = Language.StringByID(R.MyInternationalizationString.Current) + "   " + UserCenter.HdlDeviceOtherLogic.Current.GetDeviceStatu(device),
                TextSize = 10
            };
            itemView.AddChidren(StatuBtn);
@@ -355,7 +354,7 @@
                Gravity = Gravity.CenterHorizontal,
                UnSelectedImagePath = "Light/DeskLamp.png",
                SelectedImagePath = "Light/DeskLampSelected.png",
                IsSelected =  (device.CommonDevice as ToggleLight).OnOffStatus == 1
                IsSelected =  (device as ToggleLight).OnOffStatus == 1
            };
            itemView.AddChidren(deviceIMG);
@@ -367,7 +366,7 @@
                Gravity = Gravity.CenterHorizontal,
                UnSelectedImagePath = "Item/Switch.png",
                SelectedImagePath = "Item/SwitchSelected.png",
                IsSelected = (device.CommonDevice as ToggleLight).OnOffStatus == 1
                IsSelected = (device as ToggleLight).OnOffStatus == 1
            };
            itemView.AddChidren(switchBtn);
@@ -440,18 +439,26 @@
            zbGateway.ReportAction += UpdateDeviceControllStatu;
            switchBtn.IsSelected = !switchBtn.IsSelected;
            deviceIMG.IsSelected = !deviceIMG.IsSelected;
            StatuBtn.Text = deviceIMG.IsSelected ? $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Open)}" : $"{Language.StringByID(R.MyInternationalizationString.Current)} {Language.StringByID(R.MyInternationalizationString.Shut)}";
            StatuBtn.Text = Language.StringByID(R.MyInternationalizationString.Current) + "   ";
            if (deviceIMG.IsSelected == true)
            {
                StatuBtn.Text += Language.StringByID(R.MyInternationalizationString.uOpen1);
            }
            else
            {
                StatuBtn.Text += Language.StringByID(R.MyInternationalizationString.Close);
            }
            if (switchBtn.IsSelected == true)
            {
                (device.CommonDevice as ToggleLight).SwitchControl(1);
                (device as ToggleLight).SwitchControl(1);
            }
            else
            {
                (device.CommonDevice as ToggleLight).SwitchControl(0);
                (device as ToggleLight).SwitchControl(0);
            }
            //控制延时回调
            DeviceUI.SendCommandDelayAction(device.CommonDevice, () =>
            UserCenter.HdlDeviceOtherLogic.Current.SendCommandDelayAction(device, () =>
             {
                 if(Parent==null)
                 {
@@ -460,7 +467,7 @@
                 RemoveUpdateControlDeviceStatuAction();
                 if (sendedControlCommand==false)
                 {
                     DeviceUI.ShowStatuTip(R.MyInternationalizationString.FAIL);
                     UserCenter.HdlDeviceOtherLogic.Current.ShowStatuTip(R.MyInternationalizationString.FAIL);
                 }
             });
        }
@@ -500,12 +507,12 @@
            //collection
            if ((sender as Button).IsSelected)
            {
                Shared.Common.Room.CurrentRoom.GetLoveRoom().DeleteDevice(device.FileName);
                UserCenter.HdlRoomLogic.Current.DeleteLoveDevice(device);
                (sender as Button).IsSelected = false;
            }
            else
            {
                Shared.Common.Room.CurrentRoom.GetLoveRoom().AddDevice(device.FileName);
            {
                UserCenter.HdlRoomLogic.Current.AddLoveDevice(device);
                (sender as Button).IsSelected = true;
            }
        }
@@ -530,7 +537,7 @@
                return;
            }
            var tempDevice = (CommonDevice)objValue;
            if (tempDevice.DeviceEpoint != this.device.CommonDevice.DeviceEpoint || tempDevice.DeviceAddr != this.device.CommonDevice.DeviceAddr)
            if (tempDevice.DeviceEpoint != this.device.DeviceEpoint || tempDevice.DeviceAddr != this.device.DeviceAddr)
            {
                //不是当前设备的推送,则不处理
                return;