From 48ba446936b51fffafa7c3600c0dadc6ac0e8c20 Mon Sep 17 00:00:00 2001 From: 陈嘉乐 <cjl@hdlchina.com.cn> Date: 星期五, 10 七月 2020 10:52:13 +0800 Subject: [PATCH] 2020-07-10-01 --- ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs | 155 +++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 135 insertions(+), 20 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs index 202f732..1875cda 100755 --- a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs @@ -15,11 +15,19 @@ /// <summary> /// 鍒楄〃鎺т欢 /// </summary> - private VerticalListControl listview = null; + private FrameListControl listview = null; /// <summary> /// 褰撳墠閫夋嫨鐨勭綉鍏� /// </summary> private AC deviceAc = null; + /// <summary> + /// 鎽嗛妯″紡(鐢ㄤ簩杩涘埗鏉ョ帺鑷畾涔夋ā寮� 0:涓嶄娇鐢� 1:浣跨敤) + /// </summary> + private int swingMode = 0; + /// <summary> + /// 鍥哄畾棰勭暀鐨勬暟鎹� + /// </summary> + private string fixValue = null; #endregion @@ -39,8 +47,27 @@ //鍒濆鍖栧彸涓婅鑿滃崟 this.InitTopRightMenu(); - //鍒濆鍖栦腑閮ㄦ帶浠� - this.InitMiddleFrame(); + HdlThreadLogic.Current.RunThread(() => + { + //寮�鍚繘搴︽潯 + this.ShowProgressBar(); + //璇诲彇绌鸿皟鎽嗛妯″紡 + var result = this.ReadAirConditionerSwingModeSupport(); + if (result == false) + { + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(ShowReLoadMode.YES); + return; + } + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + + HdlThreadLogic.Current.RunMain(() => + { + //鍒濆鍖栦腑閮ㄦ帶浠� + this.InitMiddleFrame(); + }); + }); } /// <summary> @@ -51,15 +78,19 @@ //娓呯┖bodyFrame this.ClearBodyFrame(); + var listBackControl = new VerticalFrameControl(); + listBackControl.Height = bodyFrameLayout.Height; + bodyFrameLayout.AddChidren(listBackControl); + //鍒濆鍖栨甯� var tableContr = new InformationEditorControl(); - this.listview = tableContr.InitControl(bodyFrameLayout, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 369, 1368); + this.listview = tableContr.InitControl(listBackControl.frameTable, Language.StringByID(R.MyInternationalizationString.uInfoEditor), 1368); //鍥剧墖 var btnPic = new DeviceInfoIconControl(); btnPic.Y = Application.GetRealHeight(92); btnPic.Gravity = Gravity.CenterHorizontal; - bodyFrameLayout.AddChidren(btnPic); + listBackControl.frameTable.AddChidren(btnPic); btnPic.InitControl(this.deviceAc); //璁惧澶囨敞 @@ -70,7 +101,7 @@ btnNote.InitControl(); //鍒掔嚎 btnNote.AddBottomLine(); - btnNote.txtInput.FinishInputEvent += async () => + btnNote.txtInput.FinishInputEvent += () => { string oldName = Common.LocalDevice.Current.GetDeviceEpointName(deviceAc); if (btnNote.Text.Trim() == string.Empty) @@ -81,7 +112,7 @@ if (oldName != btnNote.Text) { //璁惧鍚嶇О淇敼 - var result = await Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text); + var result = Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text); if (result == false) { return; @@ -110,11 +141,7 @@ rowBeloneArea.AddBottomLine(); rowBeloneArea.SelectRoomEvent += (roomKeys) => { - //淇濆瓨杩欎釜璁惧灞炰簬鍝釜鍖哄煙 - deviceAc.DeviceRoomId = roomKeys; - deviceAc.ReSave(); - - Common.Room.CurrentRoom.ChangedRoom(deviceAc, roomKeys); + HdlRoomLogic.Current.ChangedRoom(deviceAc, roomKeys); }; //绌鸿皟妯″紡 @@ -133,29 +160,54 @@ var rowSwing = new FrameRowControl(listview.rowSpace / 2); rowSwing.UseClickStatu = false; listview.AddChidren(rowSwing); - rowSwing.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uAirConditionerSwing), 600); + rowSwing.AddLeftCaption(Language.StringByID(R.MyInternationalizationString.uAirConditionerSwing), 400); rowSwing.AddBottomLine(); - var btnSwicth = rowSwing.AddMostRightSwitchIcon(); - btnSwicth.ButtonClickEvent += (sender, e) => + var btnSwingSwitch = rowSwing.AddMostRightSwitchIcon(); + if (this.swingMode == 1) { - btnSwicth.IsSelected = !btnSwicth.IsSelected; + btnSwingSwitch.IsSelected = true; + } + btnSwingSwitch.ButtonClickEvent += (sender, e) => + { + //涓嶈兘鍐嶇偣鍑� + btnSwingSwitch.CanClick = false; + string statu = btnSwingSwitch.IsSelected == true ? "0" : "1"; + //灏嗕簩杩涘埗杞崲涓哄崄杩涘埗 + int sendData = Convert.ToInt32(this.fixValue + statu, 2); + HdlThreadLogic.Current.RunThread(() => + { + var result = HdlDeviceAirConditionerLogic.Current.SetUseAcSwingFunctionStatu(deviceAc, sendData); + if (result == true) + { + HdlThreadLogic.Current.RunMain(() => + { + btnSwingSwitch.IsSelected = !btnSwingSwitch.IsSelected; + this.swingMode = this.swingMode == 1 ? 0 : 1; + + deviceAc.UseSwingFunction = btnSwingSwitch.IsSelected; + deviceAc.ReSave(); + }); + } + //鑳藉缁х画鐐瑰嚮 + btnSwingSwitch.CanClick = true; + }); }; //鍒濆鍖栨甯冨畬鎴� - tableContr.FinishInitControl(bodyFrameLayout, this.listview); + tableContr.FinishInitControl(); tableContr = null; //淇濆瓨 var btnFinish = new BottomClickButton(); btnFinish.TextID = R.MyInternationalizationString.uSave; bodyFrameLayout.AddChidren(btnFinish); - btnFinish.ButtonClickEvent += async (sender, e) => + btnFinish.ButtonClickEvent += (sender, e) => { string oldName = Common.LocalDevice.Current.GetDeviceEpointName(deviceAc); if (oldName != btnNote.Text) { //璁惧鍚嶇О淇敼 - var result = await Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text); + var result = Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text); if (result == false) { return; @@ -196,7 +248,7 @@ /// </summary> private void ShowTopRightMenu() { - var frame = new TopRightMenuControl(1); + var frame = new TopRightMenuControl(1, 1); //瀹氫綅 var deviceMenu = Language.StringByID(R.MyInternationalizationString.uFixedPosition); frame.AddRowMenu(deviceMenu, "Item/FixedPosition.png", "Item/FixedPositionSelected.png", () => @@ -207,5 +259,68 @@ } #endregion + + #region 鈻� 璇诲彇绌鸿皟鎽嗛妯″紡___________________ + + /// <summary> + /// 璇诲彇绌鸿皟鎽嗛妯″紡 + /// </summary> + private bool ReadAirConditionerSwingModeSupport() + { + //濡傛灉鏄櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + var data = ModelData.DeviceModelDataLogic.Current.GetAcSwingModeSupport(deviceAc); + //杞崲涓轰簩杩涘埗 + var value = Convert.ToString(data, 2).PadLeft(16, '0'); + //杩欎釜璁剧疆鏄斁鍦ㄥ悗闈㈢殑 + this.fixValue = value.Substring(0, value.Length - 1); + this.swingMode = Convert.ToInt32(value.Substring(this.fixValue.Length)); + return true; + } + + string mainkeys = Common.LocalDevice.Current.GetDeviceMainKeys(deviceAc); + HdlGatewayReceiveLogic.Current.AddAttributeEvent("ReadAirConditionerModeSupport", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) => + { + string checkKeys = Common.LocalDevice.Current.GetDeviceMainKeys(report); + if (checkKeys != mainkeys || report.DeviceStatusReport.CluterID != 514) + { + return; + } + for (int i = 0; i < report.DeviceStatusReport.AttriBute.Count; i++) + { + var data = report.DeviceStatusReport.AttriBute[i]; + if (data.AttributeId == 4097) + { + HdlGatewayReceiveLogic.Current.RemoveEvent("ReadAirConditionerModeSupport"); + //杞崲涓轰簩杩涘埗 + var value = Convert.ToString(data.AttriButeData, 2).PadLeft(16, '0'); + //杩欎釜璁剧疆鏄斁鍦ㄥ悗闈㈢殑 + this.fixValue = value.Substring(0, value.Length - 1); + this.swingMode = Convert.ToInt32(value.Substring(this.fixValue.Length)); + } + } + }); + //鑾峰彇鏄惁鍚敤绌鸿皟鎽嗛妯″紡鐨勭姸鎬�(鎵撳紑 鎴栬�� 鍏抽棴) + deviceAc.ReadUseSwingFunctionStatu(); + + int timeOut = 0; + while (this.fixValue == null && timeOut <= 30) + { + System.Threading.Thread.Sleep(100); + timeOut++; + } + if (this.fixValue == null) + { + //鑾峰彇绌鸿皟鎽嗛鐘舵�佸け璐� + string msg = Language.StringByID(R.MyInternationalizationString.uGetAirConditionerSwingFunctionFail); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + this.ShowMassage(ShowMsgType.Tip, msg); + return false; + } + return true; + } + + #endregion } } -- Gitblit v1.8.0