From f6e34a69f1d1e0b0b3a6252fe20acddca7fe56e5 Mon Sep 17 00:00:00 2001
From: WJC <wjc@hdlchina.com.cn>
Date: 星期二, 17 三月 2020 15:43:44 +0800
Subject: [PATCH] 2020-03-17-1

---
 ZigbeeApp/Shared/Phone/UserView/UserPage.cs |  281 ++++++++++++++++++++++++++++++++++++-------------------
 1 files changed, 182 insertions(+), 99 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
index 8ffd033..ab9c4c5 100755
--- a/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
+++ b/ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -3,13 +3,14 @@
 using Shared.Common;
 using ZigBee.Device;
 using Shared.Phone.Device.AC;
-
+using System.Text;
+
 namespace Shared.Phone.UserView
 {
     /// <summary>
     /// User page.
     /// </summary>
-    public class UserPage : FrameLayout,ZigBee.Common.IStatus
+    public class UserPage : FrameLayout, ZigBee.Common.IStatus
     {
         #region 鈼� 鍙橀噺_______________________
         /// <summary>
@@ -39,7 +40,7 @@
         /// <summary>
         /// 搴曢儴鎸夐挳鏂囧瓧鐨刌鍊�
         /// </summary>
-        private static readonly int tabBarEnumName_Y = 104;
+        private static readonly int tabBarEnumName_Y = 98;
         #endregion
 
         #region 鈼� 鎺ュ彛____________________________
@@ -77,6 +78,10 @@
             {
                 try
                 {
+                    if (common.DeviceStatusReport.AttriBute == null || common.DeviceStatusReport.AttriBute.Count == 0)
+                    {
+                        return;
+                    }
                     switch (myDevice.Type)
                     {
                         case DeviceType.OnOffOutput:
@@ -85,11 +90,6 @@
                             {
                                 var onOffOutputLight = (ToggleLight)myDevice;
                                 onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
-                                //璁板綍銆佹洿鏂扮姸鎬�
-                                if (onOffOutputLight.DeviceStatusReport.AttriBute == null || onOffOutputLight.DeviceStatusReport.AttriBute.Count == 0)
-                                {
-                                    return;
-                                }
                                 onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 onOffOutputLight.LastDateTime = DateTime.Now;
                             }
@@ -107,13 +107,8 @@
                             {
                                 var airSwitch = (AirSwitch)myDevice;
                                 airSwitch.DeviceStatusReport = common.DeviceStatusReport;
-                                if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
-                                {
-                                    return;
-                                }
                                 airSwitch.OnOffStatus = airSwitch.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 airSwitch.LastDateTime = DateTime.Now;
-
                             }
                             //褰揅luterID=3,灏辫瘉鏄庤璁惧鍦ㄧ嚎锛岀洿鎺ユ爣璁�
                             if (common.DeviceStatusReport.CluterID == 3)
@@ -129,10 +124,6 @@
                                 var rollershade = (Rollershade)myDevice;
                                 rollershade.DeviceStatusReport = common.DeviceStatusReport;
                                 var attriButeList = rollershade.DeviceStatusReport.AttriBute;
-                                if (attriButeList == null || attriButeList.Count == 0)
-                                {
-                                    return;
-                                }
                                 switch (attriButeList[0].AttributeId)
                                 {
                                     case 0:
@@ -155,38 +146,36 @@
                                 var ac = (AC)myDevice;
                                 ac.DeviceStatusReport = common.DeviceStatusReport;
                                 var attriButeList = ac.DeviceStatusReport.AttriBute;
-                                if (attriButeList == null || attriButeList.Count == 0)
+                                foreach (var attList in attriButeList)
                                 {
-                                    return;
-                                }
-                                //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
-                                var curTemp = (attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
-                                switch (attriButeList[0].AttributeId)
-                                {
-                                    case 0:
-                                        ac.currentLocalTemperature = curTemp;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
-
-                                    case 17:
-                                        ac.currentCoolingSetpoint = curTemp;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
-
-                                    case 18:
-                                        ac.currentHeatingSetpoint = curTemp;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
-
-                                    case 4096:
-                                        ac.currentAutoSetpoint = curTemp;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
-
-                                    case 28:
-                                        ac.currentSystemMode = attriButeList[0].AttriButeData;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
+                                    //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
+                                    var curTemp = (attList.AttriButeData / 100 < ACControlBase.Temperature_High && attList.AttriButeData / 100 > ACControlBase.Temperature_Low) ? attList.AttriButeData / 100 : ACControlBase.Temperature_Default;
+                                    switch (attList.AttributeId)
+                                    {
+                                        case 0:
+                                            ac.currentLocalTemperature = curTemp;
+                                            ac.LastDateTime = DateTime.Now;
+                                            break;
+                                        case 17:
+                                            ac.currentCoolingSetpoint = curTemp;
+                                            ac.LastDateTime = DateTime.Now;
+                                            break;
+                                        case 18:
+                                            ac.currentHeatingSetpoint = curTemp;
+                                            ac.LastDateTime = DateTime.Now;
+                                            break;
+                                        case 4096:
+                                            ac.currentAutoSetpoint = curTemp;
+                                            ac.LastDateTime = DateTime.Now;
+                                            break;
+                                        case 28:
+                                            ac.currentSystemMode = attList.AttriButeData;
+                                            ac.LastDateTime = DateTime.Now;
+                                            break;
+                                        case 4097:
+                                            ac.CleanStatu = attList.AttriButeData == 42;
+                                            break;
+                                    }
                                 }
                             }
 
@@ -194,21 +183,20 @@
                             {
                                 var ac = (AC)myDevice;
                                 var attriButeList = common.DeviceStatusReport.AttriBute;
-                                if (attriButeList == null || attriButeList.Count == 0)
-                                {
-                                    return;
-                                }
                                 ac.DeviceStatusReport = common.DeviceStatusReport;
-                                switch (attriButeList[0].AttributeId)
-                                {
-                                    case 0:
-                                        ac.currentFanMode = attriButeList[0].AttriButeData;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
-                                    case 4096:
-                                        ac.currentFanSwingMode = attriButeList[0].AttriButeData;
-                                        ac.LastDateTime = DateTime.Now;
-                                        break;
+                                foreach (var attList in attriButeList)
+                                {
+                                    switch (attList.AttributeId)
+                                    {
+                                        case 0:
+                                            ac.currentFanMode = attList.AttriButeData;
+                                            ac.LastDateTime = DateTime.Now;
+                                            break;
+                                        case 4096:
+                                            ac.currentFanSwingMode = attList.AttriButeData;
+                                            ac.LastDateTime = DateTime.Now;
+                                            break;
+                                    }
                                 }
                             }
 
@@ -227,11 +215,6 @@
                             {
                                 var dimmableLight = (DimmableLight)myDevice;
                                 dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
-                                //璁板綍銆佹洿鏂扮姸鎬�
-                                if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
-                                {
-                                    return;
-                                }
                                 dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                 dimmableLight.LastDateTime = DateTime.Now;
                             }
@@ -241,10 +224,6 @@
                                 var dimmableLight = (DimmableLight)myDevice;
                                 dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                 var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
-                                if (attriButeList == null || attriButeList.Count == 0)
-                                {
-                                    return;
-                                }
                                 switch (attriButeList[0].AttributeId)
                                 {
                                     case 0:
@@ -260,6 +239,62 @@
                                 myDevice.LastDateTime = DateTime.Now;
                             }
                             break;
+
+                        case DeviceType.TemperatureSensor:
+                            //娓╁害
+                            if (common.DeviceStatusReport.CluterID == 1026)
+                            {
+                                var tempera = (TemperatureSensor)myDevice;
+                                foreach (var data in common.DeviceStatusReport.AttriBute)
+                                {
+                                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                    {
+                                        if (data.AttriButeData == 0)
+                                        {
+                                            tempera.Temperatrue = 0;
+                                        }
+                                        else if (data.AttriButeData > 32767)
+                                        {
+                                            //璐熸暟(鐗规畩澶勭悊)
+                                            string strValue = (data.AttriButeData - 65536).ToString();
+                                            //灏忔暟鐐归渶瑕佷竴浣�
+                                            strValue = strValue.Substring(0, strValue.Length - 1);
+                                            tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                        }
+                                        else
+                                        {
+                                            //灏忔暟鐐归渶瑕佷竴浣�
+                                            string strValue = data.AttriButeData.ToString();
+                                            strValue = strValue.Substring(0, strValue.Length - 1);
+                                            tempera.Temperatrue = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                        }
+                                    }
+                                }
+                            }
+                            //婀垮害
+                            if (common.DeviceStatusReport.CluterID == 1029)
+                            {
+                                var tempera = (TemperatureSensor)myDevice;
+                                foreach (var data in common.DeviceStatusReport.AttriBute)
+                                {
+                                    if (data.AttributeId == (int)ZigBee.Device.AttriButeId.MeasuredValue)
+                                    {
+                                        if (data.AttriButeData == 0)
+                                        {
+                                            tempera.Humidity = 0;
+                                        }
+                                        else
+                                        {
+                                            //灏忔暟鐐归渶瑕佷竴浣�(婀垮害娌℃湁璐熸暟)
+                                            string strValue = data.AttriButeData.ToString();
+                                            strValue = strValue.Substring(0, strValue.Length - 1);
+                                            tempera.Humidity = Convert.ToDecimal(strValue.Insert(strValue.Length - 1, "."));
+                                            tempera.LastDateTime = DateTime.Now;
+                                        }
+                                    }
+                                }
+                            }
+                            break;
                     }
                 }
                 catch (Exception ex)
@@ -273,6 +308,21 @@
                 myDevice.IsOnline = common.IsOnline;
                 //璁板綍鍥炲鏃堕棿
                 myDevice.LastDateTime = DateTime.Now;
+            }
+            else if (typeTag == "IASInfoReport")
+            {
+                try
+                {
+                    switch (myDevice.Type)
+                    {
+                        case DeviceType.IASZone:
+                            var iAS = (IASZone)myDevice;
+                            iAS.iASInfo = (common as IASZone).iASInfo;
+                            iAS.LastDateTime = DateTime.Now;
+                            break;
+                    }
+                }
+                catch { }
             }
         }
         /// <summary>
@@ -316,6 +366,10 @@
         {
             BackgroundColor = Shared.Common.ZigbeeColor.Current.MainColor;
             ZbGateway.StatusList.Add(this);
+            Shared.Application.LocationAction += (lon, lat) =>
+            {
+                Login.AccountLogic.Instance.ReceiveAppLatAndLon(lon.ToString(), lat.ToString());
+            };
         }
 
         /// <summary>
@@ -366,7 +420,6 @@
             Width = Application.GetMinRealAverage(tabBarEnumIMG_Width),
             UnSelectedImagePath = "Navigation/Home.png",
             SelectedImagePath = "Navigation/HomeSelected.png",
-            IsSelected = true,
             Gravity = Gravity.CenterHorizontal
         };
         /// <summary>
@@ -379,7 +432,6 @@
             TextID = R.MyInternationalizationString.HomePage,
             TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBottomUnSelectedColor,
             SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor2,
-            IsSelected = true,
             Gravity = Gravity.CenterHorizontal,
             TextSize = 10
         };
@@ -391,7 +443,7 @@
         /// </summary>
         public FrameLayout categoryFL = new FrameLayout
         {
-            X=Application.GetRealWidth(tabBarEnum_Width),
+            X = Application.GetRealWidth(tabBarEnum_Width),
             Width = Application.GetRealWidth(tabBarEnum_Width),
             Height = Application.GetRealHeight(CommonPage.TabbarHeight)
         };
@@ -417,9 +469,8 @@
             TextID = R.MyInternationalizationString.Category,
             TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBottomUnSelectedColor,
             SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor2,
-            IsSelected = false,
             Gravity = Gravity.CenterHorizontal,
-            TextSize=10
+            TextSize = 10
         };
         #endregion
 
@@ -429,7 +480,7 @@
         /// </summary>
         public FrameLayout settingFL = new FrameLayout
         {
-            X = Application.GetRealWidth(tabBarEnum_Width*2),
+            X = Application.GetRealWidth(tabBarEnum_Width * 2),
             Width = Application.GetRealWidth(tabBarEnum_Width),
             Height = Application.GetRealHeight(CommonPage.TabbarHeight)
         };
@@ -455,7 +506,6 @@
             TextID = R.MyInternationalizationString.Me,
             TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBottomUnSelectedColor,
             SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor2,
-            IsSelected = false,
             Gravity = Gravity.CenterHorizontal,
             TextSize = 10
         };
@@ -464,39 +514,72 @@
 
         EventHandler<MouseEventArgs> BottomEventHandler = (sender, e) =>
         {
-            Instance.homePageName.IsSelected = false;
-            Instance.homePageIMG.IsSelected = false;
-
-            Instance.categoryName.IsSelected = false;
-            Instance.categoryIMG.IsSelected = false;
-
-            Instance.settingName.IsSelected = false;
-            Instance.settingIMG.IsSelected = false;
-
-            Instance.BodyView.RemoveAll();
             if (sender == Instance.homePageIMG || sender == Instance.homePageName)
-            {
+            {
+                if (Instance.homePageName.IsSelected == true && e != null)
+                {
+                    //鍙湁鏄墜鍔ㄧ偣鍑荤殑鏃跺�欐墠澶勭悊
+                    return;
+                }
+                Instance.BodyView.RemoveAll();
                 //涓婚〉
+                CommonPage.Instance.IsDrawerLockMode = false;
                 Instance.homePageName.IsSelected = true;
-                Instance.homePageIMG.IsSelected = true;
-                var home = new UserHomeView { };
+                Instance.homePageIMG.IsSelected = true;
+
+                Instance.categoryName.IsSelected = false;
+                Instance.categoryIMG.IsSelected = false;
+
+                Instance.settingName.IsSelected = false;
+                Instance.settingIMG.IsSelected = false;
+
+                var home = new MainPage.UserHomeView2();
                 Instance.BodyView.AddChidren(home);
-                home.Show();
+                home.ShowForm();
+
             }
-            else if (sender == Instance.categoryIMG || sender==Instance.categoryName)
-            {
+            else if (sender == Instance.categoryIMG || sender == Instance.categoryName)
+            {
+                if (Instance.categoryName.IsSelected == true && e != null)
+                {
+                    //鍙湁鏄墜鍔ㄧ偣鍑荤殑鏃跺�欐墠澶勭悊
+                    return;
+                }
+
+                Instance.BodyView.RemoveAll();
                 //鍒嗙被
+                CommonPage.Instance.IsDrawerLockMode = true;
                 Instance.categoryName.IsSelected = true;
-                Instance.categoryIMG.IsSelected = true;
+                Instance.categoryIMG.IsSelected = true;
+
+                Instance.homePageName.IsSelected = false;
+                Instance.homePageIMG.IsSelected = false;
+
+                Instance.settingName.IsSelected = false;
+                Instance.settingIMG.IsSelected = false;
+
                 var category = new Phone.Device.Category.Category { };
                 Instance.BodyView.AddChidren(category);
                 category.Show();
             }
-            else if (sender == Instance.settingIMG || sender==Instance.settingName)
-            {
-                 //涓汉涓績
+            else if (sender == Instance.settingIMG || sender == Instance.settingName)
+            {
+                if (Instance.settingName.IsSelected == true && e != null)
+                {
+                    return;
+                }
+                Instance.BodyView.RemoveAll();
+                //涓汉涓績
+                CommonPage.Instance.IsDrawerLockMode = true;
                 Instance.settingName.IsSelected = true;
-                Instance.settingIMG.IsSelected = true;
+                Instance.settingIMG.IsSelected = true;
+
+                Instance.homePageName.IsSelected = false;
+                Instance.homePageIMG.IsSelected = false;
+
+                Instance.categoryName.IsSelected = false;
+                Instance.categoryIMG.IsSelected = false;
+
                 var form = new UserCenter.UserMain.UserMainForm();
                 Instance.BodyView.AddChidren(form);
                 form.ShowForm();

--
Gitblit v1.8.0