WJC
2020-03-12 c47c3ec2488961b3a006aaebcb03dba582f8b19b
ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs
@@ -12,7 +12,7 @@
        #region ■ 变量声明___________________________
        /// <summary>
        /// 结束编辑名称的事件
        /// 结束编辑的事件
        /// </summary>
        public Action<string> FinishEditorEvent = null;
        /// <summary>
@@ -42,8 +42,18 @@
        /// <param name="i_editorRoom">编辑的房间对象</param>
        public void ShowForm(Common.Room i_editorRoom = null)
        {
            //弄一点初始值
            this.editorRoom = i_editorRoom;
            this.cloneRoom = i_editorRoom.CloneRoomClass();
            this.cloneRoom = HdlRoomLogic.Current.CloneRoomClass(i_editorRoom);
            if (i_editorRoom.HumidityDevice == string.Empty)
            {
                this.cloneRoom.Humidity = -1000;
            }
            if (i_editorRoom.TemperatrueDevice == string.Empty)
            {
                this.cloneRoom.Temperatrue = -1000;
            }
            //设置头部信息
            base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorRoom));
@@ -60,17 +70,12 @@
            this.ClearBodyFrame();
            //房间图片
            var framePic = new FrameLayout();
            framePic.Y = Application.GetRealHeight(60);
            framePic.Width = Application.GetMinRealAverage(887);
            framePic.Height = Application.GetMinRealAverage(444);
            framePic.Gravity = Gravity.CenterHorizontal;
            framePic.Radius = 8;
            framePic.BackgroundColor = UserCenterColor.Current.BodyFrameLayout;
            bodyFrameLayout.AddChidren(framePic);
            var btnPic = new ImageView();
            btnPic.Radius = 8;
            framePic.AddChidren(btnPic);
            btnPic.Y = Application.GetRealHeight(60);
            btnPic.Width = Application.GetMinRealAverage(887);
            btnPic.Height = Application.GetMinRealAverage(444);
            btnPic.Radius = (uint)Application.GetRealHeight(17);
            btnPic.Gravity = Gravity.CenterHorizontal;
            if (this.editorRoom.BackgroundImageType == 0)
            {
                btnPic.ImagePath = this.editorRoom.BackgroundImage;
@@ -79,13 +84,17 @@
            {
                btnPic.ImageBytes = Common.Global.ReadFileByHomeId(this.editorRoom.BackgroundImage);
            }
            btnPic.MouseUpEventHandler += (sender, e) =>
            bodyFrameLayout.AddChidren(btnPic);
            var btnShadow = new PicViewControl(916, 487);
            btnShadow.Y = btnPic.Y;
            btnShadow.Gravity = Gravity.CenterHorizontal;
            btnShadow.UnSelectedImagePath = "Room/RoomShadow.png";
            bodyFrameLayout.AddChidren(btnShadow);
            btnShadow.ButtonClickEvent += (sender, e) =>
            {
                //房间图片选择
                this.RoomPictrueSelect(btnPic);
            };
            //添加阴影特效
            framePic.SetViewShadow(true);
            //初始化桌布
            var tableContr = new InformationEditorControl();
@@ -214,7 +223,9 @@
                editorRoom.FloorId = cloneRoom.FloorId;
                editorRoom.Name = cloneRoom.Name;
                editorRoom.HumidityDevice = cloneRoom.HumidityDevice;
                editorRoom.Humidity = cloneRoom.Humidity;
                editorRoom.TemperatrueDevice = cloneRoom.TemperatrueDevice;
                editorRoom.Temperatrue = cloneRoom.Temperatrue;
                editorRoom.BackgroundImage = cloneRoom.BackgroundImage;
                editorRoom.BackgroundImageType = cloneRoom.BackgroundImageType;
                editorRoom.Save();
@@ -234,7 +245,7 @@
        /// <param name="control"></param>
        private void ShowSelectFloor(FrameCaptionViewControl control)
        {
            var dicFloor = Common.Room.CurrentRoom.GetFloorSortList();
            var dicFloor = HdlRoomLogic.Current.GetFloorSortList();
            var listKeys = new List<string>();
            var listName = new List<string>();
@@ -308,28 +319,37 @@
            {
                return;
            }
            //获取中...
            btnTemper.Text = Language.StringByID(R.MyInternationalizationString.uGetting);
            if (cloneRoom.Temperatrue == -1000)
            {
                //没有获取得到过温度
                btnTemper.Text = Language.StringByID(R.MyInternationalizationString.Getting);
            }
            else
            {
                btnTemper.Text = this.cloneRoom.Temperatrue == 0 ? "0.0℃" : this.cloneRoom.Temperatrue.ToString() + "℃";
                btnTemper.Text += "  " + Language.StringByID(R.MyInternationalizationString.Getting);
            }
            HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
            HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, (Action<ZigBee.Device.CommonDevice>)((report) =>
            HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A设备属性上报, ((report) =>
            {
                string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report);
                if (cloneRoom.TemperatrueDevice != mainKeys || btnTemper == null)
                {
                    return;
                }
                //移除掉事件
                HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice");
                foreach (var data in report.DeviceStatusReport.AttriBute)
                {
                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                    {
                        HdlThreadLogic.Current.RunMain(() =>
                        {
                        if (data.AttriButeData == 0)
                        {
                            //0℃
                            btnTemper.Text = "0.0℃";
                                this.cloneRoom.Temperatrue = 0;
                        }
                        else if (data.AttriButeData > 32767)
                        {
@@ -337,15 +357,20 @@
                            string strValue = (data.AttriButeData - 65536).ToString();
                            //小数点需要一位
                            strValue = strValue.Substring(0, strValue.Length - 1);
                            btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                                //记录温度
                                this.cloneRoom.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                btnTemper.Text = this.cloneRoom.Temperatrue.ToString() + "℃";
                        }
                        else
                        {
                            //小数点需要一位
                            string strValue = data.AttriButeData.ToString();
                            strValue = strValue.Substring(0, strValue.Length - 1);
                            btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "℃";
                                //记录温度
                                this.cloneRoom.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                btnTemper.Text = this.cloneRoom.Temperatrue.ToString() + "℃";
                        }
                        });
                    }
                }
            }));
@@ -401,8 +426,16 @@
            {
                return;
            }
            //获取中...
            btnHumi.Text = Language.StringByID(R.MyInternationalizationString.uGetting);
            if (cloneRoom.Humidity == -1000)
            {
                //没有获取得到过湿度
                btnHumi.Text = Language.StringByID(R.MyInternationalizationString.Getting);
            }
            else
            {
                btnHumi.Text = this.cloneRoom.Humidity == 0 ? "0.0%" : this.cloneRoom.Humidity.ToString() + "%";
                btnHumi.Text += "  " + Language.StringByID(R.MyInternationalizationString.Getting);
            }
            HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
            HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A设备属性上报, (report) =>
@@ -412,24 +445,28 @@
                {
                    return;
                }
                //移除掉事件
                HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice");
                foreach (var data in report.DeviceStatusReport.AttriBute)
                {
                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
                    {
                        HdlThreadLogic.Current.RunMain(() =>
                    {
                        if (data.AttriButeData == 0)
                        {
                            //0
                            btnHumi.Text = "0.0%";
                                this.cloneRoom.Humidity = 0;
                        }
                        else
                        {
                            //小数点需要一位(湿度没有负数)
                            string strValue = data.AttriButeData.ToString();
                            strValue = strValue.Substring(0, strValue.Length - 1);
                            btnHumi.Text = strValue.Insert(strValue.Length - 1, ".") + "%";
                                //记录湿度
                                this.cloneRoom.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
                                btnHumi.Text = this.cloneRoom.Humidity.ToString() + "%";
                        }
                        });
                    }
                }
            });
@@ -539,7 +576,7 @@
            }
            if (string.IsNullOrEmpty(this.cloneRoom.FloorId) == true)
            {
                if (Shared.Common.Room.Lists.Find((obj) => obj.Name == this.cloneRoom.Name && obj.Id != this.cloneRoom.Id) != null)
                if (HdlRoomLogic.Current.GetAllListRooms().Find((obj) => obj.Name == this.cloneRoom.Name && obj.Id != this.cloneRoom.Id) != null)
                {
                    this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.HadSameRoom));
                    return false;
@@ -547,7 +584,7 @@
            }
            else
            {
                var listRoom = Common.Room.CurrentRoom.GetFloorSortRoom(this.cloneRoom.FloorId);
                var listRoom = HdlRoomLogic.Current.GetFloorSortRoom(this.cloneRoom.FloorId);
                if (listRoom.Find((obj) => obj.Name == this.cloneRoom.Name && obj.Id != this.cloneRoom.Id) != null)
                {
                    this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.HadSameRoom));