xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -27,6 +27,12 @@
        /// </summary>
        Button btnLinkStateTip;
        /// <summary>
        /// 安防状态图标
        /// </summary>
        Button btnSecurityStatus;
        /// <summary>
        ///住宅名称显示
        /// </summary>
        Button btnResidenceName;
@@ -35,13 +41,21 @@
        /// </summary>
        FrameLayout environmentalView;
        /// <summary>
        /// 当前温度信息
        /// 当前温度信息-室外
        /// </summary>
        TextButton btnTempValues;
        /// <summary>
        /// 当前湿度信息
        /// 当前湿度信息-室外
        /// </summary>
        TextButton btnHumidityValues;
        /// <summary>
        /// 当前温度信息-室内
        /// </summary>
        TextButton btnIndoorTempValues;
        /// <summary>
        /// 当前湿度信息-室内
        /// </summary>
        TextButton btnIndoorHumiValues;
        /// <summary>
        /// 当前pm2.5状态
        /// </summary>
@@ -113,6 +127,7 @@
        public void LoadPage()
        {
            MainPage.CurPageIndex = 0;
            try
            {
                this.BeginHeaderRefreshingAction = () =>
@@ -120,6 +135,10 @@
                    this.EndHeaderRefreshing();
                    Common.ApiUtlis.Ins.DownloadData();
                    LoadContentView();
                    if(!CurShowTypeIsFunction)
                    {
                        contentView.PageIndex = 1;
                    }
                };
                #region topView
@@ -152,7 +171,7 @@
                topView.AddChidren(btnLinkStateTip);
                //更新链接状态icon颜色
                CheckLinkStatus();//2020-12-22
                //LoadEvent_CheckLinkStatus();
                btnResidenceName = new Button()
                {
@@ -163,16 +182,16 @@
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.EmphasisFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = DB_ResidenceData.Instance.CurrentRegion.Name,
                    Text = DB_ResidenceData.Instance.CurrentRegion.homeName,
                    IsBold = true
                };
                topView.AddChidren(btnResidenceName);
#if DEBUG
                //搜索网关
                int msdId = 111;
                btnResidenceName.MouseUpEventHandler = (sender, e) =>
                {
                    Control.Ins.AuthGateway();
                };
#endif
@@ -183,9 +202,55 @@
                };
                topView.AddChidren(environmentalView);
                #region 环境数据
                var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
                var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
                var enviList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => SPK.EvironmentSensorList().Contains(obj.spk));
                foreach (var enviTemp in enviList)
                {
                    var humiAttr = enviTemp.attributes.Find((obj) => obj.key == "humidity");
                    if (humiAttr != null)
                    {
                        var newTemp = new Function()
                        {
                            name = enviTemp.name,
                            sid = enviTemp.sid,
                            deviceId = enviTemp.deviceId,
                            attributes = new List<FunctionAttributes> { new FunctionAttributes { key = "value", state = humiAttr.state, curValue = humiAttr.curValue } },
                        };
                        humiSensorList.Add(newTemp);
                    }
                    var tempAttr = enviTemp.attributes.Find((obj) => obj.key == "temperature");
                    if (tempAttr != null)
                    {
                        var newTemp = new Function()
                        {
                            name = enviTemp.name,
                            sid = enviTemp.sid,
                            deviceId = enviTemp.deviceId,
                            attributes = new List<FunctionAttributes> { new FunctionAttributes { key = "value", state = tempAttr.state, curValue = tempAttr.curValue } },
                        };
                        tempSensorList.Add(newTemp);
                    }
                }
                var btnEnvirValuesTitle = new Button() {
                    X = Application.GetRealWidth(12),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextID = StringId.Outdoor,
                    TextAlignment = TextAlignment.CenterLeft,
                };
                if (tempSensorList.Count > 0 || humiSensorList.Count > 0)
                {
                    btnEnvirValuesTitle.TextID = StringId.InOutdoor;
                }
                btnEnvirValuesTitle.Width = Application.GetRealWidth(8) + btnEnvirValuesTitle.GetTextWidth();
                environmentalView.AddChidren(btnEnvirValuesTitle);
                Button btnTempIcon = new Button()
                {
                    X = Application.GetRealWidth(12),
                    X = btnEnvirValuesTitle.Right,
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
@@ -196,18 +261,50 @@
                btnTempValues = new TextButton()
                {
                    X = btnTempIcon.Right + Application.GetRealWidth(4),
                    Width = Application.GetRealWidth(30),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = MainPage.cityInfo.temperature + "°",
                    TextAlignment = TextAlignment.CenterLeft,
                };
                btnTempValues.Width = btnTempValues.GetTextWidth();
                environmentalView.AddChidren(btnTempValues);
                btnIndoorTempValues = new TextButton()
                {
                    X = btnTempValues.Right,
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = ""
                };
                if (tempSensorList.Count > 0)
                {
                    btnIndoorTempValues.Text = "/--°";
                    double tempTotalValues = 0;
                    double tempTotalCount = 0;
                    foreach (var temp in tempSensorList)
                    {
                        double tempValue = 0;
                        double.TryParse(temp.GetAttrState(FunctionAttributeKey.Value), out tempValue);
                        if (tempValue > 0)
                        {
                            tempTotalValues += tempValue;
                            tempTotalCount++;
                        }
                    }
                    if (tempTotalValues > 0)
                    {
                        btnIndoorTempValues.Text = "/" + (tempTotalValues/ tempTotalCount).ToString("0.0") + "°";
                    }
                }
                btnIndoorTempValues.Width = btnIndoorTempValues.GetTextWidth();
                environmentalView.AddChidren(btnIndoorTempValues);
                Button btnHumidityIcon = new Button()
                {
                    X = btnTempValues.Right + Application.GetRealWidth(2),
                    X = btnIndoorTempValues.Right + Application.GetRealWidth(8),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
@@ -218,18 +315,50 @@
                btnHumidityValues = new TextButton()
                {
                    X = btnHumidityIcon.Right + Application.GetRealWidth(4),
                    Width = Application.GetRealWidth(30),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = MainPage.cityInfo.humidity + "%",
                    TextAlignment = TextAlignment.CenterLeft,
                };
                btnHumidityValues.Width = btnHumidityValues.GetTextWidth();
                environmentalView.AddChidren(btnHumidityValues);
                btnIndoorHumiValues = new TextButton()
                {
                    X = btnHumidityValues.Right,
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Text = ""
                };
                if (tempSensorList.Count > 0)
                {
                    btnIndoorHumiValues.Text = "/--%";
                    double humiTotalValues = 0;
                    double humiTotalCount = 0;
                    foreach (var humi in humiSensorList)
                    {
                        double humiValue = 0;
                        double.TryParse(humi.GetAttrState(FunctionAttributeKey.Value), out humiValue);
                        if (humiValue > 0)
                        {
                            humiTotalValues += humiValue;
                            humiTotalCount++;
                        }
                    }
                    if (humiTotalValues > 0)
                    {
                        btnIndoorHumiValues.Text = "/" + (humiTotalValues / humiTotalCount).ToString("0") + "%";
                    }
                }
                btnIndoorHumiValues.Width = btnIndoorHumiValues.GetTextWidth();
                environmentalView.AddChidren(btnIndoorHumiValues);
                Button btnPm25Icon = new Button()
                {
                    X = btnHumidityValues.Right + Application.GetRealWidth(2),
                    X = btnIndoorHumiValues.Right + Application.GetRealWidth(4),
                    Gravity = Gravity.CenterVertical,
                    Width = Application.GetMinRealAverage(16),
                    Height = Application.GetMinRealAverage(16),
@@ -240,15 +369,53 @@
                btnPm25Values = new TextButton()
                {
                    X = btnPm25Icon.Right + Application.GetRealWidth(4),
                    Width = Application.GetRealWidth(130),
                    Gravity = Gravity.CenterVertical,
                    TextColor = CSS_Color.MainBackgroundColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    Text = MainPage.cityInfo.pm25,
                    TextAlignment = TextAlignment.CenterLeft,
                };
                btnPm25Values.Width = btnPm25Values.GetTextWidth();
                environmentalView.AddChidren(btnPm25Values);
                #endregion
                btnSecurityStatus = new Button()
                {
                    X = Application.GetRealWidth(329),
                    Y = Application.GetRealHeight(34),
                    Width = Application.GetRealWidth(30),
                    Height = Application.GetRealWidth(30),
                    SelectedImagePath = "Collection/DefenseStatusIcon.png",
                    UnSelectedImagePath = "Collection/DisarmStatusIcon.png"
                };
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                    topView.AddChidren(btnSecurityStatus);
                    foreach (var temp in FunctionList.List.securities)
                    {
                        if (temp.status == "enable")
                        {
                            btnSecurityStatus.IsSelected = true;
                            if (temp.alarm)
                            {
                                btnSecurityStatus.SelectedImagePath = "Collection/DefenseAlarmIcon.png";
                            }
                            else
                            {
                                btnSecurityStatus.SelectedImagePath = "Collection/DefenseStatusIcon.png";
                            }
                            break;
                        }
                    }
                    btnSecurityStatus.MouseUpEventHandler = (sender, e) => {
                        var page = new ArmCenterPage();
                        MainPage.BasePageView.AddChidren(page);
                        page.LoadPage();
                        MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    };
                }
                #region msg
                FrameLayout msgView;
@@ -380,6 +547,153 @@
                MainPage.Log($"HomePage LoadPage Error : {ex.Message}");
            }
#if DEBUG
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.SensorDryContact,
            //    name = "干接点",
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
            //    },
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.AirSwitch,
            //    name = "智能空开",
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //    },
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.AirFreshStandard,
            //    name = "测试新风",
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //        new FunctionAttributes(){ key = "fan",curValue= "low",state = "low" ,value = new List<string>(){ "high", "medium", "low" } },
            //    },
            //});
            FunctionList.List.Functions.Add(new Function()
            {
                spk = SPK.HvacAirFreshJinmao,
                name = "测试金茂新风",
                attributes = new List<FunctionAttributes>()
                {
                    new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                    new FunctionAttributes(){ key = "mode",curValue= "humidification",state = "humidification" ,value = new List<string>(){ "humidification", "fan" } },
                    new FunctionAttributes(){ key = "energy",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
                    new FunctionAttributes(){ key = "fan",curValue= "level_1",state = "level_1" ,value = new List<string>(){ "level_1", "level_2", "level_3","auto" } },
                    new FunctionAttributes(){ key = "humidity",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
                    new FunctionAttributes(){ key = "indoor_temp",curValue= "26",state = "26" ,value = new List<string>(){  },min = 0,max = 100 },
                    new FunctionAttributes(){ key = "indoor_humidity",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
                    new FunctionAttributes(){ key = "filter_remain",curValue= "0",state = "0" ,value = new List<string>(){  },min = 0,max = 100 },
                    new FunctionAttributes(){ key = "filter_timeout",curValue= "false",state = "false" ,value = new List<string>(){ "true", "false"  }},
                },
            });
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.SensorGas,
            //    name = "燃气传感器",
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "enable",curValue= "true",state = "true" ,value = new List<string>(){ "true", "false" } },
            //        new FunctionAttributes(){ key = "status",curValue= "normal",state = "normal" ,value = new List<string>(){ "alarm", "normal" } },
            //    },
            //});
            //FunctionList.List.Functions.Add(new Function() { spk = SPK.PjtIr, name = "测试投影仪",
            //                            attributes = new List<FunctionAttributes>() {
            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
            //                            }
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.StbIr,
            //    name = "测试机顶盒",
            //    attributes = new List<FunctionAttributes>() {
            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
            //                            }
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.TvIr,
            //    name = "测试电视",
            //    attributes = new List<FunctionAttributes>() {
            //                                new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //                                new FunctionAttributes(){ key = "computer",value = new List<string>(){"电脑" } },
            //                                new FunctionAttributes(){ key = "video",value = new List<string>(){"视频" } },
            //                                new FunctionAttributes(){ key = "source",value = new List<string>(){"信号源" } },
            //                                new FunctionAttributes(){ key = "zoom+",value = new List<string>(){"变焦+" } },
            //                                new FunctionAttributes(){ key = "zoom-",value = new List<string>(){"变焦-" } },
            //                                new FunctionAttributes(){ key = "page+",value = new List<string>(){"画面+" } },
            //                                new FunctionAttributes(){ key = "page-",value = new List<string>(){"画面-" } },
            //                                new FunctionAttributes(){ key = "menu",value = new List<string>(){"菜单" } },
            //                                new FunctionAttributes(){ key = "ok",value = new List<string>(){"确认" } },
            //                                new FunctionAttributes(){ key = "up",value = new List<string>(){"上" } },
            //                                new FunctionAttributes(){ key = "left",value = new List<string>(){"左" } },
            //                                new FunctionAttributes(){ key = "right",value = new List<string>(){"右" } },
            //                                new FunctionAttributes(){ key = "down",value = new List<string>(){"下" } },
            //                                new FunctionAttributes(){ key = "exit",value = new List<string>(){"退出" } },
            //                                new FunctionAttributes(){ key = "volume+",value = new List<string>(){"音量+" } },
            //                                new FunctionAttributes(){ key = "volume-",value = new List<string>(){"音量-" } },
            //                                new FunctionAttributes(){ key = "mute",value = new List<string>(){"静音" } },
            //                                new FunctionAttributes(){ key = "auto",value = new List<string>(){"自动" } },
            //                                new FunctionAttributes(){ key = "pause",value = new List<string>(){"暂停" } },
            //                            }
            //});
#endif
        }
        /// <summary>
        /// 加载内容区域
@@ -413,8 +727,13 @@
                            sceneFunctionView = new VerticalScrolViewLayout();
                            contentView.AddChidren(sceneFunctionView);
                            LoadSceneFunctionControlZone();
                            contentView.PageIndex = 0;
                            if (CurShowTypeIsFunction)
                            {
                                contentView.PageIndex = 0;
                            }else
                            {
                                contentView.PageIndex = 1;
                            }
                            LoadEvent_ChangeShowedFunctionType();
@@ -422,7 +741,11 @@
                            GetUnreadPushMessages();
                            RegisterGetPushMessageAction();
                            waitPage.Hide();
                            if (waitPage != null)
                            {
                                waitPage.RemoveFromParent();
                                waitPage = null;
                            }
                        });
                    }
                    catch (Exception ex) {
@@ -441,7 +764,15 @@
                sceneFunctionView = new VerticalScrolViewLayout();
                contentView.AddChidren(sceneFunctionView);
                LoadSceneFunctionControlZone();
                contentView.PageIndex = 0;
                if (CurShowTypeIsFunction)
                {
                    contentView.PageIndex = 0;
                }
                else
                {
                    contentView.PageIndex = 1;
                }
                LoadEvent_ChangeShowedFunctionType();
@@ -459,7 +790,6 @@
        /// </summary>
        void LoadDeviceFunctionControlZone()
        {
            #region ContextView
            deviceFunctionView.RemoveAll();
            functionViews.Clear();
@@ -467,12 +797,18 @@
            try
            {
                int index = 0;
                foreach (var function in FunctionList.List.GetDeviceFunctionList())
                var list = FunctionList.List.GetDeviceFunctionList();
                foreach (var function in list)
                {
                    //音乐模块有主从关系,需要特殊处理
                    if (function.Spk_Prefix == FunctionCategory.Music)
                    if (SPK.MusicSpkList().Contains( function.spk))
                    {
                        var music = function as Music.A31MusicModel;
                        //var music = function as Music.A31MusicModel;
                        var music = Music.A31MusicModel.A31MusicModelList.Find((obj) => obj.sid == function.sid);
                        if (music == null)
                        {
                            continue;
                        }
                        if (music.ServerClientType == -1)
                        {
                            continue;
@@ -672,6 +1008,11 @@
                };
                view.AddChidren(btnIcon);
                btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                Button btnName;
                btnName = new Button()
                {
@@ -732,15 +1073,16 @@
                    SelectedImagePath = "Collection/CollectionWhiteIcon.png",
                    UnSelectedImagePath = "Collection/CollectionIcon.png",
                };
                //view.AddChidren(btnCollection);
                view.AddChidren(btnCollection);
                //2020-12-16 如果是成员隐藏收藏功能
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                {
                    view.AddChidren(btnCollection);
                }
                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                //{
                //    view.AddChidren(btnCollection);
                //}
                LoadEvent_FunctionCollection(btnCollection, function);
                if (function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
                if (//SPK.CurtainSpkList().Contains(function.spk))
                    function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex )
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
@@ -769,26 +1111,26 @@
                    };
                    view.AddChidren(btnCurtainOpen);
                    LoadEvent_ControlCurtain(function as Curtain, btnCurtainClose, btnCurtainOpen);
                    LoadEvent_ControlCurtain(function, btnCurtainClose, btnCurtainOpen);
                }
                else if (function.spk == SPK.ElectricTV)
                else if (SPK.NotStatusSpkList.Contains(function.spk))
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/TVIcon.png";
                    Button btnPower;
                    btnPower = new Button()
                    {
                        X = Application.GetRealWidth(131),
                        Y = Application.GetRealHeight(86),
                        Y = Application.GetRealHeight(80),
                        Width = Application.GetRealWidth(32),
                        Height = Application.GetRealWidth(32),
                        UnSelectedImagePath = "Public/PowerClose.png",
                        SelectedImagePath = "Public/PowerOpen.png",
                    };
                    view.AddChidren(btnPower);
                    LoadEvent_ControlTV(function as TV, btnPower);
                    LoadEvent_ControlTV(function, btnPower);
                }
                else if (function.spk == SPK.MusicStandard)
                else if (function.spk == SPK.MusicStandard || function.spk == SPK.AvMusic)
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
@@ -831,6 +1173,38 @@
                    };
                }
                else if (function.spk == SPK.ClothesHanger)
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerBlueIcon.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Electrical/Curtain/ClothesHangerBlueIcon.png";
                    Button btnUp;
                    btnUp = new Button()
                    {
                        X = Application.GetRealWidth(84+3),
                        Y = Application.GetRealWidth(89),
                        Width = Application.GetRealWidth(38),
                        Height = Application.GetRealWidth(38),
                        UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon2.png",
                        SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerUpIcon2On.png",
                    };
                    view.AddChidren(btnUp);
                    Button btnDown;
                    btnDown = new Button()
                    {
                        X = btnUp.Right + Application.GetRealWidth(3),
                        Y = Application.GetRealWidth(89),
                        Width = Application.GetRealWidth(38),
                        Height = Application.GetRealWidth(38),
                        UnSelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon2.png",
                        SelectedImagePath = "FunctionIcon/Electrical/ClothesHanger/ClothesHangerDownIcon2On.png",
                    };
                    view.AddChidren(btnDown);
                    LoadEvent_ControlClothesHanger(function, btnUp, btnDown);
                }
                else
                {
@@ -846,64 +1220,14 @@
                    };
                    view.AddChidren(btnSwitch);
                    switch (function.Spk_Prefix)
                    {
                        //todo 增加设备,主页收藏图标
                        case FunctionCategory.Light:
                            #region 灯光 Light
                            btnIcon.UnSelectedImagePath = "FunctionIcon/Light/LightIcon.png";
                            btnIcon.SelectedImagePath = "FunctionIcon/Light/LightOnIcon.png";
                            UpdataFunctionStates(function as Light);
                            #endregion
                            break;
                        case FunctionCategory.AC:
                            #region 空调 AC
                            btnIcon.UnSelectedImagePath = "FunctionIcon/AC/AcIcon.png";
                            btnIcon.SelectedImagePath = "FunctionIcon/AC/AcOnIcon.png";
                            #endregion
                            break;
                        case FunctionCategory.FloorHeat:
                            #region 地热
                            btnIcon.UnSelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingIcon.png";
                            btnIcon.SelectedImagePath = "FunctionIcon/FloorHeating/FloorHeatingOnIcon.png";
                            #endregion
                            break;
                        case FunctionCategory.Electric:
                            switch (function.spk)
                            {
                                case SPK.ElectricSocket:
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Socket/SocketIcon.png";
                                    btnIcon.SelectedImagePath = "FunctionIcon/Socket/SocketOnIcon.png";
                                    break;
                                case SPK.ElectricFan:
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/Electrical/FanIcon.png";
                                    btnIcon.SelectedImagePath = "FunctionIcon/Electrical/FanOnIcon.png";
                                    break;
                                case SPK.ElectricTuyaAirCleaner:
                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIcon.png";
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/AirCleanerIconOn.png";
                                    break;
                                case SPK.ElectricTuyaFan:
                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/FanIcon.png";
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/FanIconOn.png";
                                    break;
                                case SPK.ElectricTuyaWaterValve:
                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIcon.png";
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WaterValveIconOn.png";
                                    break;
                                case SPK.ElectricTuyaWeepRobot:
                                    btnIcon.SelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIcon.png";
                                    btnIcon.UnSelectedImagePath = "FunctionIcon/HomePageIcon/WeepRobotIconOn.png";
                                    break;
                            }
                            break;
                    }
                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                    LoadEvent_SwitchFunction(function, btnSwitch);
                }
                //取消收藏事件
                Action cannelCollect = () => {
                    function.collect = false;
                    if (function.Spk_Prefix == FunctionCategory.Music)//处理音乐主从关系
                    if (SPK.MusicSpkList().Contains(function.spk))//处理音乐主从关系
                    {
                        if ((function as Music.A31MusicModel).ServerClientType == 1)
                        {
@@ -916,13 +1240,14 @@
                    function.CollectFunction();
                };
                var skipControlPageEvent = new PublicAssmebly().LoadEvent_SkipFunctionControlPage(function, btnCollection, btnName, btnZone);
                view.MouseUpEventHandler = skipControlPageEvent;
                btnName.MouseUpEventHandler = skipControlPageEvent;
                btnIcon.MouseUpEventHandler = skipControlPageEvent;
                btnState.MouseUpEventHandler = skipControlPageEvent;
                //电视不需要更新状态
                if(function.spk!= SPK.ElectricTV)
                //不需要更新状态的动能列表
                if(!SPK.NotStatusSpkList.Contains(function.spk))
                {
                    UpdataFunctionStates(function);
                }
@@ -968,7 +1293,7 @@
                    Width = Application.GetRealWidth(32),
                    UnSelectedImagePath = "Public/FuncInfoSetIcon_white.png",
                };
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                if (scene.userId == UserInfo.Current.ID)
                {
                    view.AddChidren(btnSettingIcon);
                }
@@ -1013,12 +1338,12 @@
                    SelectedImagePath = "Collection/CollectionWhiteIcon.png",
                    UnSelectedImagePath = "Collection/CollectionIcon.png",
                };
                //view.AddChidren(btnCollection);
                view.AddChidren(btnCollection);
                //2020-12-16 如果是成员隐藏收藏功能
                if (!DB_ResidenceData.Instance.CurrentRegion.IsOthreShare)
                {
                    view.AddChidren(btnCollection);
                }
                //if (!DB_ResidenceData.Instance.CurrentRegion.isOtherShare)
                //{
                //    view.AddChidren(btnCollection);
                //}
                LoadEvent_SceneCollection(btnCollection, scene);