From b02e8275a21dc06bf54b66273485d44e007a2616 Mon Sep 17 00:00:00 2001
From: xm <1271024303@qq.com>
Date: 星期一, 20 七月 2020 14:50:17 +0800
Subject: [PATCH] 新代码

---
 ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs |  106 ++++++++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 89 insertions(+), 17 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs
index 4a8087c..ee4a454 100755
--- a/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs
+++ b/ZigbeeApp/Shared/Phone/UserCenter/CommonBase/Controls/RowLayoutControls/DeviceFunctionTypeRowControl.cs
@@ -40,7 +40,7 @@
         /// </summary>
         private CommonDevice device = null;
         /// <summary>
-        /// 褰撳墠閫夋嫨鐨勫姛鑳界被鍨嬬储寮�
+        /// 褰撳墠閫夋嫨鐨勫姛鑳界被鍨嬬储寮� -1:杩樻病鏈夎缃繃 0:涓嶆寚瀹� 1:寮�鍏� 2:鐏厜 3:鎻掑骇
         /// </summary>
         private int nowSelectNo = -1;
 
@@ -80,6 +80,9 @@
                     //鍙崇澶�
                     this.AddRightArrow();
 
+                    //璇诲彇璁惧鍔熻兘绫诲瀷
+                    this.ReadDeviceFunctionType();
+
                     this.ButtonClickEvent += (sender, e) =>
                     {
                         //鏄剧ず閫夋嫨璁惧鍔熻兘绫诲瀷鐨勭晫闈�
@@ -108,18 +111,46 @@
 
             var form = new BottomItemSelectForm();
             form.CancelCallEvent = true;//鍏佽鍙栨秷
-            form.AddForm(title, listText, nowSelectNo);
+            form.AddForm(title, listText, null, nowSelectNo - 1);
             form.FinishSelectEvent += (selectNo) =>
             {
+                if (selectNo == nowSelectNo - 1)
+                {
+                    //閫夋嫨鐨勬槸鐩稿悓鐨�
+                    return;
+                }
                 //-1:閫夋嫨鍙栨秷
                 this.Text = selectNo == -1 ? string.Empty : listText[selectNo];
-                nowSelectNo = selectNo;
+                nowSelectNo = selectNo + 1;
 
-                //璁板綍璧峰綋鍓嶉�夋嫨鐨勫姛鑳界被鍨�
-                this.RefreshDfunctionType();
+                this.CanClick = false;
+                HdlThreadLogic.Current.RunThread(() =>
+                {
+                    //璁剧疆鍔熻兘绫诲瀷鍒扮綉鍏�
+                    var result = Common.LocalDevice.Current.SendDeviceFunctionTypeToGateway(this.device, (DeviceFunctionType)nowSelectNo);
+                    
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        if (result == true)
+                        {
+                            //璁板綍璧峰綋鍓嶉�夋嫨鐨勫姛鑳界被鍨�
+                            this.RefreshDfunctionType();
 
-                //璋冪敤鍥炶皟鍑芥暟
-                this.FinishSelectEvent?.Invoke(nowSelectNo);
+                            //璁惧鏀瑰彉鍔熻兘绫诲瀷鐨勮瘽,涓婚〉闇�瑕侀噸鏂板埛鏂�
+                            UserView.UserPage.Instance.RefreshAllForm = true;
+
+                            //璋冪敤鍥炶皟鍑芥暟
+                            this.FinishSelectEvent?.Invoke(nowSelectNo);
+                        }
+                        else
+                        {
+                            //璁剧疆璁惧鍔熻兘绫诲瀷澶辫触
+                            var alert = new ShowMsgControl(ShowMsgType.Tip, Language.StringByID(R.MyInternationalizationString.uSetDeviceFunctionTypeFail));
+                            alert.Show();
+                        }
+                        this.CanClick = true;
+                    });
+                });
             };
         }
         #endregion
@@ -137,28 +168,34 @@
             var myFunType = this.device.DfunctionType;
             //鍔熻兘绫诲瀷鐨勭炕璇戝悕瀛�
             string strType = string.Empty;
-            if (myFunType == DeviceFunctionType.A鐏厜)
+
+            if (this.device.DfunctionType == DeviceFunctionType.A涓嶆寚瀹�)
             {
-                strType = Language.StringByID(R.MyInternationalizationString.uLight);
-                nowSelectNo = 1;
+                nowSelectNo = 0;
             }
             else if (this.device.DfunctionType == DeviceFunctionType.A寮�鍏�)
             {
                 strType = Language.StringByID(R.MyInternationalizationString.uSwitch);
-                nowSelectNo = 0;
+                nowSelectNo = 1;
+            }
+            else if (myFunType == DeviceFunctionType.A鐏厜)
+            {
+                strType = Language.StringByID(R.MyInternationalizationString.uLight);
+                nowSelectNo = 2;
             }
             else if (this.device.DfunctionType == DeviceFunctionType.A鎻掑骇)
             {
                 strType = Language.StringByID(R.MyInternationalizationString.uSocket1);
-                nowSelectNo = 2;
+                nowSelectNo = 3;
             }
 
             if (this.device.Type == DeviceType.ColorDimmableLight
+                || this.device.Type == DeviceType.ColorTemperatureLight
                 || this.device.Type == DeviceType.DimmableLight)
             {
                 //鐏厜绫诲浐瀹氫负 鐏厜
                 strType = Language.StringByID(R.MyInternationalizationString.uLight);
-                nowSelectNo = 1;
+                nowSelectNo = 2;
             }
             else if (this.device.Type == DeviceType.WindowCoveringDevice)
             {
@@ -182,6 +219,12 @@
             {
                 //鏂伴鍥哄畾涓� 鏂伴
                 strType = Language.StringByID(R.MyInternationalizationString.FreshAir);
+                nowSelectNo = -1;
+            }
+            else if (this.device.Type == DeviceType.PMSensor)
+            {
+                //PM2.5浼犳劅鍣ㄥ浐瀹氫负 绌烘皵璐ㄩ噺
+                strType = Language.StringByID(R.MyInternationalizationString.AirQuality);
                 nowSelectNo = -1;
             }
 
@@ -208,6 +251,8 @@
                 || this.device.Type == DeviceType.OnOffOutput//缁х數鍣�
                 || this.device.Type == DeviceType.Thermostat//绌鸿皟
                 || this.device.Type == DeviceType.FreshAir//鏂伴
+                || this.device.Type == DeviceType.PMSensor //PM2.5
+                || this.device.Type == DeviceType.ColorTemperatureLight //鑹叉俯鐏�
                 || this.device.Type == DeviceType.WindowCoveringDevice)//绐楀笜
             {
                 return true;
@@ -238,7 +283,7 @@
         /// </summary>
         private void RefreshDfunctionType()
         {
-            if (this.nowSelectNo == 0)
+            if (this.nowSelectNo == 1)
             {
                 this.device.DfunctionType = DeviceFunctionType.A寮�鍏�;
                 if (this.device.IsCustomizeImage == false)
@@ -247,7 +292,7 @@
                     this.device.IconPath = "Device/Switch.png";
                 }
             }
-            else if (this.nowSelectNo == 1)
+            else if (this.nowSelectNo == 2)
             {
                 this.device.DfunctionType = DeviceFunctionType.A鐏厜;
                 if (this.device.IsCustomizeImage == false)
@@ -256,7 +301,7 @@
                     this.device.IconPath = "Device/Light.png";
                 }
             }
-            else if (this.nowSelectNo == 2)
+            else if (this.nowSelectNo == 3)
             {
                 this.device.DfunctionType = DeviceFunctionType.A鎻掑骇;
                 if (this.device.IsCustomizeImage == false)
@@ -267,7 +312,7 @@
             }
             else
             {
-                this.device.DfunctionType = DeviceFunctionType.A鏈畾涔�;
+                this.device.DfunctionType = DeviceFunctionType.A涓嶆寚瀹�;
                 if (this.device.IsCustomizeImage == false)
                 {
                     //閲嶆柊璁剧疆鍥剧墖
@@ -287,5 +332,32 @@
         }
 
         #endregion
+
+        #region 鈻� 璇诲彇璁惧鍔熻兘绫诲瀷___________________
+
+        /// <summary>
+        /// 璇诲彇璁惧鍔熻兘绫诲瀷
+        /// </summary>
+        private void ReadDeviceFunctionType()
+        {
+            HdlThreadLogic.Current.RunThread(() =>
+            {
+                //璇诲彇璁惧鍔熻兘绫诲瀷
+                var info = Common.LocalDevice.Current.ReadDeviceEpointDeviceInfo(this.device);
+                if (info != null && ((int)this.device.DfunctionType) != info.FunctionType)
+                {
+                    this.device.DfunctionType = (DeviceFunctionType)info.FunctionType;
+                    HdlThreadLogic.Current.RunMain(() =>
+                    {
+                        //鍒锋柊鎺т欢
+                        this.InitDefultData();
+                        //鍒锋柊璁惧鍔熻兘绫诲瀷
+                        this.RefreshDfunctionType();
+                    });
+                }
+            });
+        }
+
+        #endregion
     }
 }

--
Gitblit v1.8.0