wxr
2024-08-27 7b9c970fd38835624f07185cd2ce4659dbb93200
HDL_ON/UI/UI2/FuntionControlView/Acst/WaterHeaterJinmaoPage.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using com.hdl.on;
using HDL_ON.DriverLayer;
using HDL_ON.Entity;
using HDL_ON.UI.CSS;
@@ -14,10 +15,142 @@
        FrameLayout bottomView;
        Function function;
        /// <summary>
        /// 热水模式状态区域
        /// </summary>
        FrameLayout modeFreeView;
        /// <summary>
        /// 热水模式状态图标
        /// </summary>
        Button modeFree_IconButton;
        /// <summary>
        /// 热水模式状态文本
        /// </summary>
        Button modeFree_TextButton;
        /// <summary>
        /// 热水温度值
        /// </summary>
        Button btnTempValues;
        /// <summary>
        /// 热水温度单位
        /// </summary>
        Button btnTempValuesUint;
        /// <summary>
        /// 节能模式控制按钮
        /// </summary>
        Button btnControlModeEconomic;
        /// <summary>
        /// 节能模式控制区域
        /// </summary>
        FrameLayout mode_EconomicView;
        /// <summary>
        /// 节能模式图标按钮
        /// </summary>
        Button mode_Economic_IconButton;
        /// <summary>
        /// 节能模式文本按钮
        /// </summary>
        Button mode_Economic_TextButton;
        /// <summary>
        /// 速热模式控制按钮
        /// </summary>
        Button btnControlModeQuickHeat;
        /// <summary>
        /// 速热模式控制区域
        /// </summary>
        FrameLayout mode_QuickHeatView;
        /// <summary>
        /// 速热模式图标按钮
        /// </summary>
        Button mode_QuickHeat_IconButton;
        /// <summary>
        /// 速热模式文本按钮
        /// </summary>
        Button mode_QuickHeat_TextButton;
        /// <summary>
        /// 设置温度文本按钮
        /// </summary>
        Button setTemp_ValuesButton;
        /// <summary>
        /// 设置温度单位按钮
        /// </summary>
        Button setTemp_UintButton;
        /// <summary>
        /// 设置温度控制控件
        /// </summary>
        DiyImageSeekBar setTemp_Bar;
        /// <summary>
        /// 热水流量数据按钮
        /// </summary>
        Button flow_ValuesButton;
        /// <summary>
        /// 热水总流量数据按钮
        /// </summary>
        Button flow_VolumeButton;
        /// <summary>
        /// 热水流量比控件
        /// </summary>
        DiyImageSeekBar flow_ValuesBar;
        /// <summary>
        /// 热回收百分比数据按钮
        /// </summary>
        Button flow_HeatRecoveryProgressButton;
        /// <summary>
        /// 热回收数据按钮
        /// </summary>
        Button flow_HeatRecoverytValuesButton;
        /// <summary>
        /// 电直驱百分比数据按钮
        /// </summary>
        Button flow_ElectricDriveProgressButton;
        /// <summary>
        /// 电直驱数据按钮
        /// </summary>
        Button flow_ElectricDriveValuesButton;
        string volumeString = string.Empty;
        string recyclVolumeString = string.Empty;
        double volume = 0;
        double recyclVolume = 0;
        int recyclVolumePercent = 0;
        /// <summary>
        /// 热回收节电量数据按钮
        /// </summary>
        Button socialContribution_Info1_ValuesButton;
        /// <summary>
        /// 热回收节电量单位按钮
        /// </summary>
        Button socialContribution_Info1_UintButton;
        /// <summary>
        /// CO2减排量数据按钮
        /// </summary>
        Button socialContribution_Info2_ValuesButton;
        /// <summary>
        /// CO2减排量单位按钮
        /// </summary>
        Button socialContribution_Info2_UintButton;
        /// <summary>
        /// 等效植树量数据按钮
        /// </summary>
        Button socialContribution_Info3_UintButton;
        /// <summary>
        /// 等效植树量单位按钮
        /// </summary>
        Button socialContribution_Info3_ValuesButton;
        /// <summary>
        /// 开关按钮
        /// </summary>
        Button btnPowerControl;
        public WaterHeaterJinmaoPage(Function deviceFunction)
        {
            bodyView = this;
            function = deviceFunction;
            this.BackgroundColor = CSS_Color.BackgroundColor;
        }
        public void LoadPage(Action action)
@@ -25,7 +158,6 @@
            var topView = new TopViewDiv(bodyView, function.name);
            topView.LoadTopView_FunctionTop(function, action);
            contentView = new VerticalScrolViewLayout()
            {
@@ -47,6 +179,7 @@
            initContentView();
            initBottomView();
            initControlEvent();
            Control.Ins.SendReadCommand(function);
        }
        /// <summary>
@@ -69,20 +202,20 @@
            };
            contentView.AddChidren(infoView);
            var infoView_ModeFreeView = new FrameLayout()
            modeFreeView = new FrameLayout()
            {
                X = 0 - Application.GetRealWidth(14),
                Y = Application.GetRealWidth(12),
                Width = Application.GetRealWidth(68 + 14),
                Height = Application.GetRealWidth(28),
                BackgroundColor = 0x15FC9C04,
                Radius = (uint)Application.GetRealHeight(14),
                Radius = (uint)Application.GetRealWidth(14),
                BorderColor = 0x00FFFFFF,
                BorderWidth = 0,
            };
            infoView.AddChidren(infoView_ModeFreeView);
            infoView.AddChidren(modeFreeView);
            var infoView_ModeFree_IconButton = new Button()
            modeFree_IconButton = new Button()
            {
                X = Application.GetRealWidth(8 + 14),
                Gravity = Gravity.CenterVertical,
@@ -90,17 +223,17 @@
                Height = Application.GetRealWidth(12),
                UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_False.png",
            };
            infoView_ModeFreeView.AddChidren(infoView_ModeFree_IconButton);
            modeFreeView.AddChidren(modeFree_IconButton);
            var infoView_ModeFree_TextButton = new Button()
            modeFree_TextButton = new Button()
            {
                X = Application.GetRealWidth(8 + 14 + 8 + 12),
                X = Application.GetRealWidth(8 + 14 + 4 + 12),
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 14,
                TextColor = 0xFFFC9C04,
                Text = "用电",
            };
            infoView_ModeFreeView.AddChidren(infoView_ModeFree_TextButton);
            modeFreeView.AddChidren(modeFree_TextButton);
            var infoView_Temp_View = new FrameLayout()
            {
@@ -111,7 +244,7 @@
            };
            infoView.AddChidren(infoView_Temp_View);
            var btnTempValues = new Button()
            btnTempValues = new Button()
            {
                Y = Application.GetRealWidth(34),
                Gravity = Gravity.CenterVertical,
@@ -129,7 +262,8 @@
#endif
            btnTempValues.Gravity = Gravity.CenterHorizontal;
            infoView_Temp_View.AddChidren(btnTempValues);
            var btnTempValuesUint = new Button()
            btnTempValuesUint = new Button()
            {
                X = btnTempValues.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(40),
@@ -178,8 +312,8 @@
            {
                Width = Application.GetRealWidth(16),
            });
            var mode_EconomicView = new FrameLayout()
            //节能
            mode_EconomicView = new FrameLayout()
            {
                Width = Application.GetRealWidth(165),
                Height = Application.GetRealWidth(52),
@@ -191,7 +325,7 @@
            };
            modeView.AddChidren(mode_EconomicView);
            var mode_Economic_IconButton = new Button()
            mode_Economic_IconButton = new Button()
            {
                Width = Application.GetRealWidth(20),
                Height = Application.GetRealWidth(20),
@@ -201,7 +335,7 @@
            };
            mode_EconomicView.AddChidren(mode_Economic_IconButton);
            var mode_Economic_TextButton = new Button()
            mode_Economic_TextButton = new Button()
            {
                Width = Application.GetRealWidth(80),
                X = Application.GetRealWidth(73 + 8),
@@ -217,8 +351,12 @@
                Width = Application.GetRealWidth(13),
            });
            btnControlModeEconomic = new Button();
            mode_EconomicView.AddChidren(btnControlModeEconomic);
            //速热
            var mode_QuickHeatView = new FrameLayout()
            mode_QuickHeatView = new FrameLayout()
            {
                Width = Application.GetRealWidth(165),
                Height = Application.GetRealWidth(52),
@@ -230,7 +368,7 @@
            };
            modeView.AddChidren(mode_QuickHeatView);
            var mode_QuickHeat_IconButton = new Button()
            mode_QuickHeat_IconButton = new Button()
            {
                Width = Application.GetRealWidth(20),
                Height = Application.GetRealWidth(20),
@@ -240,7 +378,8 @@
            };
            mode_QuickHeatView.AddChidren(mode_QuickHeat_IconButton);
            var mode_QuickHeat_TextButton = new Button()
            mode_QuickHeat_TextButton = new Button()
            {
                Width = Application.GetRealWidth(80),
                X = Application.GetRealWidth(81),
@@ -250,6 +389,10 @@
                Text = "速热"
            };
            mode_QuickHeatView.AddChidren(mode_QuickHeat_TextButton);
            btnControlModeQuickHeat = new Button();
            mode_QuickHeatView.AddChidren(btnControlModeQuickHeat);
            #endregion
            #region 设置温度
@@ -279,7 +422,7 @@
            };
            setTempView.AddChidren(setTemp_TextButtont);
            var setTemp_Temp_ValuesTextButton = new Button()
            setTemp_ValuesButton = new Button()
            {
                Y = Application.GetRealWidth(34),
                Gravity = Gravity.CenterVertical,
@@ -291,15 +434,16 @@
                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "---"),
            };
#if __IOS__
            setTemp_Temp_ValuesTextButton.Width = setTemp_Temp_ValuesTextButton.GetTextWidth() + Application.GetRealWidth(8);
            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            setTemp_Temp_ValuesTextButton.Width = setTemp_Temp_ValuesTextButton.GetTextWidth();
            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth();
#endif
            setTemp_Temp_ValuesTextButton.Gravity = Gravity.CenterHorizontal;
            setTempView.AddChidren(setTemp_Temp_ValuesTextButton);
            var setTemp_Temp_ValuesUintButton = new Button()
            setTemp_ValuesButton.Gravity = Gravity.CenterHorizontal;
            setTempView.AddChidren(setTemp_ValuesButton);
            setTemp_UintButton = new Button()
            {
                X = setTemp_Temp_ValuesTextButton.Right - Application.GetRealWidth(4),
                X = setTemp_ValuesButton.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(40),
                Height = Application.GetRealWidth(66),
                TextAlignment = TextAlignment.TopLeft,
@@ -308,7 +452,7 @@
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = "°C"
            };
            setTempView.AddChidren(setTemp_Temp_ValuesUintButton);
            setTempView.AddChidren(setTemp_UintButton);
            int setTempValue = 0;
@@ -316,7 +460,7 @@
            double dd = 0;
            double.TryParse(function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "--"), out dd);
            setTempValue = Convert.ToInt32(dd);
            var setTemp_Temp_Bar = new DiyImageSeekBar()
            setTemp_Bar = new DiyImageSeekBar()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealHeight(126 - 72),
@@ -332,7 +476,7 @@
                IsProgressTextShow = false,
                ProgressChangeDelayTime = 0,
            };
            setTempView.AddChidren(setTemp_Temp_Bar);
            setTempView.AddChidren(setTemp_Bar);
            var setTemp_Temp_MinValuesTextButton = new Button()
            {
@@ -379,7 +523,7 @@
            };
            contentView.AddChidren(flowView);
            var flow_ValuesButton = new Button()
            flow_ValuesButton = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealWidth(14),
@@ -388,7 +532,7 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 16,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = "热水流量:0.3L/min",
                Text = "热水流量:" + function.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()) + "L/min",
                IsBold = true,
            };
            flowView.AddChidren(flow_ValuesButton);
@@ -406,20 +550,30 @@
            };
            flowView.AddChidren(flow_HotWaterVolumeTextButton);
            var flow_HotWaterVolumeValuesButton = new Button()
            string volumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString());
            string recyclVolumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString());
            double volume = 0;
            double.TryParse(volumeString, out volume);
            double recyclVolume = 0;
            double.TryParse(recyclVolumeString, out recyclVolume);
            int recyclVolumePercent = (int)(recyclVolume / volume * 100);
            flow_VolumeButton = new Button()
            {
                X = Application.GetRealWidth(343 - 116),
                Y = Application.GetRealWidth(55),
                Width = Application.GetRealWidth(100),
                Height = Application.GetRealWidth(26),
                Text = "24t",
                Text = volumeString + "t",
                TextAlignment = TextAlignment.CenterRight,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextSize = CSS_FontSize.TextFontSize,
            };
            flowView.AddChidren(flow_HotWaterVolumeValuesButton);
            flowView.AddChidren(flow_VolumeButton);
            var flow_ValuesBar = new DiyImageSeekBar()
            flow_ValuesBar = new DiyImageSeekBar()
            {
                Gravity = Gravity.CenterHorizontal,
                Y = Application.GetRealWidth(79),
@@ -430,7 +584,7 @@
                ProgressBarColor = 0xFF42D163,
                SeekBarBackgroundColor = 0xFFFFB848,
                MaxValue = 100,
                Progress = 80,
                Progress = recyclVolumePercent,
                SeekBarPadding = Application.GetRealWidth(0),
                IsProgressTextShow = false,
                ProgressChangeDelayTime = 0,
@@ -452,7 +606,7 @@
            };
            flowView.AddChidren(flow_HeatRecoveryCapacitytTextButton);
            var flow_HeatRecoveryCapacitytProgressButton = new Button()
            flow_HeatRecoveryProgressButton = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealWidth(125),
@@ -461,11 +615,11 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 14,
                TextColor = 0xFF00C22D,
                Text = "80%"
                Text = recyclVolumePercent + "%"
            };
            flowView.AddChidren(flow_HeatRecoveryCapacitytProgressButton);
            flowView.AddChidren(flow_HeatRecoveryProgressButton);
            var flow_HeatRecoveryCapacitytValuesButton = new Button()
            flow_HeatRecoverytValuesButton = new Button()
            {
                X = Application.GetRealWidth(16),
                Y = Application.GetRealWidth(148),
@@ -474,13 +628,13 @@
                TextAlignment = TextAlignment.CenterLeft,
                TextSize = 14,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = "19.2t"
                Text = recyclVolume + "t"
            };
            flowView.AddChidren(flow_HeatRecoveryCapacitytValuesButton);
            flowView.AddChidren(flow_HeatRecoverytValuesButton);
            var flow_ElectricDirectDriveQuantityTextButton = new Button()
            var flow_ElectricDriveTextButton = new Button()
            {
                X = Application.GetRealWidth(343 - 116),
                Y = Application.GetRealWidth(103),
@@ -491,9 +645,9 @@
                TextColor = 0xFFFC9C04,
                Text = "电直驱量"
            };
            flowView.AddChidren(flow_ElectricDirectDriveQuantityTextButton);
            flowView.AddChidren(flow_ElectricDriveTextButton);
            var flow_ElectricDirectDriveQuantityProgressButton = new Button()
            flow_ElectricDriveProgressButton = new Button()
            {
                X = Application.GetRealWidth(343 - 116),
                Y = Application.GetRealWidth(125),
@@ -502,11 +656,11 @@
                TextAlignment = TextAlignment.CenterRight,
                TextSize = 14,
                TextColor = 0xFFFC9C04,
                Text = "20%"
                Text = (100 - recyclVolumePercent) + "%"
            };
            flowView.AddChidren(flow_ElectricDirectDriveQuantityProgressButton);
            flowView.AddChidren(flow_ElectricDriveProgressButton);
            var flow_ElectricDirectDriveQuantityValuesButton = new Button()
            flow_ElectricDriveValuesButton = new Button()
            {
                X = Application.GetRealWidth(343 - 116),
                Y = Application.GetRealWidth(148),
@@ -515,9 +669,9 @@
                TextAlignment = TextAlignment.CenterRight,
                TextSize = 14,
                TextColor = CSS_Color.FirstLevelTitleColor,
                Text = "4.8t"
                Text = (volume - recyclVolume) + "t"
            };
            flowView.AddChidren(flow_ElectricDirectDriveQuantityValuesButton);
            flowView.AddChidren(flow_ElectricDriveValuesButton);
            #endregion
@@ -567,13 +721,13 @@
            };
            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_IconButton);
            var socialContribution_Info1_ValuesButton = new Button()
            socialContribution_Info1_ValuesButton = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealWidth(68),
                Width = Application.GetRealWidth(36),
                Height = Application.GetRealWidth(25),
                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()),
                Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()),
                TextSize = 18,
                TextColor = CSS_Color.FirstLevelTitleColor,
                TextAlignment = TextAlignment.BottomLeft,
@@ -586,7 +740,7 @@
#endif
            socialContribution_InfoView_1.AddChidren(socialContribution_Info1_ValuesButton);
            var socialContribution_Info1_UintButton = new Button()
            socialContribution_Info1_UintButton = new Button()
            {
                X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(68),
@@ -637,7 +791,7 @@
            };
            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_IconButton);
            var socialContribution_Info2_ValuesButton = new Button()
            socialContribution_Info2_ValuesButton = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealWidth(68),
@@ -656,7 +810,8 @@
#endif
            socialContribution_InfoView_2.AddChidren(socialContribution_Info2_ValuesButton);
            var socialContribution_Info2_UintButton = new Button()
            socialContribution_Info2_UintButton = new Button()
            {
                X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(68),
@@ -707,7 +862,7 @@
            };
            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_IconButton);
            var socialContribution_Info3_ValuesButton = new Button()
            socialContribution_Info3_ValuesButton = new Button()
            {
                X = Application.GetRealWidth(12),
                Y = Application.GetRealWidth(68),
@@ -726,7 +881,7 @@
#endif
            socialContribution_InfoView_3.AddChidren(socialContribution_Info3_ValuesButton);
            var socialContribution_Info3_UintButton = new Button()
            socialContribution_Info3_UintButton = new Button()
            {
                X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4),
                Y = Application.GetRealWidth(68),
@@ -759,10 +914,12 @@
        }
        /// <summary>
        /// 加载底部区域
        /// </summary>
        private void initBottomView()
        {
            var btnPowerControl = new Button()
            btnPowerControl = new Button()
            {
                Width = Application.GetRealWidth(50),
                Height = Application.GetRealWidth(50),
@@ -774,10 +931,12 @@
            };
            bottomView.AddChidren(btnPowerControl);
            btnPowerControl.MouseUpEventHandler = (sender, e) => {
            btnPowerControl.MouseUpEventHandler = (sender, e) =>
            {
                btnPowerControl.IsSelected = !btnPowerControl.IsSelected;
                new System.Threading.Thread(() => {
                new System.Threading.Thread(() =>
                {
                    Dictionary<string, string> d = new Dictionary<string, string>();
                    d.Add(FunctionAttributeKey.OnOff, btnPowerControl.IsSelected ? "on" : "off");
                    Control.Ins.SendWriteCommand(function, d);
@@ -787,10 +946,343 @@
        }
        /// <summary>
        /// 初始化控制事件
        /// </summary>
        private void initControlEvent()
        {
            //节能模式控制
            btnControlModeEconomic.MouseUpEventHandler = (sender, e) =>
            {
                if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != WaterHeaterJinmao_Attr_ModeEnum.economic.ToString())
                {
                    new System.Threading.Thread(() =>
                    {
                        var dic = new Dictionary<string, string>();
                        dic.Add(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.economic.ToString());
                        Control.Ins.SendWriteCommand(function, dic);
                        function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.economic.ToString());
                        Application.RunOnMainThread(() =>
                        {
                            updateModeUI();
                        });
                    })
                    { IsBackground = true }.Start();
                }
            };
            //速热模式控制
            btnControlModeQuickHeat.MouseUpEventHandler = (sender, e) =>
            {
                if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString())
                {
                    new System.Threading.Thread(() =>
                    {
                        var dic = new Dictionary<string, string>();
                        dic.Add(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString());
                        Control.Ins.SendWriteCommand(function, dic);
                        function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString(), WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString());
                        Application.RunOnMainThread(() =>
                        {
                            updateModeUI();
                        });
                    })
                    { IsBackground = true }.Start();
                }
            };
            //设置温度调节
            setTemp_Bar.OnStopTrackingTouchEvent = (sender, e) =>
            {
                new System.Threading.Thread(() =>
                {
                    var dic = new Dictionary<string, string>();
                    dic.Add(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), setTemp_Bar.Progress.ToString());
                    Control.Ins.SendWriteCommand(function, dic);
                    function.SetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), setTemp_Bar.Progress.ToString());
                })
                { IsBackground = true }.Start();
            };
            setTemp_Bar.OnProgressChangedEvent = (sender, e) => {
                setTemp_ValuesButton.Text = e.ToString();
            };
            //开关控制
            btnPowerControl.MouseUpEventHandler = (sender, e) =>
            {
                btnPowerControl.IsSelected = !btnPowerControl.IsSelected;
                function.SetAttrState(FunctionAttributeKey.OnOff.ToString(), btnPowerControl.IsSelected ? "on" : "off");
                new System.Threading.Thread(() =>
                {
                    var dic = new Dictionary<string, string>();
                    dic.Add(FunctionAttributeKey.OnOff.ToString(), function.GetAttrState(FunctionAttributeKey.OnOff.ToString()));
                    Control.Ins.SendWriteCommand(function, dic);
                })
                { IsBackground = true }.Start();
            };
        }
        /// <summary>
        /// 更新界面状态
        /// </summary>
        /// <param name="temp"></param>
        public void UpdateStatus(Function temp)
        {
            if (bodyView == null)
            {
                return;
            }
            //免费热水
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()))
            {
                function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()));
                Application.RunOnMainThread(() =>
                {
                    updateFreeMode();
                });
            }
            //热水温度
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()))
            {
                function.SetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString()));
                Application.RunOnMainThread(() =>
                {
                    updateTemp();
                });
            }
            //热水器模式
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()))
            {
                function.SetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()));
                Application.RunOnMainThread(() =>
                {
                    updateModeUI();
                });
            }
            //热水器设置温度
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()))
            {
                function.SetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), temp.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString()));
                Application.RunOnMainThread(() =>
                {
                    updateSetTemp();
                });
            }
            //热水流量
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()))
            {
                Application.RunOnMainThread(() =>
                {
                    updateFlow();
                });
            }
            //热水总量
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString()) ||
                function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString()))
            {
                Application.RunOnMainThread(() =>
                {
                    updateVolume();
                });
            }
            //社会贡献-节电量
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString()))
            {
                updateSocialContribution1();
            }
            //社会贡献-co2
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString()))
            {
                updateSocialContribution2();
            }
            //社会贡献-植树
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString()) != temp.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString()))
            {
                updateSocialContribution3();
            }
            //开关按钮
            if (function.GetAttrState(FunctionAttributeKey.OnOff.ToString()) != temp.GetAttrState(FunctionAttributeKey.OnOff.ToString()))
            {
                updatePowerButton();
            }
        }
        /// <summary>
        /// 更新免费热水模式状态UI
        /// </summary>
        private void updateFreeMode()
        {
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode_free.ToString()) != "true")
            {
                modeFreeView.BackgroundColor = 0x1500C22D;
                modeFreeView.Width = Width = Application.GetRealWidth(82 + 14);
                modeFree_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_True.png";
                modeFree_TextButton.Text = "热回收";
                modeFree_TextButton.TextColor = 0xFF00C22D;
            }
            else
            {
                modeFreeView.BackgroundColor = 0x15FC9C04;
                modeFreeView.Width = Width = Application.GetRealWidth(68 + 14);
                modeFree_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/ModeFree_False.png";
                modeFree_TextButton.Text = "用电";
                modeFree_TextButton.TextColor = 0xFFFC9C04;
            }
        }
        /// <summary>
        /// 更新热水温度UI
        /// </summary>
        private void updateTemp()
        {
            btnTempValues.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.temp.ToString(), "---");
#if __IOS__
            btnTempValues.Width = btnTempValues.GetTextWidth() + Application.GetRealWidth(8);
#else
            btnTempValues.Width = btnTempValues.GetTextWidth();
#endif
            btnTempValues.Gravity = Gravity.CenterHorizontal;
            btnTempValuesUint.X = btnTempValues.Right - Application.GetRealWidth(4);
        }
        /// <summary>
        /// 更新模式UI
        /// </summary>
        private void updateModeUI()
        {
            if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) == WaterHeaterJinmao_Attr_ModeEnum.economic.ToString())
            {
                //节能
                mode_EconomicView.BorderColor = 0xFF00C22D;
                mode_EconomicView.BackgroundColor = 0xFFEBFAEE;
                mode_Economic_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_Economic_On.png";
                mode_Economic_TextButton.TextColor = CSS_Color.FirstLevelTitleColor;
                //速热
                mode_QuickHeatView.BorderColor = 0x0000C22D;
                mode_QuickHeatView.BorderWidth = (uint)Application.GetRealWidth(1);
                mode_QuickHeatView.BackgroundColor = CSS_Color.MainBackgroundColor;
                mode_QuickHeat_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_QuickHeat.png";
                mode_QuickHeat_TextButton.TextColor = CSS_Color.TextualColor;
            }
            else if (function.GetAttrState(WaterHeaterJinmao_AttrEnum.mode.ToString()) == WaterHeaterJinmao_Attr_ModeEnum.quick_heat.ToString())
            {
                //节能
                mode_EconomicView.BorderColor = 0x0000C22D;
                mode_EconomicView.BackgroundColor = CSS_Color.MainBackgroundColor;
                mode_Economic_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_Economic.png";
                mode_Economic_TextButton.TextColor = CSS_Color.TextualColor;
                //速热
                mode_QuickHeatView.BorderColor = 0xFFFC9C04;
                mode_QuickHeatView.BackgroundColor = 0xFFFFF7EB;
                mode_QuickHeat_IconButton.UnSelectedImagePath = "FunctionIcon/Acst/WaterHeater/Mode_QuickHeat_On.png";
                mode_QuickHeat_TextButton.TextColor = CSS_Color.FirstLevelTitleColor;
            }
        }
        /// <summary>
        /// 更新热水器设置温度UI
        /// </summary>
        private void updateSetTemp()
        {
            setTemp_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "---");
#if __IOS__
            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            setTemp_ValuesButton.Width = setTemp_ValuesButton.GetTextWidth();
#endif
            setTemp_ValuesButton.Gravity = Gravity.CenterHorizontal;
            setTemp_UintButton.X = setTemp_ValuesButton.Right - Application.GetRealWidth(4);
            double dd = 0;
            double.TryParse(function.GetAttrState(WaterHeaterJinmao_AttrEnum.set_temp.ToString(), "0"), out dd);
            setTemp_Bar.Progress = Convert.ToInt32(dd) - 35;
        }
        /// <summary>
        /// 更新热水流量数据UI
        /// </summary>
        private void updateFlow()
        {
            flow_ValuesButton.Text = "热水流量:" + function.GetAttrState(WaterHeaterJinmao_AttrEnum.flow.ToString()) + "L/min";
        }
        /// <summary>
        /// 更新热水总量数据UI
        /// </summary>
        private void updateVolume()
        {
            volumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.volume.ToString());
            recyclVolumeString = function.GetAttrState(WaterHeaterJinmao_AttrEnum.recycl_volume.ToString());
            volume = 0;
            double.TryParse(volumeString, out volume);
            double.TryParse(recyclVolumeString, out recyclVolume);
            recyclVolumePercent = (int)(recyclVolume / volume * 100);
            flow_VolumeButton.Text = volumeString + "t";
            flow_ValuesBar.Progress = recyclVolumePercent;
            flow_HeatRecoveryProgressButton.Text = recyclVolumePercent + "%";
            flow_HeatRecoverytValuesButton.Text = recyclVolume + "t";
            flow_ElectricDriveProgressButton.Text = (100 - recyclVolumePercent) + "%";
            flow_ElectricDriveValuesButton.Text = (volume - recyclVolume) + "t";
        }
        /// <summary>
        /// 更新社会贡献1数据UI
        /// </summary>
        private void updateSocialContribution1()
        {
            socialContribution_Info1_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.energy_electricity.ToString());
#if __IOS__
            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            socialContribution_Info1_ValuesButton.Width = socialContribution_Info1_ValuesButton.GetTextWidth();
#endif
            socialContribution_Info1_UintButton.X = socialContribution_Info1_ValuesButton.Right - Application.GetRealWidth(4);
        }
        /// <summary>
        /// 更新社会贡2献数据UI
        /// </summary>
        private void updateSocialContribution2()
        {
            socialContribution_Info3_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.co2.ToString());
#if __IOS__
            socialContribution_Info3_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            socialContribution_Info2_ValuesButton.Width = socialContribution_Info2_ValuesButton.GetTextWidth();
#endif
            socialContribution_Info2_UintButton.X = socialContribution_Info2_ValuesButton.Right - Application.GetRealWidth(4);
        }
        /// <summary>
        /// 更新社会贡3献数据UI
        /// </summary>
        private void updateSocialContribution3()
        {
            socialContribution_Info3_ValuesButton.Text = function.GetAttrState(WaterHeaterJinmao_AttrEnum.trees.ToString());
#if __IOS__
            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth() + Application.GetRealWidth(8);
#else
            socialContribution_Info3_ValuesButton.Width = socialContribution_Info3_ValuesButton.GetTextWidth();
#endif
            socialContribution_Info3_UintButton.X = socialContribution_Info3_ValuesButton.Right - Application.GetRealWidth(4);
        }
        /// <summary>
        /// 更新开关按钮状态
        /// </summary>
        private void updatePowerButton()
        {
            btnPowerControl.IsSelected = function.GetAttrState(FunctionAttributeKey.OnOff.ToString()) == "on";
        }
    }
}