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 | 505 +++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 392 insertions(+), 113 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs index a737171..cf138ae 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Residence/EditorRoomInforForm.cs @@ -12,13 +12,13 @@ #region 鈻� 鍙橀噺澹版槑___________________________ /// <summary> - /// 缁撴潫缂栬緫鍚嶇О鐨勪簨浠� + /// 缁撴潫缂栬緫鐨勪簨浠� /// </summary> public Action<string> FinishEditorEvent = null; /// <summary> /// 鍒楄〃鎺т欢 /// </summary> - private VerticalListControl listview = null; + private FrameListControl listview = null; /// <summary> /// 鎴块棿瀵硅薄 /// </summary> @@ -27,6 +27,10 @@ /// 鍏嬮殕瀵硅薄 /// </summary> private Common.Room cloneRoom = null; + /// <summary> + /// 鏀瑰彉鎴块棿鍥剧墖 + /// </summary> + private bool changedRoomPic = false; #endregion @@ -38,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)); @@ -55,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 @@ -76,32 +129,51 @@ /// <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(); + FrameCaptionInputControl txtRoomName = null; + if (this.editorRoom.IsLove == false) + { + 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 (string.IsNullOrEmpty(this.cloneRoom.FloorId) == false) + 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.AddRightArrow(); //搴曠嚎 btnBelone.AddBottomLine(); - btnBelone.ButtonClickEvent += (sender, e) => + //鍒嗕韩鐨勬埧闂翠笉鑳戒慨鏀� + if (this.editorRoom.IsSharedRoom == false && Common.Config.Instance.Home.IsShowTemplate == false) { - //妤煎眰閫夋嫨 - this.ShowSelectFloor(btnBelone); - }; + //鍙崇澶� + btnBelone.AddRightArrow(); + btnBelone.ButtonClickEvent += (sender, e) => + { + //妤煎眰閫夋嫨 + this.ShowSelectFloor(btnBelone); + }; + } } //銆愭俯搴︺�� @@ -113,12 +185,18 @@ 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) { - //鏄剧ず娓╁害浼犳劅鍣ㄥ垪琛� - this.ShowTemperatrueDevice(btnTemper); - }; - if (string.IsNullOrEmpty(cloneRoom.TemperatrueDevice) == 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); @@ -133,35 +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) { - //鏄剧ず婀垮害浼犳劅鍣ㄥ垪琛� - this.ShowHumidityDevice(btnHumi); - }; - if (string.IsNullOrEmpty(cloneRoom.HumidityDevice) == 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.cloneRoom.Name); + 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(); }; } @@ -176,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>(); @@ -220,6 +361,11 @@ { 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(); @@ -250,49 +396,80 @@ { return; } - //鑾峰彇涓�... - btnTemper.Text = Language.StringByID(R.MyInternationalizationString.uGetting); + //鑾峰彇涓� + btnTemper.Text = Language.StringByID(R.MyInternationalizationString.Getting); - HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice"); - HdlDeviceAttributeLogic.Current.AddAttributeEvent("TemperatrueDevice", "DeviceStatusReport", (Action<ZigBee.Device.CommonDevice>)((report) => + 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) + if (cloneRoom.TemperatrueDevice != mainKeys || btnTemper == null + || report.DeviceStatusReport.CluterID != 1026) { return; } - //绉婚櫎鎺変簨浠� - HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice"); - - foreach (var data in report.DeviceStatusReport.AttriBute) + receiveData = true; + var localDevice = Common.LocalDevice.Current.GetDevice(mainKeys); + HdlThreadLogic.Current.RunMain(() => { - if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + decimal temperatrue = (decimal)device.GetType().InvokeMember("currentTemperature", System.Reflection.BindingFlags.GetField, null, device, null); + if (temperatrue == 0) { - if (data.AttriButeData == 0) - { - //0鈩� - btnTemper.Text = "0.0鈩�"; - } - else if (data.AttriButeData > 32767) - { - //璐熸暟(鐗规畩澶勭悊) - string strValue = (data.AttriButeData - 65536).ToString(); - //灏忔暟鐐归渶瑕佷竴浣� - strValue = strValue.Substring(0, strValue.Length - 1); - btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; - } - else - { - //灏忔暟鐐归渶瑕佷竴浣� - string strValue = data.AttriButeData.ToString(); - strValue = strValue.Substring(0, strValue.Length - 1); - btnTemper.Text = strValue.Insert(strValue.Length - 1, ".") + "鈩�"; - } + //0 + btnTemper.Text = "0.0鈩�"; } - } + else + { + btnTemper.Text = temperatrue + "鈩�"; + } + + }, ShowErrorMode.NO); })); //鍙戦�佽幏鍙栨俯搴︾殑鍛戒护 - ((ZigBee.Device.TemperatureSensor)device).ReadTemperatureOrHumidity(); + 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 @@ -310,6 +487,16 @@ { //鑾峰彇婀垮害浼犳劅鍣� 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); } @@ -343,40 +530,146 @@ { return; } - //鑾峰彇涓�... - btnHumi.Text = Language.StringByID(R.MyInternationalizationString.uGetting); + //鑾峰彇涓� + btnHumi.Text = Language.StringByID(R.MyInternationalizationString.Getting); - HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice"); - HdlDeviceAttributeLogic.Current.AddAttributeEvent("HumidityDevice", "DeviceStatusReport", (report) => + 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) + if (cloneRoom.HumidityDevice != mainKeys || btnHumi == null + || report.DeviceStatusReport.CluterID != 1029) { return; } - //绉婚櫎鎺変簨浠� - HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice"); - foreach (var data in report.DeviceStatusReport.AttriBute) + receiveData = true; + var localDevice = Common.LocalDevice.Current.GetDevice(mainKeys); + HdlThreadLogic.Current.RunMain(() => { - if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue) + decimal humidity = (decimal)localDevice.GetType().InvokeMember("currentHumidity", System.Reflection.BindingFlags.GetField, null, localDevice, null); + if (humidity == 0) { - if (data.AttriButeData == 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(() => { - //0 - btnHumi.Text = "0.0%"; - } - else - { - //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟) - string strValue = data.AttriButeData.ToString(); - strValue = strValue.Substring(0, strValue.Length - 1); - btnHumi.Text = strValue.Insert(strValue.Length - 1, ".") + "%"; - } + btnHumi.Text = humidity == 0 ? "0.0%" : humidity.ToString() + "%"; + }); + break; } } }); - //鍙戦�佽幏鍙栨箍搴︾殑鍛戒护 - ((ZigBee.Device.TemperatureSensor)device).ReadTemperatureOrHumidity(); + } + + #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 @@ -386,14 +679,14 @@ /// <summary> /// 鐣岄潰鍏抽棴 /// </summary> - public override void CloseForm() + public override void CloseFormBefore() { this.FinishEditorEvent = null; - HdlDeviceAttributeLogic.Current.RemoveEvent("TemperatrueDevice"); - HdlDeviceAttributeLogic.Current.RemoveEvent("HumidityDevice"); + HdlGatewayReceiveLogic.Current.RemoveEvent("TemperatrueDevice"); + HdlGatewayReceiveLogic.Current.RemoveEvent("HumidityDevice"); - base.CloseForm(); + base.CloseFormBefore(); } #endregion @@ -414,7 +707,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; @@ -422,27 +715,13 @@ } 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)); return false; } } - - if (cloneRoom.BackgroundImageType == 1 || cloneRoom.BackgroundImageType == 2) - { - this.cloneRoom.MoveBackGroundIamageFileToDirectory(cloneRoom.BackgroundImage, cloneRoom.BackgroundImage); - this.cloneRoom.BackgroundImage = $"{Common.Config.Instance.Guid}/{Common.Config.Instance.HomeId}/{cloneRoom.BackgroundImage}"; - } - - editorRoom.FloorId = cloneRoom.FloorId; - editorRoom.Name = cloneRoom.Name; - editorRoom.HumidityDevice = cloneRoom.HumidityDevice; - editorRoom.TemperatrueDevice = cloneRoom.TemperatrueDevice; - editorRoom.BackgroundImage = cloneRoom.BackgroundImage; - editorRoom.BackgroundImageType = cloneRoom.BackgroundImageType; - cloneRoom = null; return true; } -- Gitblit v1.8.0