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