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/UserCenter/Device/AirConditioner/AirConditionerModeForm.cs | 244 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 244 insertions(+), 0 deletions(-) diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/AirConditionerModeForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/AirConditionerModeForm.cs new file mode 100755 index 0000000..e0c6eb5 --- /dev/null +++ b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/AirConditionerModeForm.cs @@ -0,0 +1,244 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Text; +using ZigBee.Device; + +namespace Shared.Phone.UserCenter.DeviceAirConditioner +{ + /// <summary> + /// 绌鸿皟妯″紡鐨勭晫闈� + /// </summary> + public class AirConditionerModeForm : EditorCommonForm + { + #region 鈻� 鍙橀噺澹版槑___________________________ + + /// <summary> + /// 褰撳墠閫夋嫨鐨勭綉鍏� + /// </summary> + private AC deviceAc = null; + /// <summary> + /// 涓婃姤鐨勬暟鎹�(鐢ㄤ簩杩涘埗鏉ョ帺鑷畾涔夋ā寮� 0:鍒跺喎 1:鍒剁儹 2:閫侀 3:闄ゆ箍 4:鑷姩 5~7:澶囩敤) + /// </summary> + private string reportValue = null; + /// <summary> + /// 鏃х殑鏁版嵁 + /// </summary> + private string oldReportValue = null; + /// <summary> + /// 鍥哄畾棰勭暀鐨勬暟鎹� + /// </summary> + private string fixValue = null; + + #endregion + + #region 鈻� 鍒濆鍖朹____________________________ + + /// <summary> + /// 鐢婚潰鏄剧ず(搴曞眰浼氬浐瀹氳皟鐢ㄦ鏂规硶锛屽�熶互瀹屾垚鐢婚潰鍒涘缓) + /// </summary> + /// <param name="i_deviceAc">閫夋嫨鐨勭┖璋冨洖璺�</param> + public void ShowForm(AC i_deviceAc) + { + this.deviceAc = i_deviceAc; + + //璁剧疆澶撮儴淇℃伅 + base.SetTitleText(Language.StringByID(R.MyInternationalizationString.uAirConditionerMode)); + + //璇诲彇绌鸿皟鑷畾涔夋ā寮� + this.ReadAirConditionerModeSupport(); + + //鍒濆鍖栦腑閮ㄤ俊鎭� + this.InitMiddleFrame(); + } + + /// <summary> + /// 鍒濆鍖栦腑閮ㄤ俊鎭� 鈽嗏槅鈽嗏槅鈽� + /// </summary> + private void InitMiddleFrame() + { + //娓呯┖bodyFrame + this.ClearBodyFrame(); + + var listView = new VerticalListControl(29); + listView.Y = Application.GetRealHeight(-6); + listView.BackgroundColor = UserCenterColor.Current.White; + listView.Height = bodyFrameLayout.Height + Application.GetRealHeight(6); + bodyFrameLayout.AddChidren(listView); + + HdlThreadLogic.Current.RunThread(() => + { + //寮�鍚繘搴︽潯 + this.ShowProgressBar(); + int timeOut = 0; + while (this.reportValue == null && timeOut <= 30) + { + System.Threading.Thread.Sleep(100); + timeOut++; + } + if (this.reportValue == null) + { + //鑾峰彇绌鸿皟妯″紡澶辫触 + string msg = Language.StringByID(R.MyInternationalizationString.uGetAcModeFail); + msg = UserCenterLogic.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂"); + this.ShowMassage(ShowMsgType.Tip, msg); + this.CloseProgressBar(ShowReLoadMode.YES); + return; + } + //鍏抽棴杩涘害鏉� + this.CloseProgressBar(); + + HdlThreadLogic.Current.RunMain(() => + { + //鍒跺喎 + this.AddAirConditionerModeRow(listView, "AC/Mode_Cool2.png", Language.StringByID(R.MyInternationalizationString.uMode_Cool), 0); + //鍒剁儹 + this.AddAirConditionerModeRow(listView, "AC/Mode_Heat2.png", Language.StringByID(R.MyInternationalizationString.uMode_Heat), 1); + //鑷姩 + this.AddAirConditionerModeRow(listView, "AC/Mode_AutoSelected.png", Language.StringByID(R.MyInternationalizationString.uMode_Auto), 4); + //閫侀 + this.AddAirConditionerModeRow(listView, "AC/Mode_Fan2.png", Language.StringByID(R.MyInternationalizationString.uMode_FanOnly), 2); + //闄ゆ箍 + this.AddAirConditionerModeRow(listView, "AC/Mode_Dry2.png", Language.StringByID(R.MyInternationalizationString.uMode_Dry), 3); + + listView.AdjustRealHeight(Application.GetRealHeight(23)); + + //淇濆瓨 + var btnOk = new BottomClickButton(); + btnOk.TextID = R.MyInternationalizationString.uSave; + bodyFrameLayout.AddChidren(btnOk); + btnOk.ButtonClickEvent += (sender, e) => + { + if (this.oldReportValue == this.reportValue) + { + //鏁版嵁鐩稿悓,涓嶉渶瑕佷慨鏀� + this.CloseForm(); + return; + } + //灏嗕簩杩涘埗杞崲涓哄崄杩涘埗 + var data = Convert.ToInt32(this.fixValue + this.reportValue, 2); + var result = HdlDeviceAirConditionerLogic.Current.SetAcModeSupport(deviceAc, data); + if (result == true) + { + //鏇存敼缂撳瓨 + for (int i = 0; i < this.reportValue.Length; i++) + { + deviceAc.listSupportMode[i] = Convert.ToInt32(reportValue[i].ToString()); + } + deviceAc.ReSave(); + this.CloseForm(); + } + }; + }); + }); + } + + /// <summary> + /// 娣诲姞绌鸿皟妯″紡琛� + /// </summary> + /// <param name="listView">鍒楄〃鎺т欢</param> + /// <param name="imagePath">鍥剧墖鍦板潃</param> + /// <param name="textValue">鏄剧ず鏂囨湰</param> + /// <param name="div">鍖哄垎</param> + private void AddAirConditionerModeRow(VerticalListControl listView, string imagePath, string textValue, int div) + { + var rowFrame = new FrameRowControl(listView.rowSpace / 2); + listView.AddChidren(rowFrame); + //鍥炬爣 + var btnIcon = rowFrame.AddLeftIcon(81); + btnIcon.UnSelectedImagePath = imagePath; + //鏄剧ず鏂囨湰 + var btnText = rowFrame.AddLeftCaption(textValue, 400); + btnText.TextSize = 15; + if (div != 3) + { + //搴曠嚎 + rowFrame.AddBottomLine(); + } + //閫夋嫨 + var btnSelect = rowFrame.AddMostRightEmptyIcon(58, 58); + if (this.reportValue[div] == '0') + { + btnSelect.Visible = false; + } + btnSelect.UnSelectedImagePath = "Item/ItemSelected.png"; + rowFrame.ButtonClickEvent += (sender, e) => + { + btnSelect.Visible = !btnSelect.Visible; + //鍙樻洿鍊� + if (btnSelect.Visible == true) + { + this.reportValue = reportValue.Substring(0, div) + "1" + reportValue.Substring(div + 1); + } + else + { + this.reportValue = reportValue.Substring(0, div) + "0" + reportValue.Substring(div + 1); + } + }; + } + + #endregion + + #region 鈻� 璇诲彇绌鸿皟鑷畾涔夋ā寮廮________________ + + /// <summary> + /// 璇诲彇绌鸿皟鑷畾涔夋ā寮� 鈽嗏槅鈽嗏槅鈽� + /// </summary> + private void ReadAirConditionerModeSupport() + { + //濡傛灉鏄櫄鎷熶綇瀹� + if (Common.Config.Instance.Home.IsVirtually == true) + { + var data = ModelData.DeviceModelDataLogic.Current.GetAcModeSupport(deviceAc); + //杞崲涓轰簩杩涘埗 + var value = Convert.ToString(data, 2).PadLeft(16, '0'); + //杩欎簲涓缃槸鏀惧湪鍚庨潰鐨� + this.fixValue = value.Substring(0, value.Length - 5); + this.reportValue = value.Substring(this.fixValue.Length); + oldReportValue = reportValue; + return; + } + + 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 != 513) + { + return; + } + for (int i = 0; i < report.DeviceStatusReport.AttriBute.Count; i++) + { + var data = report.DeviceStatusReport.AttriBute[i]; + if (data.AttributeId == 4099) + { + HdlGatewayReceiveLogic.Current.RemoveEvent("ReadAirConditionerModeSupport"); + //杞崲涓轰簩杩涘埗 + var value = Convert.ToString(data.AttriButeData, 2).PadLeft(16, '0'); + //杩欎簲涓缃槸鏀惧湪鍚庨潰鐨� + this.fixValue = value.Substring(0, value.Length - 5); + this.reportValue = value.Substring(this.fixValue.Length); + oldReportValue = reportValue; + } + } + }); + //鍙戦�佽鍙栫┖璋冭嚜瀹氫箟妯″紡 + deviceAc.ReadModeSupport(); + } + + #endregion + + #region 鈻� 鐣岄潰鍏抽棴___________________________ + + /// <summary> + /// 鐣岄潰鍏抽棴 + /// </summary> + public override void CloseFormBefore() + { + HdlGatewayReceiveLogic.Current.RemoveEvent("ReadAirConditionerModeSupport"); + + base.CloseFormBefore(); + } + + #endregion + } +} -- Gitblit v1.8.0