From 9f326f4000847e6167d8166fa2f6a66f53cb3734 Mon Sep 17 00:00:00 2001
From: 黄学彪 <hxb@hdlchina.com.cn>
Date: 星期四, 17 十二月 2020 09:07:13 +0800
Subject: [PATCH] 新云端Ver1.3

---
 ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs |  215 ++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 171 insertions(+), 44 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs b/ZigbeeApp/Shared/Phone/UserCenter/Device/AirConditioner/IndoorUnitSettionForm.cs
index 202f732..bded1c4 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,50 +78,60 @@
             //娓呯┖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);
 
             //璁惧澶囨敞
             string caption = Language.StringByID(R.MyInternationalizationString.uDeviceNote);
-            string nameValue = Common.LocalDevice.Current.GetDeviceEpointName(deviceAc);
+            string nameValue = HdlDeviceCommonLogic.Current.GetDeviceEpointName(deviceAc);
             var btnNote = new FrameCaptionInputControl(caption, nameValue, listview.rowSpace / 2);
+            btnNote.txtInput.MaxByte = 48;//闄愬埗鍙兘杈撳叆48涓瓧鑺�
             listview.AddChidren(btnNote);
             btnNote.InitControl();
             //鍒掔嚎
             btnNote.AddBottomLine();
-            btnNote.txtInput.FinishInputEvent += async () =>
-             {
-                 string oldName = Common.LocalDevice.Current.GetDeviceEpointName(deviceAc);
-                 if (btnNote.Text.Trim() == string.Empty)
-                 {
-                     //灏嗗悕瀛楄繕鍘�
-                     btnNote.Text = oldName;
-                 }
-                 if (oldName != btnNote.Text)
-                 {
-                     //璁惧鍚嶇О淇敼
-                     var result = await Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text);
-                     if (result == false)
-                     {
-                         return;
-                     }
-                     //璁惧澶囨敞淇敼鎴愬姛!
-                     string msg = Language.StringByID(R.MyInternationalizationString.uDeviceReNoteSuccess);
-                     this.ShowMassage(ShowMsgType.Tip, msg);
-                 }
-             };
+            btnNote.txtInput.FinishInputEvent += () =>
+            {
+                string oldName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(deviceAc);
+                if (btnNote.Text.Trim() == string.Empty)
+                {
+                    //灏嗗悕瀛楄繕鍘�
+                    btnNote.Text = oldName;
+                }
+                if (oldName != btnNote.Text)
+                {
+                    //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+                    if (Common.Config.Instance.Home.IsShowTemplate == true)
+                    {
+                        return;
+                    }
+                    //璁惧鍚嶇О淇敼
+                    var result = HdlDeviceCommonLogic.Current.ReName(deviceAc, btnNote.Text);
+                    if (result == false)
+                    {
+                        return;
+                    }
+                    //璁惧澶囨敞淇敼鎴愬姛!
+                    string msg = Language.StringByID(R.MyInternationalizationString.uDeviceReNoteSuccess);
+                    this.ShowMassage(ShowMsgType.Tip, msg);
+                }
+            };
 
             //璁惧绫诲瀷
             caption = Language.StringByID(R.MyInternationalizationString.uDeviceType);
-            nameValue = Common.LocalDevice.Current.GetDeviceObjectText(new List<CommonDevice>() { deviceAc });
+            nameValue = HdlDeviceCommonLogic.Current.GetDeviceObjectText(new List<CommonDevice>() { deviceAc });
             var btnType = new FrameCaptionViewControl(caption, nameValue, listview.rowSpace / 2);
             btnType.UseClickStatu = false;
             listview.AddChidren(btnType);
@@ -110,11 +147,7 @@
             rowBeloneArea.AddBottomLine();
             rowBeloneArea.SelectRoomEvent += (roomKeys) =>
             {
-                //淇濆瓨杩欎釜璁惧灞炰簬鍝釜鍖哄煙
-                deviceAc.DeviceRoomId = roomKeys;
-                deviceAc.ReSave();
-
-                Common.Room.CurrentRoom.ChangedRoom(deviceAc, roomKeys);
+                HdlRoomLogic.Current.ChangedRoom(deviceAc, roomKeys);
             };
 
             //绌鸿皟妯″紡
@@ -133,29 +166,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);
+                string oldName = HdlDeviceCommonLogic.Current.GetDeviceEpointName(deviceAc);
                 if (oldName != btnNote.Text)
                 {
                     //璁惧鍚嶇О淇敼
-                    var result = await Common.LocalDevice.Current.ReName(deviceAc, btnNote.Text);
+                    var result = HdlDeviceCommonLogic.Current.ReName(deviceAc, btnNote.Text);
                     if (result == false)
                     {
                         return;
@@ -163,6 +221,12 @@
                 }
                 this.CloseForm();
             };
+            //鏌ョ湅妯℃澘鏃�,涓嶅厑璁哥紪杈�
+            if (Common.Config.Instance.Home.IsShowTemplate == true)
+            {
+                btnFinish.CanClick = false;
+                btnSwingSwitch.CanClick = false;
+            }
         }
 
         #endregion
@@ -175,7 +239,7 @@
         private void InitTopRightMenu()
         {
             //妫�娴嬫鍥炶矾鏄惁鎷ユ湁瀹氫綅鍔熻兘(鎷跨鐐规渶灏忕殑閭d釜鍥炶矾鍘诲畾浣�)
-            bool canTest = Common.LocalDevice.Current.DeviceIsCanFixedPosition(deviceAc);
+            bool canTest = HdlDeviceCommonLogic.Current.DeviceIsCanFixedPosition(deviceAc);
             if (canTest == false)
             {
                 return;
@@ -196,16 +260,79 @@
         /// </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", () =>
             {
                 //鍙戦�佸畾浣嶅姛鑳�
-                Common.LocalDevice.Current.SetFixedPositionCommand(deviceAc);
+                HdlDeviceCommonLogic.Current.SetFixedPositionCommand(deviceAc);
             });
         }
 
         #endregion
+
+        #region 鈻� 璇诲彇绌鸿皟鎽嗛妯″紡___________________
+
+        /// <summary>
+        /// 璇诲彇绌鸿皟鎽嗛妯″紡
+        /// </summary>
+        private bool ReadAirConditionerSwingModeSupport()
+        {
+            //濡傛灉鏄櫄鎷熶綇瀹�
+            if (Common.Config.Instance.Home.IsVirtually == true)
+            {
+                var data = HdlTemplateDeviceDataLogic.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 = HdlDeviceCommonLogic.Current.GetDeviceMainKeys(deviceAc);
+            HdlGatewayReceiveLogic.Current.AddAttributeEvent("ReadAirConditionerModeSupport", ReceiveComandDiv.A璁惧灞炴�т笂鎶�, (report) =>
+            {
+                string checkKeys = HdlDeviceCommonLogic.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 = HdlCommonLogic.Current.CombineGatewayTimeOutMsg(msg, null, "鍥炲瓒呮椂");
+                this.ShowMassage(ShowMsgType.Tip, msg);
+                return false;
+            }
+            return true;
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.8.0