From 25429f085093d89d543a0b90e30d0d62d1b7dac9 Mon Sep 17 00:00:00 2001 From: hxb <hxb@hdlchina.com.cn> Date: 星期二, 30 八月 2022 09:37:38 +0800 Subject: [PATCH] 合并了IOS的代码 --- ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs | 610 +++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 561 insertions(+), 49 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs index 37409c4..cf138ae 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs @@ -12,9 +12,13 @@ #region 鈻� 鍙橀噺澹版槑___________________________ /// <summary> + /// 缁撴潫缂栬緫鐨勪簨浠� + /// </summary> + public Action<string> FinishEditorEvent = null; + /// <summary> /// 鍒楄〃鎺т欢 /// </summary> - private VerticalListControl listview = null; + private FrameListControl listview = null; /// <summary> /// 鎴块棿瀵硅薄 /// </summary> @@ -23,6 +27,10 @@ /// 鍏嬮殕瀵硅薄 /// </summary> private Common.Room cloneRoom = null; + /// <summary> + /// 鏀瑰彉鎴块棿鍥剧墖 + /// </summary> + private bool changedRoomPic = false; #endregion @@ -34,8 +42,10 @@ /// <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); + //璁剧疆澶撮儴淇℃伅 base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uEditorRoom)); @@ -51,18 +61,65 @@ //娓呯┖bodyFrame this.ClearBodyFrame(); - var btnPic = new PicViewControl(887, 444); - btnPic.Y = Application.GetRealHeight(60); - btnPic.Gravity = Gravity.CenterHorizontal; - btnPic.UnSelectedImagePath = this.cloneRoom.BackgroundImage; - bodyFrameLayout.AddChidren(btnPic); + var listBackControl = new VerticalFrameControl(); + listBackControl.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listBackControl); - //鍒濆鍖栨甯� + //鍔犱竴涓櫧鑹茶儗鏅� + var frameBack1 = new FrameLayout(); + frameBack1.Height = Application.GetRealHeight(750); + frameBack1.Y = Application.GetRealHeight(196); + frameBack1.BackgroundColor = UserCenterColor.Current.White; + frameBack1.SetCornerWithSameRadius(Application.GetRealHeight(58), HDLUtils.RectCornerTopLeft | HDLUtils.RectCornerTopRight); + listBackControl.frameTable.AddChidren(frameBack1); + + //鎴块棿鍥剧墖搴曢儴闃村奖 + var btnShadow = new PicViewControl(853, 593); + btnShadow.Y = Application.GetRealHeight(58); + btnShadow.Gravity = Gravity.CenterHorizontal; + btnShadow.UnSelectedImagePath = "Room/RoomShadow.png"; + listBackControl.frameTable.AddChidren(btnShadow); + //鎴块棿鍥剧墖 + var btnPic = new ImageView(); + btnPic.Y = Application.GetRealHeight(60); + btnPic.Width = this.GetPictrueRealSize(824); + btnPic.Height = this.GetPictrueRealSize(549); + btnPic.Radius = (uint)Application.GetRealHeight(17); + btnPic.Gravity = Gravity.CenterHorizontal; + if (this.editorRoom.BackgroundImageType == 0) + { + btnPic.ImagePath = this.editorRoom.BackgroundImage; + } + else + { + btnPic.ImageBytes = Common.Global.ReadFileByHomeId(this.editorRoom.BackgroundImage); + } + listBackControl.frameTable.AddChidren(btnPic); + //鍥剧墖閬僵 + var btnZhezhao = new FrameLayout(); + btnZhezhao.Width = btnPic.Width; + btnZhezhao.Height = btnPic.Height; + btnZhezhao.Y = btnPic.Y; + btnZhezhao.Gravity = Gravity.CenterHorizontal; + btnZhezhao.BackgroundColor = UserCenterColor.Current.PictrueZhezhaoColor; + btnZhezhao.Radius = (uint)Application.GetRealHeight(17); + listBackControl.frameTable.AddChidren(btnZhezhao); + //鍒嗕韩鐨勬埧闂翠笉鑳界紪杈� + if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsShowTemplate == false) + { + btnZhezhao.MouseUpEventHandler += (sender, e) => + { + //鎴块棿鍥剧墖閫夋嫨 + this.RoomPictrueSelect(btnPic); + }; + } + + //鍒濆鍖栦俊鎭甯� var tableContr = new InformationEditorControl(); - this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 562, 1175); + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), bodyFrameLayout.Height - btnShadow.Bottom, false); //娣诲姞鍏ㄩ儴鑿滃崟 - this.AddAllMenuRow(tableContr); + this.AddAllMenuRow(tableContr, btnPic); } #endregion @@ -72,29 +129,52 @@ /// <summary> /// 娣诲姞鍏ㄩ儴鑿滃崟 /// </summary> - private void AddAllMenuRow(InformationEditorControl tableContr) + private void AddAllMenuRow(InformationEditorControl tableContr, ImageView btnPic) { //銆愭埧闂村悕绉般�� - var txtRoomName = new FrameCaptionInputControl(Language.StringByID(R.MyInternationalizationString.uRoomName), this.cloneRoom.Name, this.listview.rowSpace / 2); - txtRoomName.txtInput.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPleaseInputRoomName); - listview.AddChidren(txtRoomName); - txtRoomName.InitControl(); - //搴曠嚎 - txtRoomName.AddBottomLine(); - - //銆愭墍灞炴ゼ灞傘�� - var btnBelone = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uBelongeFloor), Common.Config.Instance.Home.FloorDics[this.cloneRoom.FloorId], this.listview.rowSpace / 2); - listview.AddChidren(btnBelone); - btnBelone.InitControl(); - //鍙崇澶� - btnBelone.AddRightArrow(); - //搴曠嚎 - btnBelone.AddBottomLine(); - btnBelone.ButtonClickEvent += (sender, e) => + FrameCaptionInputControl txtRoomName = null; + if (this.editorRoom.IsLove == false) { - //妤煎眰閫夋嫨 - this.ShowSelectFloor(btnBelone); - }; + txtRoomName = new FrameCaptionInputControl(Language.StringByID(R.MyInternationalizationString.uRoomName), this.cloneRoom.Name, this.listview.rowSpace / 2); + txtRoomName.txtInput.PlaceholderText = Language.StringByID(R.MyInternationalizationString.uPleaseInputRoomName); + txtRoomName.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺� + listview.AddChidren(txtRoomName); + txtRoomName.InitControl(); + //搴曠嚎 + txtRoomName.AddBottomLine(); + } + else + { + //鎴戠殑鍠滅埍涓嶈兘缂栬緫鍚嶅瓧 + var rowRoomName = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uRoomName), this.cloneRoom.Name, this.listview.rowSpace / 2); + listview.AddChidren(rowRoomName); + rowRoomName.UseClickStatu = false; + rowRoomName.InitControl(); + //搴曠嚎 + rowRoomName.AddBottomLine(); + } + + //璇PP涓烘湁妤煎眰鐨勬ā寮忔墠寮�鍚繖涓彍鍗� + if (this.editorRoom.IsLove == false && string.IsNullOrEmpty(this.cloneRoom.FloorId) == false) + { + //銆愭墍灞炴ゼ灞傘�� + var btnBelone = new FrameCaptionViewControl(Language.StringByID(R.MyInternationalizationString.uBelongeFloor), Common.Config.Instance.Home.FloorDics[this.cloneRoom.FloorId], this.listview.rowSpace / 2); + listview.AddChidren(btnBelone); + btnBelone.InitControl(); + //搴曠嚎 + btnBelone.AddBottomLine(); + //鍒嗕韩鐨勬埧闂翠笉鑳戒慨鏀� + if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsShowTemplate == false) + { + //鍙崇澶� + btnBelone.AddRightArrow(); + btnBelone.ButtonClickEvent += (sender, e) => + { + //妤煎眰閫夋嫨 + this.ShowSelectFloor(btnBelone); + }; + } + } //銆愭俯搴︺�� var rowTemperature = new FrameRowControl(this.listview.rowSpace / 2); @@ -105,9 +185,22 @@ var btnTemper = rowTemperature.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 300); //搴曠嚎 rowTemperature.AddBottomLine(); - rowTemperature.ButtonClickEvent += (sender, e) => + //鍒嗕韩鐨勬埧闂翠笉鑳戒慨鏀� 鎴栬�呭綋鍓嶄綇瀹呬笉鏄櫄鎷熺殑 + if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsVirtually == false + && Common.Config.Instance.Home.IsShowTemplate == false) { - }; + rowTemperature.ButtonClickEvent += (sender, e) => + { + //鏄剧ず娓╁害浼犳劅鍣ㄥ垪琛� + this.ShowTemperatrueDevice(btnTemper); + }; + } + if (string.IsNullOrEmpty(cloneRoom.TemperatrueDevice) == false + && Common.Config.Instance.Home.IsShowTemplate == false) + { + //鑾峰彇娓╁害 + this.GetTemperatrueValue(btnTemper, cloneRoom.TemperatrueDevice); + } //銆愭箍搴︺�� var rowHumidity = new FrameRowControl(this.listview.rowSpace / 2); @@ -118,26 +211,98 @@ var btnHumi = rowHumidity.AddMostRightView(Language.StringByID(R.MyInternationalizationString.uNothing), 300); //搴曠嚎 rowHumidity.AddBottomLine(); - rowHumidity.ButtonClickEvent += (sender, e) => + //鍒嗕韩鐨勬埧闂翠笉鑳戒慨鏀� 鎴栬�呭綋鍓嶄綇瀹呬笉鏄櫄鎷熺殑 + if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsVirtually == false + && Common.Config.Instance.Home.IsShowTemplate == false) { - }; + rowHumidity.ButtonClickEvent += (sender, e) => + { + //鏄剧ず婀垮害浼犳劅鍣ㄥ垪琛� + this.ShowHumidityDevice(btnHumi); + }; + } + if (string.IsNullOrEmpty(cloneRoom.HumidityDevice) == false + && Common.Config.Instance.Home.IsShowTemplate == false) + { + //鑾峰彇婀垮害 + this.GetHumidityValue(btnHumi, cloneRoom.HumidityDevice); + } //鍒濆鍖栨甯冨畬鎴� - tableContr.FinishInitControl(bodyFrameLayout, this.listview); + tableContr.FinishInitControl(); tableContr = null; + + //鍒嗕韩鐨勬埧闂翠笉鑳戒繚瀛� + if (this.editorRoom.IsSharedRoom == true|| Common.Config.Instance.Home.IsShowTemplate == true) + { + return; + } + //淇濆瓨 var btnFinish = new BottomClickButton(); btnFinish.TextID = R.MyInternationalizationString.uSave; bodyFrameLayout.AddChidren(btnFinish); btnFinish.ButtonClickEvent += (sender, e) => { - this.cloneRoom.Name = txtRoomName.Text; + if (txtRoomName != null) + { + this.cloneRoom.Name = txtRoomName.Text; + } //妫�娴嬭兘鍚︿繚瀛樻埧闂� if (this.CheckCanSaveRoom() == false) { return; } + //鏇存敼鍥剧墖 + if (this.changedRoomPic == true) + { + if (editorRoom.BackgroundImageType == 1 || editorRoom.BackgroundImageType == 2) + { + //鍒犻櫎鎺夊師鏉ョ殑鑷畾涔夊浘鐗� + if (Common.Global.IsExistsByHomeId(editorRoom.BackgroundImage) == true) + { + Common.Global.DeleteFilebyHomeId(editorRoom.BackgroundImage); + } + //澶囦唤 + HdlAutoBackupLogic.DeleteFile(editorRoom.BackgroundImage); + } + //鑷畾涔夊浘鐗� + if (cloneRoom.BackgroundImageType == 1 || cloneRoom.BackgroundImageType == 2) + { + //鐢熸垚鍥剧墖 + string picName = $"RoomIcon_{DateTime.Now.ToString("yyyyMMddHHmmss")}.png"; + string picFullName = System.IO.Path.Combine(Common.Config.Instance.FullPath, picName); + Shared.IO.FileUtils.WriteFileByBytes(picFullName, btnPic.ImageBytes); + cloneRoom.BackgroundImage = picName; + //澶囦唤 + HdlAutoBackupLogic.AddOrEditorFile(picName); + } + } + + bool changedFloor = editorRoom.FloorId != cloneRoom.FloorId; + editorRoom.FloorId = cloneRoom.FloorId; + editorRoom.Name = cloneRoom.Name; + editorRoom.HumidityDevice = cloneRoom.HumidityDevice; + editorRoom.TemperatrueDevice = cloneRoom.TemperatrueDevice; + editorRoom.BackgroundImage = cloneRoom.BackgroundImage; + editorRoom.BackgroundImageType = cloneRoom.BackgroundImageType; editorRoom.Save(); + + FinishEditorEvent?.Invoke(this.editorRoom.Name); + if (changedFloor == false) + { + //鍒锋柊宸︽粦鐨勬埧闂村垪琛ㄧ晫闈㈢殑鎸囧畾鎴块棿鐨勪俊鎭� + MainPage.LeftListRoomViewFrom.Instance.RefreshRoomInfo(this.editorRoom); + } + else + { + //鍒锋柊宸︽粦鐨勬埧闂村垪琛ㄧ晫闈㈢殑鎴块棿鍒楄〃淇℃伅 + MainPage.LeftListRoomViewFrom.Instance.RefreshListRoom(); + } + + //绠椾簡,杩欓噷濡傛灉鎸変笅淇濆瓨,鍒欎富椤甸渶瑕侀噸鏂板埛鏂� + UserView.UserPage.Instance.RefreshAllForm = true; + this.CloseForm(); }; } @@ -152,7 +317,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>(); @@ -180,6 +345,352 @@ #endregion + #region 鈻� 娓╁害浼犳劅鍣ㄧ浉鍏砡____________________ + + /// <summary> + /// 鏄剧ず娓╁害浼犳劅鍣ㄥ垪琛� + /// </summary> + /// <param name="btnTemper"></param> + private void ShowTemperatrueDevice(NormalViewControl btnTemper) + { + var listDevice = new List<ZigBee.Device.CommonDevice>(); + foreach (var device in Common.LocalDevice.Current.listAllDevice) + { + //鑾峰彇娓╁害浼犳劅鍣� + if (device is ZigBee.Device.TemperatureSensor && ((ZigBee.Device.TemperatureSensor)device).SensorDiv == 1) + { + listDevice.Add(device); + } + //PM2.5鏄俯搴﹀拰婀垮害鍚堝湪鍚屼竴涓鐐� + else if (device.Type == ZigBee.Device.DeviceType.PMSensor) + { + listDevice.Add(device); + } + } + var listSelect = new List<string>() { cloneRoom.TemperatrueDevice }; + var form = new SelectDeviceForm(); + form.AddForm(listDevice, listSelect, true, true); + form.ActionSelectDevice += (list) => + { + if (list.Count == 0) + { + cloneRoom.TemperatrueDevice = string.Empty; + btnTemper.Text = Language.StringByID(R.MyInternationalizationString.uNothing); + return; + } + cloneRoom.TemperatrueDevice = Common.LocalDevice.Current.GetDeviceMainKeys(list[0]); + //鑾峰彇娓╁害鍊� + this.GetTemperatrueValue(btnTemper, cloneRoom.TemperatrueDevice); + }; + } + + /// <summary> + /// 鑾峰彇娓╁害鍊� + /// </summary> + /// <param name="btnHumi"></param> + /// <param name="deviceKey"></param> + private void GetTemperatrueValue(NormalViewControl btnTemper, string deviceKey) + { + var device = Common.LocalDevice.Current.GetDevice(deviceKey); + if (device == null) + { + return; + } + //鑾峰彇涓� + btnTemper.Text = Language.StringByID(R.MyInternationalizationString.Getting); + + bool receiveData = false; + HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlGatewayReceiveLogic.Current.AddAttributeEvent("TemperatrueDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, ((report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (cloneRoom.TemperatrueDevice != mainKeys || btnTemper == null + || report.DeviceStatusReport.CluterID != 1026) + { + return; + } + receiveData = true; + var localDevice = Common.LocalDevice.Current.GetDevice(mainKeys); + HdlThreadLogic.Current.RunMain(() => + { + decimal temperatrue = (decimal)device.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.GetField, null, device, null); + if (temperatrue == 0) + { + //0 + btnTemper.Text = "0.0鈩�"; + } + else + { + btnTemper.Text = temperatrue + "鈩�"; + } + + }, ShowErrorMode.NO); + })); + //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护 + device.ReadAttri(ZigBee.Device.Cluster_ID.TemperatureMeasurement, ZigBee.Device.AttriButeId.MeasuredValue); + + HdlThreadLogic.Current.RunThread(() => + { + //鍘昏幏鍙栬澶囧垪琛ㄧ殑淇℃伅 + System.Threading.Thread.Sleep(1500); + var result = Common.LocalDevice.Current.ReadDeviceEpointDeviceInfo(device); + if (result != null) + { + device.AttributeStatus.Clear(); + device.AttributeStatus.AddRange(result.AttributeStatus); + device.ReSave(); + } + if (receiveData == true) + { + //宸茬粡璇诲彇鍒版暟鎹� + return; + } + + foreach (var data in device.AttributeStatus) + { + if (data.ClusterId == 1026 + && data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + //澶勭悊缃戝叧杩斿洖鐨勬俯搴﹀�� + decimal temperatrue = Common.LocalDevice.Current.AdjustTemperatrueValue(data.AttributeData); + + device.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.SetField, null, device, new object[] { temperatrue }); + device.ReSave(); + + //鍒朵綔铏氬亣鐨勫睘鎬т笂鎶� + var report = new ZigBee.Device.CommonDevice { DeviceAddr = device.DeviceAddr, DeviceEpoint = device.DeviceEpoint }; + report.DeviceStatusReport.CluterID = 1026; + HdlGatewayReceiveLogic.Current.DeviceReportPush(report, ReceiveComandDiv.A璁惧灞炴�т笂鎶�); + + HdlThreadLogic.Current.RunMain(() => + { + btnTemper.Text = temperatrue == 0 ? "0.0鈩�" : temperatrue.ToString() + "鈩�"; + }); + break; + } + } + }); + } + + #endregion + + #region 鈻� 婀垮害浼犳劅鍣ㄧ浉鍏砡____________________ + + /// <summary> + /// 鏄剧ず婀垮害浼犳劅鍣ㄥ垪琛� + /// </summary> + /// <param name="btnHumi"></param> + private void ShowHumidityDevice(NormalViewControl btnHumi) + { + var listDevice = new List<ZigBee.Device.CommonDevice>(); + foreach (var device in Common.LocalDevice.Current.listAllDevice) + { + //鑾峰彇婀垮害浼犳劅鍣� + if (device is ZigBee.Device.TemperatureSensor && ((ZigBee.Device.TemperatureSensor)device).SensorDiv == 2) + { + listDevice.Add(device); + } + //鏂伴 + else if (device.Type == ZigBee.Device.DeviceType.FreshAirHumiditySensor) + { + listDevice.Add(device); + } + //PM2.5鏄俯搴﹀拰婀垮害鍚堝湪鍚屼竴涓鐐� + else if (device.Type == ZigBee.Device.DeviceType.PMSensor) + { + listDevice.Add(device); + } + } + var listSelect = new List<string>() { cloneRoom.HumidityDevice }; + var form = new SelectDeviceForm(); + form.AddForm(listDevice, listSelect, true, true); + form.ActionSelectDevice += (list) => + { + if (list.Count == 0) + { + cloneRoom.HumidityDevice = string.Empty; + btnHumi.Text = Language.StringByID(R.MyInternationalizationString.uNothing); + return; + } + cloneRoom.HumidityDevice = Common.LocalDevice.Current.GetDeviceMainKeys(list[0]); + //鑾峰彇婀垮害鍊� + this.GetHumidityValue(btnHumi, cloneRoom.HumidityDevice); + }; + } + + /// <summary> + /// 鑾峰彇婀垮害鍊� + /// </summary> + /// <param name="btnHumi"></param> + /// <param name="deviceKey"></param> + private void GetHumidityValue(NormalViewControl btnHumi, string deviceKey) + { + var device = Common.LocalDevice.Current.GetDevice(deviceKey); + if (device == null) + { + return; + } + //鑾峰彇涓� + btnHumi.Text = Language.StringByID(R.MyInternationalizationString.Getting); + + bool receiveData = false; + HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); + HdlGatewayReceiveLogic.Current.AddAttributeEvent("HumidityDevice", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => + { + string mainKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (cloneRoom.HumidityDevice != mainKeys || btnHumi == null + || report.DeviceStatusReport.CluterID != 1029) + { + return; + } + receiveData = true; + var localDevice = Common.LocalDevice.Current.GetDevice(mainKeys); + HdlThreadLogic.Current.RunMain(() => + { + decimal humidity = (decimal)localDevice.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.GetField, null, localDevice, null); + if (humidity == 0) + { + //0 + btnHumi.Text = "0.0%"; + } + else + { + btnHumi.Text = humidity.ToString() + "%"; + } + + }, ShowErrorMode.NO); + }); + //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护 + device.ReadAttri(ZigBee.Device.Cluster_ID.RelativeHumidityMeasurement, ZigBee.Device.AttriButeId.MeasuredValue); + + HdlThreadLogic.Current.RunThread(() => + { + //鍘昏幏鍙栬澶囧垪琛ㄧ殑淇℃伅 + System.Threading.Thread.Sleep(1500); + var result = Common.LocalDevice.Current.ReadDeviceEpointDeviceInfo(device); + if (result != null) + { + device.AttributeStatus.Clear(); + device.AttributeStatus.AddRange(result.AttributeStatus); + device.ReSave(); + } + if (receiveData == true) + { + //宸茬粡璇诲埌鏁版嵁 + return; + } + + //鍒濆鍊�,鍙栫紦瀛樻暟鎹� + foreach (var data in device.AttributeStatus) + { + if (data.ClusterId == 1029 + && data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + { + //澶勭悊缃戝叧杩斿洖鐨勬箍搴﹀�� + decimal humidity = Common.LocalDevice.Current.AdjustHumidityValue(data.AttributeData); + + device.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.SetField, null, device, new object[] { humidity }); + device.ReSave(); + + //鍒朵綔铏氬亣鐨勫睘鎬т笂鎶� + var report = new ZigBee.Device.CommonDevice { DeviceAddr = device.DeviceAddr, DeviceEpoint = device.DeviceEpoint }; + report.DeviceStatusReport.CluterID = 1029; + HdlGatewayReceiveLogic.Current.DeviceReportPush(report, ReceiveComandDiv.A璁惧灞炴�т笂鎶�); + + HdlThreadLogic.Current.RunMain(() => + { + btnHumi.Text = humidity == 0 ? "0.0%" : humidity.ToString() + "%"; + }); + break; + } + } + }); + } + + #endregion + + #region 鈻� 鎴块棿鍥剧墖閫夋嫨_______________________ + + /// <summary> + /// 鎴块棿鍥剧墖閫夋嫨 + /// </summary> + /// <param name="imageContr"></param> + private void RoomPictrueSelect(ImageView imageContr) + { + var menuContr = new BottomMenuSelectForm(); + menuContr.AddForm(3); + //榛樿鍥惧簱 + menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.LocalPicture), () => + { + var form = new SelectLocalRoomImageForm(); + form.AddForm(); + form.FinishSelectEvent = (imgPath) => + { + if (string.IsNullOrEmpty(imgPath) == true) + { + return; + } + this.changedRoomPic = true; + this.cloneRoom.BackgroundImageType = 0; + this.cloneRoom.BackgroundImage = imgPath; + imgPath = IO.FileUtils.GetImageFilePath(imgPath); + imageContr.ImageBytes = IO.FileUtils.ReadFile(imgPath); + }; + }); + //鎷嶇収 + menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.Photograph), () => + { + //閫氳繃鐩告満鎷嶇収瑁佸壀 + CropImage.TakePicture((imagePath) => + { + if (string.IsNullOrEmpty(imagePath) == true) + { + return; + } + this.changedRoomPic = true; + this.cloneRoom.BackgroundImageType = 1; + imageContr.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath); + System.IO.File.Delete(imagePath); + }, "HdlPic", 2, 1); + }); + //鎴戠殑鐩稿唽 + menuContr.AddMenu(Language.StringByID(R.MyInternationalizationString.MyAblums), () => + { + //浠庣浉鍐岄�夋嫨鍥剧墖瑁佸壀 + CropImage.SelectPicture((imagePath) => + { + if (string.IsNullOrEmpty(imagePath) == true) + { + return; + } + this.changedRoomPic = true; + this.cloneRoom.BackgroundImageType = 2; + imageContr.ImageBytes = Shared.IO.FileUtils.ReadFile(imagePath); + System.IO.File.Delete(imagePath); + + }, "HdlPic", 2, 1); + }); + } + + #endregion + + #region 鈻� 鐣岄潰鍏抽棴___________________________ + + /// <summary> + /// 鐣岄潰鍏抽棴 + /// </summary> + public override void CloseFormBefore() + { + this.FinishEditorEvent = null; + + HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); + + base.CloseFormBefore(); + } + + #endregion + #region 鈻� 涓�鑸柟娉昣__________________________ /// <summary> @@ -194,22 +705,23 @@ this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.uPleaseInputRoomName)); return false; } - if (Shared.Common.Room.Lists.Find((obj) => obj.Name == this.cloneRoom.Name && obj.Id != this.cloneRoom.Id) != null) + if (string.IsNullOrEmpty(this.cloneRoom.FloorId) == true) { - this.ShowMassage(ShowMsgType.Error, Language.StringByID(R.MyInternationalizationString.HadSameRoom)); - return false; + 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; + } } - if (cloneRoom.BackgroundImageType == 1 || cloneRoom.BackgroundImageType == 2) + else { - this.cloneRoom.MoveBackGroundIamageFileToDirectory(cloneRoom.BackgroundImage, cloneRoom.BackgroundImage); - this.cloneRoom.BackgroundImage = $"{Common.Config.Instance.Guid}/{Common.Config.Instance.HomeId}/{cloneRoom.BackgroundImage}"; + 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)); + return false; + } } - - editorRoom.FloorId = cloneRoom.FloorId; - editorRoom.Name = cloneRoom.Name; - editorRoom.BackgroundImage = cloneRoom.BackgroundImage; - editorRoom.BackgroundImageType = cloneRoom.BackgroundImageType; - cloneRoom = null; return true; } -- Gitblit v1.8.0