From 9a4b76398009cf76c508d61f7e48fb6f5cb7ac2d Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期二, 21 七月 2020 09:46:53 +0800
Subject: [PATCH] 请合并最新多功能面板代码

---
 ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs |  269 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 269 insertions(+), 0 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
new file mode 100755
index 0000000..ee7df2a
--- /dev/null
+++ b/ZigbeeApp/Shared/Phone/Device/CommonForm/RoomView.cs
@@ -0,0 +1,269 @@
+锘縰sing System;
+using Shared.Common;
+using Shared.Phone.UserCenter;
+using ZigBee.Device;
+
+namespace Shared.Phone.Device.CommonForm
+{
+    public class RoomView : FrameLayoutBase
+    {
+        /// <summary>
+        /// Room
+        /// </summary>
+        private Common.Room room;
+
+        FrameLayout roomNameBackground;
+
+        FrameLayout roomTemperatureBackground;
+
+        Button roomListBtn;
+
+        Button temperatureText;
+
+        Button humidityText;
+        /// <summary>
+        /// 娓╁害璁惧
+        /// </summary>
+        private CommonDevice temperDevice = null;
+        /// <summary>
+        /// 婀垮害璁惧
+        /// </summary>
+        private CommonDevice humidDevice = null;
+
+        /// <summary>
+        /// RoomView
+        /// </summary>
+        /// <param name="x"></param>
+        /// <param name="y"></param>
+        public RoomView(int x, int y)
+        {
+            X = Application.GetRealWidth(x);
+            Y = Application.GetRealHeight(y);
+            Width = Application.GetRealWidth(717);
+            Height = Application.GetRealHeight(478);
+        }
+
+        /// <summary>
+        /// Init
+        /// </summary>
+        /// <param name="r"></param>
+        public void Init(Common.Room r)
+        {
+            this.RemoveAll();
+
+            this.room = r;
+
+            this.temperDevice = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
+
+            this.humidDevice = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
+
+            var roomBackView = new FrameLayout()
+            {
+                Width = Application.GetRealWidth(717),
+                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),
+                Tag = "R"
+            };
+            roomBackView.AddChidren(roomImg);
+
+            //鍔犱釜鐗规畩鐨勯伄缃�
+            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),
+                Width = Application.GetRealWidth(200),
+                Height = Application.GetRealHeight(80),
+                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor2
+            };
+            roomBackView.AddChidren(roomNameBackground);
+            roomNameBackground.SetCornerWithSameRadius(Application.GetRealHeight(40), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
+
+            var roomName = new Button()
+            {
+                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);
+
+            roomTemperatureBackground = new FrameLayout
+            {
+                X = Application.GetRealWidth(29),
+                Y = Application.GetRealHeight(374),
+                Width = Application.GetRealWidth(400),
+                Height = Application.GetRealHeight(80),
+                BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor2
+            };
+            roomBackView.AddChidren(roomTemperatureBackground);
+            roomTemperatureBackground.SetCornerWithSameRadius(Application.GetRealHeight(40), HDLUtils.RectCornerTopRight | HDLUtils.RectCornerBottomRight);
+
+            var temperatureIcon = new Button
+            {
+                X = Application.GetRealWidth(12),
+                Width = this.GetPictrueRealSize(58),
+                Height = this.GetPictrueRealSize(58),
+                Gravity = Gravity.CenterVertical,
+                UnSelectedImagePath = "Room/Temperature.png"
+            };
+            roomTemperatureBackground.AddChidren(temperatureIcon);
+
+            temperatureText = new Button
+            {
+                X = Application.GetRealWidth(69),
+                Width = Application.GetRealWidth(120),
+                Text = "--鈩�",
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterLeft
+            };
+            if (LocalDevice.Current.GetDevice(room.TemperatrueDevice) != null)
+            {
+                //杩欎釜璁惧瑕佸瓨鍦ㄦ湰鍦版墠琛�
+                temperatureText.Text = room.Temperatrue == 0 ? "0.0鈩�" : room.Temperatrue.ToString() + "鈩�";
+            }
+            roomTemperatureBackground.AddChidren(temperatureText);
+            temperatureText.Width = temperatureText.GetTextWidth() + Application.GetRealWidth(60);
+
+            var humidityIcon = new Button
+            {
+                X = temperatureText.Right,
+                Width = this.GetPictrueRealSize(58),
+                Height = this.GetPictrueRealSize(58),
+                Gravity = Gravity.CenterVertical,
+                UnSelectedImagePath = "Room/Humidity.png"
+            };
+            roomTemperatureBackground.AddChidren(humidityIcon);
+
+            humidityText = new Button
+            {
+                X = humidityIcon.Right,
+                Width = Application.GetRealWidth(120),
+                Text = "--%",
+                TextSize = 14,
+                TextAlignment = TextAlignment.CenterLeft
+            };
+            if (LocalDevice.Current.GetDevice(room.HumidityDevice) != null)
+            {
+                //杩欎釜璁惧瑕佸瓨鍦ㄦ湰鍦版墠琛�
+                humidityText.Text = room.Humidity == 0 ? "0.0%" : room.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)
+            {
+                //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护
+                var dev = Common.LocalDevice.Current.GetDevice(room.TemperatrueDevice);
+                HdlDeviceAttributeLogic.Current.SendTemperatureStatuComand(dev);
+            }
+
+            if (string.IsNullOrEmpty(room.HumidityDevice) == false)
+            {
+                var dev = Common.LocalDevice.Current.GetDevice(room.HumidityDevice);
+                HdlDeviceAttributeLogic.Current.SendHumidityStatuComand(dev);
+            }
+
+            roomListBtn = new Button()
+            {
+                X = roomBackView.Width - Application.GetRealWidth(100 + 20),
+                Y = Application.GetRealHeight(20),
+                Width = this.GetPictrueRealSize(100),
+                Height = this.GetPictrueRealSize(100),
+                UnSelectedImagePath = "Room/List.png",
+            };
+            roomBackView.AddChidren(roomListBtn);
+
+            roomListBtn.MouseUpEventHandler += (send, e) =>
+            {
+                CommonPage.Instance.IsDrawerLockMode = true;
+
+                var form = new UserCenter.Residence.EditorRoomInforForm();
+                form.AddForm(room);
+                form.FinishEditorEvent += (roomName2) =>
+                {
+                    //閲嶆柊鍒锋柊鎺т欢
+                    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(() =>
+                        {
+                            if (((TemperatureSensor)temperDevice).Temperatrue == 0)
+                            {
+                                temperatureText.Text = "0.0鈩�";
+                            }
+                            else
+                            {
+                                temperatureText.Text = ((TemperatureSensor)temperDevice).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("Humidity", 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