gxc
2019-12-13 eb424d24e39bab4a245725f35deab3f234ea0f13
ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -3,6 +3,8 @@
using Shared.Common;
using ZigBee.Device;
using Shared.Phone.Device.AC;
using System.Text;
using Shared.Phone.Device.Account;
namespace Shared.Phone.UserView
{
@@ -39,7 +41,7 @@
        /// <summary>
        /// 底部按钮文字的Y值
        /// </summary>
        private static readonly int tabBarEnumName_Y = 104;
        private static readonly int tabBarEnumName_Y = 98;
        #endregion
        #region ◆ 接口____________________________
@@ -91,14 +93,12 @@
                                    return;
                                }
                                onOffOutputLight.OnOffStatus = onOffOutputLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                //记录回复时间
                                onOffOutputLight.LastDateTime = DateTime.Now;
                            }
                            //当CluterID=3,就证明该设备在线,直接标记
                            if (common.DeviceStatusReport.CluterID == 3)
                            {
                                myDevice.IsOnline = 1;
                                //记录回复时间
                                myDevice.LastDateTime = DateTime.Now;
                            }
                            break;
@@ -109,13 +109,11 @@
                            {
                                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;
                            }
@@ -123,7 +121,6 @@
                            if (common.DeviceStatusReport.CluterID == 3)
                            {
                                myDevice.IsOnline = 1;
                                //记录回复时间
                                myDevice.LastDateTime = DateTime.Now;
                            }
                            break;
@@ -149,7 +146,6 @@
                            if (common.DeviceStatusReport.CluterID == 3)
                            {
                                myDevice.IsOnline = 1;
                                //记录回复时间
                                myDevice.LastDateTime = DateTime.Now;
                            }
                            break;
@@ -164,48 +160,76 @@
                                if (attriButeList == null || attriButeList.Count == 0)
                                {
                                    return;
                                }
                                }
                                //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 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:
                                        //此属性表明室内当前的温度 * 100,实际温度为“LocalTemperature / 100”,单位:℃
                                        ac.currentLocalTemperature = attriButeList[0].AttriButeData / 100;
                                        ac.currentLocalTemperature = curTemp;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                    case 17:
                                        //此属性表明此设备当前的制冷温度,实际温度为“CoolingSetpoint / 100”,单位:℃。
                                        ac.currentCoolingSetpoint = attriButeList[0].AttriButeData / 100;
                                        ac.currentCoolingSetpoint = curTemp;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                    case 18:
                                        //此属性表明此设备当前的制热温度,实际温度为“HeatingSetpoint / 100”,单位:℃。
                                        ac.currentHeatingSetpoint = attriButeList[0].AttriButeData / 100;
                                        ac.currentHeatingSetpoint = curTemp;
                                        ac.LastDateTime = DateTime.Now;
                                        break;
                                    case 4096:
                                        //此属性表明此设备当前的自动温度,实际温度为“AutoSetpoint / 100”,单位:℃。
                                        ac.currentAutoSetpoint = (attriButeList[0].AttriButeData / 100 > ACControlBase.Temperature_High || attriButeList[0].AttriButeData / 100 < ACControlBase.Temperature_Low) ? attriButeList[0].AttriButeData / 100 : ACControlBase.Temperature_Default;
                                        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;
                                        break;
                                    case 4099:
                                        var value = Convert.ToString(attriButeList[0].AttriButeData, 2).PadLeft(16, '0');
                                        var modeStr = value.Substring(value.Length - 5, 5);
                                        for (int j = 0; j < modeStr.Length; j++)
                                        {
                                            ac.listSupportMode[j] = Convert.ToInt32(modeStr[j]) == 49 ? 1 : 0;
                                        }
                                        break;
                                    case 4097:
                                        ac.CleanStatu = attriButeList[0].AttriButeData == 42;
                                        break;
                                }
                            }
                            if (common.DeviceStatusReport.CluterID == 514)
                            {
                                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;
                                }
                            }
                            //当CluterID=3,就证明该设备在线,直接标记
                            if (common.DeviceStatusReport.CluterID == 3)
                            {
                                myDevice.IsOnline = 1;
                                //记录回复时间
                                myDevice.LastDateTime = DateTime.Now;
                            }
                            break;
@@ -223,7 +247,6 @@
                                    return;
                                }
                                dimmableLight.OnOffStatus = dimmableLight.DeviceStatusReport.AttriBute[0].AttriButeData;
                                //记录回复时间
                                dimmableLight.LastDateTime = DateTime.Now;
                            }
                            //亮度
@@ -239,7 +262,6 @@
                                switch (attriButeList[0].AttributeId)
                                {
                                    case 0:
                                        //此属性表明当前亮度程度
                                        dimmableLight.Level = attriButeList[0].AttriButeData;
                                        dimmableLight.LastDateTime = DateTime.Now;
                                        break;
@@ -249,7 +271,6 @@
                            if (common.DeviceStatusReport.CluterID == 3)
                            {
                                myDevice.IsOnline = 1;
                                //记录回复时间
                                myDevice.LastDateTime = DateTime.Now;
                            }
                            break;
@@ -309,6 +330,10 @@
        {
            BackgroundColor = Shared.Common.ZigbeeColor.Current.MainColor;
            ZbGateway.StatusList.Add(this);
            Shared.Application.LocationAction += (lat, lon) =>
            {
                AccountLogic.Instance.ReceiveAppLatAndLon(lat.ToString(), lon.ToString());
            };
        }
        /// <summary>
@@ -470,15 +495,18 @@
            if (sender == Instance.homePageIMG || sender == Instance.homePageName)
            {
                //主页
                CommonPage.Instance.IsDrawerLockMode = false;
                Instance.homePageName.IsSelected = true;
                Instance.homePageIMG.IsSelected = true;
                var home = new UserHomeView { };
                Instance.BodyView.AddChidren(home);
                home.Show();
            }
            else if (sender == Instance.categoryIMG || sender==Instance.categoryName)
            {
                //分类
                CommonPage.Instance.IsDrawerLockMode = true;
                Instance.categoryName.IsSelected = true;
                Instance.categoryIMG.IsSelected = true;
                var category = new Phone.Device.Category.Category { };
@@ -487,7 +515,8 @@
            }
            else if (sender == Instance.settingIMG || sender==Instance.settingName)
            {
                 //个人中心
                //个人中心
                CommonPage.Instance.IsDrawerLockMode = true;
                Instance.settingName.IsSelected = true;
                Instance.settingIMG.IsSelected = true;
                var form = new UserCenter.UserMain.UserMainForm();