From d1ab259186e2341a0839c87300065e9bb5f14e9c Mon Sep 17 00:00:00 2001
From: gxc <guoxuecheng@guoxuechengdeMacBook-Pro.local>
Date: 星期二, 12 十一月 2019 10:42:14 +0800
Subject: [PATCH] 2019.11.12

---
 ZigbeeApp/Shared/Phone/Device/Category/Category.cs |  155 ++++++++++++++++++++++++++++++---------------------
 1 files changed, 90 insertions(+), 65 deletions(-)

diff --git a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
index 1afc4c9..eea1599 100644
--- a/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
+++ b/ZigbeeApp/Shared/Phone/Device/Category/Category.cs
@@ -5,6 +5,7 @@
 using Shared.R;
 using ZigBee.Device;
 using Shared.Phone.Device.CommonForm;
+using Shared.Phone.Device.AC;
 
 namespace Shared.Phone.Device.Category
 {
@@ -166,17 +167,14 @@
                                     {
                                         var light = deviceUI.CommonDevice as ToggleLight;
                                         light.DeviceStatusReport = common.DeviceStatusReport;
-                                        //璁板綍銆佹洿鏂扮姸鎬�
                                         if (light.DeviceStatusReport.AttriBute == null || light.DeviceStatusReport.AttriBute.Count == 0)
                                         {
                                             continue;
                                         }
                                         light.OnOffStatus = light.DeviceStatusReport.AttriBute[0].AttriButeData;
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-
                                         row.SetStatu(light.OnOffStatus == 1);
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
-                                        //璁板綍鍥炲鏃堕棿
                                         light.LastDateTime = DateTime.Now;
                                     }
                                     if (common.DeviceStatusReport.CluterID == 3)
@@ -194,7 +192,6 @@
                                     {
                                         var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                         airSwitch.DeviceStatusReport = common.DeviceStatusReport;
-                                        //璁板綍銆佹洿鏂扮姸鎬�
                                         if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
                                         {
                                             return;
@@ -203,7 +200,6 @@
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                         row.SetStatu(airSwitch.OnOffStatus == 1);
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
-                                        //璁板綍鍥炲鏃堕棿
                                         airSwitch.LastDateTime = DateTime.Now;
                                     }
                                     if (common.DeviceStatusReport.CluterID == 3)
@@ -248,81 +244,83 @@
 
                                 case DeviceType.Thermostat:
                                     //AC鍔熻兘
-                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513)
+                                    if (common.DeviceStatusReport.CluterID == 513)
                                     {
-                                        var attriButeList = (common as ZigBee.Device.AC).DeviceStatusReport.AttriBute;
+                                        var attriButeList = common.DeviceStatusReport.AttriBute;
                                         if (attriButeList == null || attriButeList.Count == 0)
                                         {
                                             return;
                                         }
                                         var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
-                                        ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport;
+                                        ac.DeviceStatusReport = common.DeviceStatusReport;
+
+                                        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:
-                                                //姝ゅ睘鎬ц〃鏄庡鍐呭綋鍓嶇殑娓╁害 * 100锛屽疄闄呮俯搴︿负鈥淟ocalTemperature / 100鈥濓紝鍗曚綅锛氣剝
-                                                ac.currentLocalTemperature = attriButeList[0].AttriButeData / 100;
+                                                ac.currentLocalTemperature = curTemp;
                                                 ac.LastDateTime = DateTime.Now;
                                                 break;
 
                                             case 17:
-                                                //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鍐锋俯搴︼紝瀹為檯娓╁害涓衡�淐oolingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
-                                                ac.currentCoolingSetpoint = attriButeList[0].AttriButeData / 100;
+                                                ac.currentCoolingSetpoint = curTemp;
                                                 ac.LastDateTime = DateTime.Now;
                                                 break;
 
                                             case 18:
-                                                //姝ゅ睘鎬ц〃鏄庢璁惧褰撳墠鐨勫埗鐑俯搴︼紝瀹為檯娓╁害涓衡�淗eatingSetpoint / 100鈥濓紝鍗曚綅锛氣剝銆�
-                                                ac.currentHeatingSetpoint = attriButeList[0].AttriButeData / 100;
+                                                ac.currentHeatingSetpoint = curTemp;
+                                                ac.LastDateTime = DateTime.Now;
+                                                break;
+
+                                            case 4096:
+                                                ac.currentAutoSetpoint = curTemp;
                                                 ac.LastDateTime = DateTime.Now;
                                                 break;
 
                                             case 28:
                                                 //姝ゅ睘鎬ф弿杩版亽娓╄澶囨澶勪簬鍝妯″紡
-                                                //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
                                                 ac.currentSystemMode = attriButeList[0].AttriButeData;
                                                 ac.LastDateTime = DateTime.Now;
-                                                for (int j = 0; j < rowLayout.ChildrenCount; j++)
-                                                {
-                                                    var tempView = rowLayout.GetChildren(j);
-                                                    if (tempView.Tag == null)
-                                                    {
-                                                        continue;
-                                                    }
-                                                    if (tempView.Tag.ToString() == deviceStatus_OnOffStatus)
-                                                    {
-                                                        if (ac.currentSystemMode == 0)
-                                                        {
-                                                            (tempView as Button).IsSelected = false;
-                                                        }
-                                                        else
-                                                        {
-                                                            (tempView as Button).IsSelected = true;
-                                                        }
-                                                    }
-                                                }
                                                 break;
                                         }
 
+                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
+                                        row.SetStatu(ac.currentSystemMode != 0);
+                                        row.SetStatuText(deviceUI.GetDeviceStatu());
                                     }
-                                    if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3)
+
+                                    if (common.DeviceStatusReport.CluterID == 514)
+                                    {
+                                        var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
+                                        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;
+                                        }
+                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
+                                        row.SetStatu(ac.currentSystemMode != 0);
+                                        row.SetStatuText(deviceUI.GetDeviceStatu());
+                                    }
+
+                                    if (common.DeviceStatusReport.CluterID == 3)
                                     {
                                         var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                         ac.IsOnline = 1;
-                                        //璁板綍鍥炲鏃堕棿
                                         ac.LastDateTime = DateTime.Now;
-                                        for (int j = 0; j < rowLayout.ChildrenCount; j++)
-                                        {
-                                            var tempView = rowLayout.GetChildren(j);
-                                            if (tempView.Tag == null)
-                                            {
-                                                continue;
-                                            }
-                                            if (tempView.Tag.ToString() == deviceStatus_Online)
-                                            {
-                                                (tempView as Button).IsSelected = ac.IsOnline == 1;
-                                            }
-                                        }
+                                        var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
+                                        row.SetStatu(true);
                                     }
                                     break;
                                 case DeviceType.DimmableLight:
@@ -338,10 +336,8 @@
                                         }
                                         dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                         var row = rowLayout.GetChildren(0) as CategoryFunctionRow;
-
                                         row.SetStatu(dimmableLight.OnOffStatus == 1);
                                         row.SetStatuText(deviceUI.GetDeviceStatu());
-                                        //璁板綍鍥炲鏃堕棿
                                         dimmableLight.LastDateTime = DateTime.Now;
                                     }
                                     if (common.DeviceStatusReport.CluterID == 3)
@@ -387,12 +383,14 @@
                                     row.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     break;
+
                                 case DeviceType.AirSwitch:
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
                                     var row1 = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                     row1.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     break;
+
                                 case DeviceType.WindowCoveringDevice:
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
@@ -406,11 +404,12 @@
                                     var row3 = rowLayout.GetChildren(0) as CategoryFunctionRow;
                                     row3.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     break;
+
                                 case DeviceType.Thermostat:
                                     deviceUI.CommonDevice.LastDateTime = DateTime.Now;
                                     deviceUI.CommonDevice.IsOnline = common.IsOnline;
-                                    //var row4 = rowLayout.GetChildren(0) as CategoryFunctionRow;
-                                    //row4.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
+                                    var row5 = rowLayout.GetChildren(0) as CategoryFunctionRow;
+                                    row5.SetStatu(deviceUI.CommonDevice.IsOnline == 1);
                                     break;
                             }
                         }
@@ -442,6 +441,7 @@
         {
             BackgroundColor = ZigbeeColor.Current.GXCGrayBackgroundColor;
             instance = this;
+            ZbGateway.StatusList.Add(this);
         }
 
         /// <summary>
@@ -450,8 +450,6 @@
         /// <param name="selectedBtn">閫変腑閭d釜鐣岄潰 0--鍔熻兘 1--鍦烘櫙 2--鑷姩鍖� </param>
         public void Show(int selectedBtn = 1)
         {
-
-            ZbGateway.StatusList.Add(this);
             RemoveAll();
 
             #region topview
@@ -880,10 +878,10 @@
                             detailInfo.action = RefreshBodyView;
                         };
 
-                        if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.OnOffOutput)
+                        if (deviceUI.CommonDevice.Type == DeviceType.OnOffOutput)
                         {
                             //鐏�
-                            var light = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
+                            var light = deviceUI.CommonDevice as ToggleLight;
                             //琛ヤ笂闈炶繙绋�
                             if (light.Gateway == null)
                             {
@@ -1217,11 +1215,13 @@
                                 UserView.UserHomeView.ReadStatus(ac, () =>
                                 {
                                     ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                                    ac.ReadFanMode();
-                                    ac.ReadSystemMode();
                                     ac.ReadLocalTemperature();
                                     ac.ReadCoolingSetpoint();
                                     ac.ReadHeatingSetpoint();
+                                    ac.ReadAutoSetpoint();
+                                    ac.ReadFanMode();
+                                    ac.ReadSystemMode();
+                                    ac.ReadSystemFansSwingMode();
                                 });
                             }
                             else
@@ -1230,11 +1230,13 @@
                                 if ((DateTime.Now - ac.LastDateTime).TotalSeconds > CommonPage.ReadDeviceStatuSpan)
                                 {
                                     ac.ReadAttri(Cluster_ID.Identify, AttriButeId.Switch);
-                                    ac.ReadFanMode();
-                                    ac.ReadSystemMode();
                                     ac.ReadLocalTemperature();
                                     ac.ReadCoolingSetpoint();
                                     ac.ReadHeatingSetpoint();
+                                    ac.ReadAutoSetpoint();
+                                    ac.ReadFanMode();
+                                    ac.ReadSystemMode();
+                                    ac.ReadSystemFansSwingMode();
                                 }
                             }
 
@@ -1261,8 +1263,8 @@
                                 zbGateway.ReportAction += UpdateDeviceControllStatu;
                                 AddZbGateway(zbGatewayList, zbGateway, commonDeviceList, deviceUI.CommonDevice);
 
-                                (send2 as CommonForm.SelectedStatuButton).IsSelected = !(send2 as CommonForm.SelectedStatuButton).IsSelected;
-                                if ((send2 as CommonForm.SelectedStatuButton).IsSelected)
+                                (send2 as Button).IsSelected = !(send2 as Button).IsSelected;
+                                if ((send2 as Button).IsSelected)
                                 {
                                     ac.Open();
                                 }
@@ -1301,6 +1303,16 @@
                             };
                             deviceTypeRowLayout.AddRightView(delBtn);
                             delBtn.MouseUpEventHandler += delEvent;
+
+                            deviceRow.ClickBtn.MouseUpEventHandler += (send2, e2) =>
+                            {
+                                var acControl = new Phone.Device.AC.ACControl();
+                                UserView.HomePage.Instance.AddChidren(acControl);
+                                UserView.HomePage.Instance.PageIndex += 1;
+                                UserView.HomePage.Instance.ScrollEnabled = false;
+                                //rollerShadeControl.action = RefreshBodyView;
+                                acControl.Show(deviceUI, room);
+                            };
                         }
                         else if (deviceUI.CommonDevice.Type == ZigBee.Device.DeviceType.WindowCoveringDevice)
                         {
@@ -1650,11 +1662,24 @@
                         Tag = scene
                     };
 
-                    if (!room.IsSharedRoom)
+
+                    if(room.IsSharedRoom)
                     {
-                        sceneRowLayout.AddRightView(settingBtn);
-                        sceneRowLayout.AddRightView(deleteBtn);
+
                     }
+                    else
+                    {
+                        if(room.IsLove)
+                        {
+                            sceneRowLayout.AddRightView(deleteBtn);
+                        }
+                        else
+                        {
+                            sceneRowLayout.AddRightView(settingBtn);
+                            sceneRowLayout.AddRightView(deleteBtn);
+                        }
+                    }
+
 
                     //璋冪敤鍦烘櫙
                     EventHandler<MouseEventArgs> sceneUpHandler = async (sender, e) =>

--
Gitblit v1.8.0