From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001 From: 黄学彪 <hxb@hdlchina.com.cn> Date: 星期四, 17 十二月 2020 09:07:13 +0800 Subject: [PATCH] 新云端Ver1.3 --- ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs | 273 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 150 insertions(+), 123 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs index 7ed1c76..4bbe8a8 100755 --- a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs +++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs @@ -1,27 +1,34 @@ 锘縰sing System; using Shared.Common; using Shared.Phone.UserCenter; -using Shared.Phone.UserView; +using ZigBee.Device; namespace Shared.Phone.Device.CommonForm { - public class RoomView:FrameLayout + public class RoomView : FrameLayoutBase { /// <summary> /// Room /// </summary> private Common.Room room; - /// <summary> - /// action - /// </summary> - public Action action; - public override void RemoveFromParent() - { - HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); - HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); - base.RemoveFromParent(); - } + FrameLayout roomNameBackground; + + FrameLayout roomTemperatureBackground; + + Button roomListBtn; + + Button temperatureText; + + Button humidityText; + /// <summary> + /// 娓╁害璁惧 + /// </summary> + private CommonDevice temperDevice = null; + /// <summary> + /// 婀垮害璁惧 + /// </summary> + private CommonDevice humidDevice = null; /// <summary> /// RoomView @@ -42,23 +49,40 @@ /// <param name="r"></param> public void Init(Common.Room r) { + this.RemoveAll(); + this.room = r; + + this.temperDevice = HdlDeviceCommonLogic.Current.GetDevice(room.TemperatrueDevice); + + this.humidDevice = HdlDeviceCommonLogic.Current.GetDevice(room.HumidityDevice); var roomBackView = new FrameLayout() { Width = Application.GetRealWidth(717), - Height = Application.GetRealHeight(478) + Height = Application.GetRealHeight(478), + Radius = (uint)Application.GetRealHeight(17), + Tag = "R" }; AddChidren(roomBackView); var roomImg = new ImageView() { ImagePath = room.BackgroundImageType == 0 ? room.BackgroundImage : System.IO.Path.Combine(Config.Instance.FullPath, room.BackgroundImage), - Radius = (uint)Application.GetRealHeight(17) + Radius = (uint)Application.GetRealHeight(17), + Tag = "R" }; roomBackView.AddChidren(roomImg); - var roomNameBackground = new FrameLayout + //鍔犱釜鐗规畩鐨勯伄缃� + var frameBackGroudTemp = new FrameLayout(); + frameBackGroudTemp.Width = roomBackView.Width; + frameBackGroudTemp.Height = roomBackView.Height; + frameBackGroudTemp.Radius = (uint)Application.GetRealHeight(17); + frameBackGroudTemp.BackgroundColor = UserCenterColor.Current.PictrueZhezhaoColor; + roomBackView.AddChidren(frameBackGroudTemp); + + roomNameBackground = new FrameLayout { X = Application.GetRealWidth(29), Y = Application.GetRealHeight(282), @@ -71,19 +95,23 @@ var roomName = new Button() { - X = Application.GetRealWidth(5), + X = Application.GetRealWidth(29), Width = Application.GetRealWidth(190), Text = room.Name, TextColor = ZigbeeColor.Current.GXCTextWhiteColor, + TextSize = 10, + TextAlignment = TextAlignment.CenterLeft, + IsBold = true }; roomNameBackground.AddChidren(roomName); + roomNameBackground.Width = (roomName.GetTextWidth() + Application.GetRealWidth(100)) > Application.GetRealWidth(600) ? Application.GetRealWidth(600) : roomName.GetTextWidth() + Application.GetRealWidth(100); + roomName.Width = roomNameBackground.Width - Application.GetRealWidth(40); - - 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 }; @@ -93,137 +121,78 @@ var temperatureIcon = new Button { X = Application.GetRealWidth(12), - Width = Application.GetMinRealAverage(58), - Height = Application.GetMinRealAverage(58), + Width = this.GetPictrueRealSize(58), + Height = this.GetPictrueRealSize(58), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Room/Temperature.png" }; roomTemperatureBackground.AddChidren(temperatureIcon); - var temperatureText = new Button + temperatureText = new Button { X = Application.GetRealWidth(69), - Width = Application.GetRealWidth(86), - Height = Application.GetRealHeight(58), - Gravity = Gravity.CenterVertical, - Text = "26鈩�" + Width = Application.GetRealWidth(120), + Text = "--鈩�", + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft }; + if (this.temperDevice != null) + { + //杩欎釜璁惧瑕佸瓨鍦ㄦ湰鍦版墠琛� + decimal temperatrue = (decimal)temperDevice.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.GetField, null, temperDevice, null); + temperatureText.Text = temperatrue == 0 ? "0.0鈩�" : temperatrue.ToString() + "鈩�"; + } roomTemperatureBackground.AddChidren(temperatureText); + temperatureText.Width = temperatureText.GetTextWidth() + Application.GetRealWidth(60); var humidityIcon = new Button { - X = Application.GetRealWidth(179), - Width = Application.GetMinRealAverage(58), - Height = Application.GetMinRealAverage(58), + X = temperatureText.Right, + Width = this.GetPictrueRealSize(58), + Height = this.GetPictrueRealSize(58), Gravity = Gravity.CenterVertical, UnSelectedImagePath = "Room/Humidity.png" }; roomTemperatureBackground.AddChidren(humidityIcon); - var humidityText = new Button + humidityText = new Button { - X = Application.GetRealWidth(236), - Width = Application.GetRealWidth(86), - Height = Application.GetRealHeight(58), - Gravity = Gravity.CenterVertical, - Text = "13%" + X = humidityIcon.Right, + Width = Application.GetRealWidth(120), + Text = "--%", + TextSize = 14, + TextAlignment = TextAlignment.CenterLeft }; - roomTemperatureBackground.AddChidren(humidityText); + if (this.humidDevice != null) + { + //杩欎釜璁惧瑕佸瓨鍦ㄦ湰鍦版墠琛� + decimal humidity = (decimal)humidDevice.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.GetField, null, humidDevice, null); + humidityText.Text = humidity == 0 ? "0.0%" : humidity.ToString() + "%"; + } + roomTemperatureBackground.AddChidren(humidityText); + humidityText.Width = humidityText.GetTextWidth() + Application.GetRealWidth(60); + roomTemperatureBackground.Width = (humidityText.Width + temperatureText.Width + Application.GetRealWidth(150)) > Application.GetRealWidth(600) ? Application.GetRealWidth(600) : (humidityText.Width + temperatureText.Width + Application.GetRealWidth(150)); if (string.IsNullOrEmpty(room.TemperatrueDevice) == false) { - 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) - { - return; - } - //绉婚櫎鎺変簨浠� - HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); - - foreach (var data in report.DeviceStatusReport.AttriBute) - { - if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) - { - if (data.AttriButeData == 0) - { - //0鈩� - temperatureText.Text = "0.0鈩�"; - } - else if (data.AttriButeData > 32767) - { - //璐熸暟(鐗规畩澶勭悊) - string strValue = (data.AttriButeData - 65536).ToString(); - //灏忔暟鐐归渶瑕佷竴浣� - strValue = strValue.Substring(0, strValue.Length - 1); - temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; - } - else - { - //灏忔暟鐐归渶瑕佷竴浣� - string strValue = data.AttriButeData.ToString(); - strValue = strValue.Substring(0, strValue.Length - 1); - temperatureText.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; - } - } - } - })); //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护 - var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice); - if (dev != null) - { - (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); - } + var dev = HdlDeviceCommonLogic.Current.GetDevice(room.TemperatrueDevice); + HdlDeviceAttributeLogic.Current.SendTemperatureStatuComand(dev); } if (string.IsNullOrEmpty(room.HumidityDevice) == false) { - HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); - HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => - { - string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); - if (room.HumidityDevice != mainKeys) - { - return; - } - //绉婚櫎鎺変簨浠� - HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); - foreach (var data in report.DeviceStatusReport.AttriBute) - { - if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) - { - if (data.AttriButeData == 0) - { - //0 - humidityText.Text = "0.0%"; - } - else - { - //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) - string strValue = data.AttriButeData.ToString(); - strValue = strValue.Substring(0, strValue.Length - 1); - humidityText.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; - } - } - } - }); - //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护 - var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice); - if (dev != null) - { - (dev as ZigBee.Device.TemperatureSensor).ReadTemperatureOrHumidity(); - } + var dev = HdlDeviceCommonLogic.Current.GetDevice(room.HumidityDevice); + HdlDeviceAttributeLogic.Current.SendHumidityStatuComand(dev); } - var roomListBtn = new Button() + roomListBtn = new Button() { X = roomBackView.Width - Application.GetRealWidth(100 + 20), Y = Application.GetRealHeight(20), - Width = Application.GetMinRealAverage(100), - Height = Application.GetMinRealAverage(100), + Width = this.GetPictrueRealSize(100), + Height = this.GetPictrueRealSize(100), UnSelectedImagePath = "Room/List.png", }; roomBackView.AddChidren(roomListBtn); @@ -231,16 +200,74 @@ roomListBtn.MouseUpEventHandler += (send, e) => { CommonPage.Instance.IsDrawerLockMode = true; - var editRoom = new Device.Room.EditRoom(); - HomePage.Instance.AddChidren(editRoom); - HomePage.Instance.PageIndex += 1; - editRoom.Show(room); - editRoom.action += () => + + var form = new UserCenter.Residence.EditorRoomInforForm(); + form.AddForm(room); + form.FinishEditorEvent += (roomName2) => { - action?.Invoke(); + //閲嶆柊鍒锋柊鎺т欢 + this.Init(this.room); }; }; + //璁惧灞炴�т笂鎶� + HdlGatewayReceiveLogic.Current.AddAttributeEvent("RoomView" + this.room.Id, ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => + { + if (this.temperDevice != null) + { + //娓╁害璁惧 + if (report.DeviceAddr == temperDevice.DeviceAddr && report.DeviceEpoint == temperDevice.DeviceEpoint) + { + HdlThreadLogic.Current.RunMain(() => + { + decimal temperatrue = (decimal)temperDevice.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.GetField, null, temperDevice, null); + if (temperatrue == 0) + { + temperatureText.Text = "0.0鈩�"; + } + else + { + temperatureText.Text = temperatrue + "鈩�"; + } + }, ShowErrorMode.NO); + } + } + if (this.humidDevice != null) + { + //婀垮害璁惧 + if (report.DeviceAddr == humidDevice.DeviceAddr && report.DeviceEpoint == humidDevice.DeviceEpoint) + { + HdlThreadLogic.Current.RunMain(() => + { + decimal humidity = (decimal)humidDevice.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.GetField, null, humidDevice, null); + if (humidity == 0) + { + humidityText.Text = "--%"; + } + else + { + humidityText.Text = humidity + "%"; + } + }, ShowErrorMode.NO); + } + } + }); + } + /// <summary> + /// HideName + /// </summary> + public void HideName(bool statu) + { + roomNameBackground.Visible = roomTemperatureBackground.Visible = roomListBtn.Visible = !statu; + } + + /// <summary> + /// + /// </summary> + public override void RemoveFromParent() + { + HdlGatewayReceiveLogic.Current.RemoveEvent("RoomView" + this.room.Id); + base.RemoveFromParent(); } } } -- Gitblit v1.8.0