gxc
2019-12-25 944b87b6bcccb095cd73f13f4410fb20faf48f74
ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
@@ -16,10 +16,16 @@
        /// </summary>
        public Action action;
        FrameLayout roomNameBackground;
        FrameLayout roomTemperatureBackground;
        Button roomListBtn;
        public override void RemoveFromParent()
        {
            HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
            HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
            HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
            HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
            base.RemoveFromParent();
        }
@@ -58,7 +64,7 @@
            };
            roomBackView.AddChidren(roomImg);
            var roomNameBackground = new FrameLayout
            roomNameBackground = new FrameLayout
            {
                X = Application.GetRealWidth(29),
                Y = Application.GetRealHeight(282),
@@ -79,11 +85,11 @@
            roomNameBackground.AddChidren(roomName);
            var roomTemperatureBackground = new FrameLayout
            roomTemperatureBackground = new FrameLayout
            {
                X = Application.GetRealWidth(29),
                Y = Application.GetRealHeight(374),
                Width = Application.GetRealWidth(340),
                Width = Application.GetRealWidth(400),
                Height = Application.GetRealHeight(80),
                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor2
            };
@@ -103,16 +109,16 @@
            var temperatureText = new Button
            {
                X = Application.GetRealWidth(69),
                Width = Application.GetRealWidth(86),
                Width = Application.GetRealWidth(120),
                Height = Application.GetRealHeight(58),
                Gravity = Gravity.CenterVertical,
                Text = "26℃"
                Text = $"{room.Temperatrue}℃"
            };
            roomTemperatureBackground.AddChidren(temperatureText);
            var humidityIcon = new Button
            {
                X = Application.GetRealWidth(179),
                X = Application.GetRealWidth(200),
                Width = Application.GetMinRealAverage(58),
                Height = Application.GetMinRealAverage(58),
                Gravity = Gravity.CenterVertical,
@@ -122,19 +128,19 @@
            var humidityText = new Button
            {
                X = Application.GetRealWidth(236),
                Width = Application.GetRealWidth(86),
                X = Application.GetRealWidth(260),
                Width = Application.GetRealWidth(120),
                Height = Application.GetRealHeight(58),
                Gravity = Gravity.CenterVertical,
                Text = "13%"
                Text = $"{room.Humidity}%"
            };
            roomTemperatureBackground.AddChidren(humidityText);
            if (string.IsNullOrEmpty(room.TemperatrueDevice) == false)
            {
                HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
                HdlDeviceAttributeLogic.Current.AddAttributeEvent("TemperatrueDevice", "DeviceStatusReport", (Action<ZigBee.Device.CommonDevice>)((report) =>
                HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
                HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, (Action<ZigBee.Device.CommonDevice>)((report) =>
                {
                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                    if (room.TemperatrueDevice != mainKeys)
@@ -142,7 +148,7 @@
                        return;
                    }
                    //移除掉事件
                    HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice");
                    HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
                    foreach (var data in report.DeviceStatusReport.AttriBute)
                    {
@@ -152,6 +158,7 @@
                            {
                                //0℃
                                temperatureText.Text = "0.0℃";
                                room.Temperatrue = 0;
                            }
                            else if (data.AttriButeData > 32767)
                            {
@@ -160,6 +167,7 @@
                                //小数点需要一位
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                                room.Temperatrue = int.Parse(strValue) * 0.1;
                            }
                            else
                            {
@@ -167,6 +175,7 @@
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                                room.Temperatrue = int.Parse(strValue) * 0.1;
                            }
                        }
                    }
@@ -181,8 +190,8 @@
            if (string.IsNullOrEmpty(room.HumidityDevice) == false)
            {
                HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
                HdlDeviceAttributeLogic.Current.AddAttributeEvent("HumidityDevice", "DeviceStatusReport", (report) =>
                HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
                HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice",  ReceiveComandDiv.A设备属性上报, (report) =>
                {
                    string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                    if (room.HumidityDevice != mainKeys)
@@ -190,7 +199,7 @@
                        return;
                    }
                    //移除掉事件
                    HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice");
                    HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
                    foreach (var data in report.DeviceStatusReport.AttriBute)
                    {
                        if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
@@ -199,6 +208,7 @@
                            {
                                //0
                                humidityText.Text = "0.0%";
                                room.Humidity = 0;
                            }
                            else
                            {
@@ -206,6 +216,7 @@
                                string strValue = data.AttriButeData.ToString();
                                strValue = strValue.Substring(0, strValue.Length - 1);
                                humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
                                room.Humidity = int.Parse(strValue) * 0.1;
                            }
                        }
                    }
@@ -218,7 +229,8 @@
                }
            }
            var roomListBtn = new Button()
            roomListBtn = new Button()
            {
                X = roomBackView.Width - Application.GetRealWidth(100 + 20),
                Y = Application.GetRealHeight(20),
@@ -240,7 +252,14 @@
                    action?.Invoke();
                };
            };
        }
        /// <summary>
        /// HideName
        /// </summary>
        public void HideName(bool statu)
        {
            roomNameBackground.Visible = roomTemperatureBackground.Visible = roomListBtn.Visible = !statu;
        }
    }
}