黄学彪
2019-10-28 1f5636d69332170ea3a41c76c9519f6ff6f0a8d9
ZigbeeApp/Shared/Phone/UserView/UserPage.cs
@@ -2,6 +2,7 @@
using System.Collections.Generic;
using Shared.Common;
using ZigBee.Device;
using Shared.Phone.Device.AC;
namespace Shared.Phone.UserView
{
@@ -20,25 +21,25 @@
        /// </summary>
        private static readonly int tabBarEnum_Width = CommonPage.AppRealWidth / 3;
        /// <summary>
        /// 底部按钮图片的高度-110
        /// 底部按钮图片的高度
        /// </summary>
        private static readonly int tabBarEnumIMG_Height = 110;
        private static readonly int tabBarEnumIMG_Height = 98;
        /// <summary>
        /// 底部按钮图片的宽度-110
        /// 底部按钮图片的宽度
        /// </summary>
        private static readonly int tabBarEnumIMG_Width = 110;
        private static readonly int tabBarEnumIMG_Width = 138;
        /// <summary>
        /// 底部按钮图片的Y值 -5
        /// 底部按钮图片的Y值
        /// </summary>
        private static readonly int tabBarEnumIMG_Y = 5;
        private static readonly int tabBarEnumIMG_Y = 3;
        /// <summary>
        /// 底部按钮文字的高度 -50
        /// 底部按钮文字的高度
        /// </summary>
        private static readonly int tabBarEnumName_Height = 50;
        private static readonly int tabBarEnumName_Height = 40;
        /// <summary>
        /// 底部按钮文字的Y值 100
        /// 底部按钮文字的Y值
        /// </summary>
        private static readonly int tabBarEnumName_Y = tabBarEnumIMG_Height - 10;
        private static readonly int tabBarEnumName_Y = 104;
        #endregion
        #region ◆ 接口____________________________
@@ -66,6 +67,7 @@
        /// <param name="typeTag">Type tag.</param>
        public void DeviceInfoChange(CommonDevice common, string typeTag)
        {
            ///
            //设备上报状态中 当CluterID=3,就证明该设备在线,直接标记
            if (typeTag == "DeviceStatusReport")
            {
@@ -88,10 +90,10 @@
                        {
                            case DeviceType.OnOffOutput:
                                //开关功能
                                if ((common as ZigBee.Device.ToggleLight).DeviceStatusReport.CluterID == 6)
                                if (common.DeviceStatusReport.CluterID == 6)
                                {
                                    var onOffOutputLight = deviceUI.CommonDevice as ZigBee.Device.ToggleLight;
                                    onOffOutputLight.DeviceStatusReport = (common as ZigBee.Device.ToggleLight).DeviceStatusReport;
                                    onOffOutputLight.DeviceStatusReport = common.DeviceStatusReport;
                                    //记录、更新状态
                                    if (onOffOutputLight.DeviceStatusReport.AttriBute == null || onOffOutputLight.DeviceStatusReport.AttriBute.Count == 0)
                                    {
@@ -102,7 +104,7 @@
                                    onOffOutputLight.LastDateTime = DateTime.Now;
                                }
                                //当CluterID=3,就证明该设备在线,直接标记
                                if ((common as ZigBee.Device.ToggleLight).DeviceStatusReport.CluterID == 3)
                                if (common.DeviceStatusReport.CluterID == 3)
                                {
                                    var onOffOutputLight = deviceUI.CommonDevice as ToggleLight;
                                    onOffOutputLight.IsOnline = 1;
@@ -113,10 +115,10 @@
                            case DeviceType.AirSwitch:
                                //开关功能
                                if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 6)
                                if (common.DeviceStatusReport.CluterID == 6)
                                {
                                    var airSwitch = deviceUI.CommonDevice as ZigBee.Device.AirSwitch;
                                    airSwitch.DeviceStatusReport = (common as ZigBee.Device.AirSwitch).DeviceStatusReport;
                                    airSwitch.DeviceStatusReport = common.DeviceStatusReport;
                                    //记录、更新状态
                                    if (airSwitch.DeviceStatusReport.AttriBute == null || airSwitch.DeviceStatusReport.AttriBute.Count == 0)
                                    {
@@ -128,7 +130,7 @@
                                }
                                //当CluterID=3,就证明该设备在线,直接标记
                                if ((common as ZigBee.Device.AirSwitch).DeviceStatusReport.CluterID == 3)
                                if (common.DeviceStatusReport.CluterID == 3)
                                {
                                    var airSwitch = deviceUI.CommonDevice as AirSwitch;
                                    airSwitch.IsOnline = 1;
@@ -138,7 +140,24 @@
                                break;
                            case DeviceType.WindowCoveringDevice:
                                if ((common as ZigBee.Device.Rollershade).DeviceStatusReport.CluterID == 3)
                                if (common.DeviceStatusReport.CluterID == 258)
                                {
                                    var rollershade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                                    rollershade.DeviceStatusReport = common.DeviceStatusReport;
                                    var attriButeList = rollershade.DeviceStatusReport.AttriBute;
                                    if (attriButeList == null || attriButeList.Count == 0)
                                    {
                                        continue;
                                    }
                                    switch (attriButeList[0].AttributeId)
                                    {
                                        case 0:
                                            rollershade.WcdType = attriButeList[0].AttriButeData;
                                            rollershade.LastDateTime = DateTime.Now;
                                            break;
                                    }
                                }
                                if (common.DeviceStatusReport.CluterID == 3)
                                {
                                    var rollershade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                                    rollershade.IsOnline = 1;
@@ -149,10 +168,10 @@
                            case DeviceType.Thermostat:
                                //AC功能
                                if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 513)
                                if (common.DeviceStatusReport.CluterID == 513)
                                {
                                    var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                    ac.DeviceStatusReport = (common as ZigBee.Device.AC).DeviceStatusReport;
                                    ac.DeviceStatusReport = common.DeviceStatusReport;
                                    var attriButeList = ac.DeviceStatusReport.AttriBute;
                                    if (attriButeList == null || attriButeList.Count == 0)
                                    {
@@ -178,6 +197,12 @@
                                            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.LastDateTime = DateTime.Now;
                                            break;
                                        case 28:
                                            //此属性描述恒温设备正处于哪种模式
                                            //Off = 0  Auto = 1 Cool = 3 Heat = 4 FanOnly = 7  Dry = 8
@@ -189,7 +214,7 @@
                                }
                                //当CluterID=3,就证明该设备在线,直接标记
                                if ((common as ZigBee.Device.AC).DeviceStatusReport.CluterID == 3)
                                if (common.DeviceStatusReport.CluterID == 3)
                                {
                                    var ac = deviceUI.CommonDevice as AC;
                                    ac.IsOnline = 1;
@@ -202,10 +227,10 @@
                            case DeviceType.DimmableLight:
                                //调光灯功能
                                //开关功能
                                if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 6)
                                if (common.DeviceStatusReport.CluterID == 6)
                                {
                                    var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                    dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
                                    dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                    //记录、更新状态
                                    if (dimmableLight.DeviceStatusReport.AttriBute == null || dimmableLight.DeviceStatusReport.AttriBute.Count == 0)
                                    {
@@ -216,10 +241,10 @@
                                    dimmableLight.LastDateTime = DateTime.Now;
                                }
                                //亮度
                                if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 8)
                                if (common.DeviceStatusReport.CluterID == 8)
                                {
                                    var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                    dimmableLight.DeviceStatusReport = (common as ZigBee.Device.DimmableLight).DeviceStatusReport;
                                    dimmableLight.DeviceStatusReport = common.DeviceStatusReport;
                                    var attriButeList = dimmableLight.DeviceStatusReport.AttriBute;
                                    if (attriButeList == null || attriButeList.Count == 0)
                                    {
@@ -235,7 +260,7 @@
                                    }
                                }
                                //当CluterID=3,就证明该设备在线,直接标记
                                if ((common as ZigBee.Device.DimmableLight).DeviceStatusReport.CluterID == 3)
                                if (common.DeviceStatusReport.CluterID == 3)
                                {
                                    var dimmableLight = deviceUI.CommonDevice as DimmableLight;
                                    dimmableLight.IsOnline = 1;
@@ -273,31 +298,31 @@
                        {
                            case DeviceType.OnOffOutput:
                                var onOffOutputLight = deviceUI.CommonDevice as ToggleLight;
                                onOffOutputLight.IsOnline = (common as ToggleLight).IsOnline;
                                onOffOutputLight.IsOnline = common.IsOnline;
                                //记录回复时间
                                onOffOutputLight.LastDateTime = DateTime.Now;
                                break;
                            case DeviceType.AirSwitch:
                                var airSwitch = deviceUI.CommonDevice as AirSwitch;
                                airSwitch.IsOnline = (common as AirSwitch).IsOnline;
                                airSwitch.IsOnline = common.IsOnline;
                                //记录回复时间
                                airSwitch.LastDateTime = DateTime.Now;
                                break;
                            case DeviceType.WindowCoveringDevice:
                                var rollershade = deviceUI.CommonDevice as ZigBee.Device.Rollershade;
                                rollershade.IsOnline = (common as Rollershade).IsOnline;
                                rollershade.IsOnline = common.IsOnline;
                                //记录回复时间
                                rollershade.LastDateTime = DateTime.Now;
                                break;
                            case DeviceType.Thermostat:
                                var ac = deviceUI.CommonDevice as ZigBee.Device.AC;
                                ac.IsOnline = (common as ZigBee.Device.AC).IsOnline;
                                ac.IsOnline = common.IsOnline;
                                //记录回复时间
                                ac.LastDateTime = DateTime.Now;
                                break;
                            case DeviceType.DimmableLight:
                                var dimmableLight = deviceUI.CommonDevice as ZigBee.Device.DimmableLight;
                                dimmableLight.IsOnline = (common as ZigBee.Device.DimmableLight).IsOnline;
                                dimmableLight.IsOnline = common.IsOnline;
                                //记录回复时间
                                dimmableLight.LastDateTime = DateTime.Now;
                                break;
@@ -368,8 +393,18 @@
        {
            Y = Application.GetRealHeight(CommonPage.AppRealHeight - CommonPage.TabbarHeight),
            Height = Application.GetRealHeight(CommonPage.TabbarHeight),
            BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCTopViewBackgroundColor,
            BackgroundColor = Shared.Common.ZigbeeColor.Current.GXCBottomColor,
        };
        #region 分割线
        private Button bottomLine = new Button
        {
            Height = 1,
            BackgroundColor = ZigbeeColor.Current.GXCBottomLineColor
        };
        #endregion
        #region 底部-主页按钮
        /// <summary>
@@ -402,10 +437,11 @@
            Y = Application.GetRealHeight(tabBarEnumName_Y),
            Height = Application.GetRealHeight(tabBarEnumName_Height),
            TextID = R.MyInternationalizationString.HomePage,
            TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor,
            SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlueColor,
            TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBottomUnSelectedColor,
            SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor2,
            IsSelected = true,
            Gravity = Gravity.CenterHorizontal
            Gravity = Gravity.CenterHorizontal,
            TextSize = 10
        };
        #endregion
@@ -439,10 +475,11 @@
            Y = Application.GetRealHeight(tabBarEnumName_Y),
            Height = Application.GetRealHeight(tabBarEnumName_Height),
            TextID = R.MyInternationalizationString.Category,
            TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor,
            SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlueColor,
            TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBottomUnSelectedColor,
            SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor2,
            IsSelected = false,
            Gravity = Gravity.CenterHorizontal
            Gravity = Gravity.CenterHorizontal,
            TextSize=10
        };
        #endregion
@@ -476,27 +513,17 @@
            Y = Application.GetRealHeight(tabBarEnumName_Y),
            Height = Application.GetRealHeight(tabBarEnumName_Height),
            TextID = R.MyInternationalizationString.Me,
            TextColor = ZigbeeColor.Current.GXCTextBlackColor,
            SelectedTextColor = ZigbeeColor.Current.GXCTextBlueColor,
            TextColor = Shared.Common.ZigbeeColor.Current.GXCTextBottomUnSelectedColor,
            SelectedTextColor = Shared.Common.ZigbeeColor.Current.GXCTextBlackColor2,
            IsSelected = false,
            Gravity = Gravity.CenterHorizontal
            Gravity = Gravity.CenterHorizontal,
            TextSize = 10
        };
        #endregion
        #region 分割线
        private FrameLayout bottomLine = new FrameLayout
        {
            Height = 3,
            BackgroundColor = ZigbeeColor.Current.GXCBackgroundColor
        };
        #endregion
        EventHandler<MouseEventArgs> BottomEventHandler = (sender, e) =>
        {
            Room.GetAllRoomDeviceUIList();
            Instance.homePageName.IsSelected = false;
            Instance.homePageIMG.IsSelected = false;
@@ -530,7 +557,7 @@
                 //个人中心
                Instance.settingName.IsSelected = true;
                Instance.settingIMG.IsSelected = true;
                var form = new UserCenter.User.UserMainForm();
                var form = new UserCenter.UserMain.UserMainForm();
                Instance.BodyView.AddChidren(form);
                form.ShowForm();
            }
@@ -557,6 +584,8 @@
            AddChidren(BodyView);
            AddChidren(BottomMenuView);
            BottomMenuView.AddChidren(Instance.bottomLine);
            Instance.homePageFL.AddChidren(Instance.homePageIMG);
            Instance.homePageFL.AddChidren(Instance.homePageName);
            BottomMenuView.AddChidren(Instance.homePageFL);
@@ -568,8 +597,6 @@
            Instance.settingFL.AddChidren(Instance.settingIMG);
            Instance.settingFL.AddChidren(Instance.settingName);
            BottomMenuView.AddChidren(Instance.settingFL);
            BottomMenuView.AddChidren(Instance.bottomLine);
            homePageIMG.MouseUpEventHandler += BottomEventHandler;
            homePageName.MouseUpEventHandler += BottomEventHandler;