wjc
2022-10-13 fba3a6c55c4de790eaeee55f9897d668bb36dbb8
HDL_ON/UI/UI2/1-HomePage/HomePage.cs
@@ -161,23 +161,9 @@
                };
                topView.AddChidren(btnTop);
                btnLinkStateTip = new Button()
                {
                    X = Application.GetRealWidth(16),
                    Y = Application.GetRealHeight(46),
                    Width = Application.GetRealWidth(6),
                    Height = Application.GetRealWidth(6),
                    BackgroundColor = CSS_Color.LinkTipFail,
                    Radius = (uint)Application.GetRealWidth(3),
                };
                topView.AddChidren(btnLinkStateTip);
                //更新链接状态icon颜色
                CheckLinkStatus();//2020-12-22
                btnResidenceName = new Button()
                {
                    X = Application.GetRealWidth(26),
                    X = Application.GetRealWidth(16),
                    Y = Application.GetRealHeight(32),
                    Width = Application.GetRealWidth(300),
                    Height = Application.GetRealHeight(33),
@@ -188,12 +174,56 @@
                    IsBold = true
                };
                topView.AddChidren(btnResidenceName);
                btnLinkStateTip = new Button()
                {
                    //X = Application.GetRealWidth(16),
                    Y = btnResidenceName.Bottom,
                    Height = Application.GetRealWidth(14),
                    BackgroundColor = CSS_Color.LinkTipFail,
                    TextAlignment = TextAlignment.Center,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextColor = CSS_Color.MainBackgroundColor,
                };
                topView.AddChidren(btnLinkStateTip);
                //btnLinkStateTip.Width = btnLinkStateTip.GetTextWidth();
                //更新链接状态icon颜色
                int ddd = 0;
#if DEBUG
                int msdId = 111;
                btnResidenceName.MouseUpEventHandler = (sender, e) =>
                {
                    Control.Ins.AuthGateway();
                        var imageUrl = ImageUtlis.Current.GetSceneDefaultIconList();
                    if (imageUrl != null)
                    {
                    }
                    //if (UserInfo.Current.VerOpenDoorPw || string.IsNullOrEmpty(UserInfo.Current.doorPasswordString))
                    //{
                    //    var page = new DoorLockUnlockPage(new Function());
                    //    MainPage.BasePageView.AddChidren(page);
                    //    page.LoadView();
                    //    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                    //}
                    //else
                    //{
                    //    Control.Ins.OneKeyUnlocking(new Function(), UserInfo.Current.doorPasswordString);
                    //}
                //ddd++;
                //    Function function_online = FunctionList.List.GetLightList().Find((obj) => obj.sid == "0001017DB92D2602020100010101");
                //    if(ddd%2 == 0)
                //    {
                //        function_online.online = true;
                //    }
                //    else
                //    {
                //        function_online.online = false;
                //    }
                //    HomePage.LoadEvent_RefreshDevcieOnline(function_online);
                };
#endif
@@ -203,6 +233,8 @@
                    Height = Application.GetRealHeight(32),
                };
                topView.AddChidren(environmentalView);
                CheckLinkStatus();//2020-12-22
                #region 环境数据
                var tempSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorTemperature);
                var humiSensorList = FunctionList.List.GetEnvirSensorsList().FindAll((obj) => obj.spk == SPK.SensorHumidity);
@@ -390,7 +422,7 @@
                    SelectedImagePath = "Collection/DefenseStatusIcon.png",
                    UnSelectedImagePath = "Collection/DisarmStatusIcon.png"
                };
                if (false && DB_ResidenceData.Instance.GatewayType == 1)
                if (DB_ResidenceData.Instance.GatewayType == 1)
                {
                        
                    topView.AddChidren(btnSecurityStatus);
@@ -552,7 +584,103 @@
#if DEBUG
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试梦幻窗帘",
                spk = SPK.CurtainDream,
                sid = "1234577",
                attributes = new List<FunctionAttributes> {
                    new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
                    new FunctionAttributes(){ key = "percent",curValue= "100",state = "100" },
                    new FunctionAttributes(){ key = "angle",curValue= "0",state = "0" },
                }
            });
            //FunctionList.List.Functions.Add(new Function
            //{
            //    name = "测试毫米波传感器",
            //    spk = SPK.SenesorMegahealth,
            //    attributes = new List<FunctionAttributes>
            //    {
            //        new FunctionAttributes(){ key = "enable",curValue = "true",state = "true" },
            //        new FunctionAttributes(){ key = "people_num",curValue = "0",state = "0" },
            //        new FunctionAttributes(){ key = "people_id",curValue = "1",state = "1" },
            //        new FunctionAttributes(){ key = "target_status",curValue = "0",state = "0" },//0空,1走,2跑,3坐,4跌倒,5站
            //        new FunctionAttributes(){ key = "people_status",curValue = "false",state = "false" },//状态  有人无人
            //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
            //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
            //        //new FunctionAttributes(){ key = "",curValue = "",state = "" },
            //    }
            //});
            FunctionList.List.Functions.Add(new Function
            {
                name = "测试温控器",
                spk = SPK.HvacCac,
                attributes = new List<FunctionAttributes>
                {
                    new FunctionAttributes(){ key = "on_off",curValue = "on",state = "on" },
                    new FunctionAttributes(){ key = "cac_valve",curValue = "on",state = "on" },//毛细阀
                    new FunctionAttributes(){ key = "fh_valve",curValue = "on",state = "on" },//地暖阀
                    new FunctionAttributes(){ key = "mode",curValue = "cool",state = "cool", value = new List<string>{ "cool","heat"} },
                    new FunctionAttributes(){ key = "set_temp",curValue = "20",state = "20",min = 16,max = 30 },
                    new FunctionAttributes(){ key = "room_temp",curValue = "20",state = "20" },
                    new FunctionAttributes(){ key = "dew_point_temp",curValue = "20",state = "20" },//露点温度
                    new FunctionAttributes(){ key = "surface_temp",curValue = "20",state = "20" },//表面温度
                    new FunctionAttributes(){ key = "energy_saving",curValue = "true",state = "true" },//节能
                    new FunctionAttributes(){ key = "room_humidity",curValue = "66",state = "66" },
                    //new FunctionAttributes(){ key = "",curValue = "",state = "" },
                }
            });
            //FunctionList.List.Functions.Add(new Function
            //{
            //    name = "门锁",
            //    spk = SPK.DoorLock,
            //    sid = "12345",
            //    attributes = new List<FunctionAttributes> {
            //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
            //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
            //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
            //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
            //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
            //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
            //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
            //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
            //    }
            //});
            //FunctionList.List.Functions.Add(new Function
            //{
            //    name = "门锁1",
            //    spk = SPK.DoorLock,
            //    sid = "123",
            //    attributes = new List<FunctionAttributes> {
            //        new FunctionAttributes(){ key = "door_status",curValue= "open",state = "open" },
            //        new FunctionAttributes(){ key = "normal_open",curValue= "true",state = "true" },
            //        new FunctionAttributes(){ key = "normal_open_countdown",curValue= "10",state = "10" },
            //        new FunctionAttributes(){ key = "local_id",curValue= "10",state = "10" },
            //        new FunctionAttributes(){ key = "door_volume",curValue= "10",state = "10" },
            //        new FunctionAttributes(){ key = "door_volume_step",curValue= "up",state = "up" },
            //        new FunctionAttributes(){ key = "battery_value",curValue= "100",state = "100" },
            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "100",state = "100" },
            //        new FunctionAttributes(){ key = "battery_state",curValue= "high",state = "high" },
            //    }
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.PanelSocket,
            //    name = "面板插座",
            //    attributes = new List<FunctionAttributes>
            //    {
            //        new FunctionAttributes(){ key = "on_off",curValue= "on",state = "on" },
            //        new FunctionAttributes(){ key = "on_off_usb",curValue= "on",state = "on" },
            //        new FunctionAttributes(){ key = "active_power",curValue= "220",state = "220" },
            //        new FunctionAttributes(){ key = "voltage",curValue= "5",state = "5" },
            //        new FunctionAttributes(){ key = "current",curValue= "110",state = "110" },
            //        new FunctionAttributes(){ key = "total_electricity",curValue= "123.33",state = "123.33" },
            //    }
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
@@ -561,6 +689,43 @@
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
            //    },
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.SensorPm25,
            //    name = "测试Pm2.5",
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "pm25",curValue= "70",state = "70" },
            //    },
            //    attrKeyConfigs = new List<AttrKeyConfig>()
            //    {
            //        new AttrKeyConfig (){
            //            key = "pm2.5",
            //            type = "interval" ,
            //            unit = "ug/m²",
            //            configs = new List<AttrKeyInfo>(){
            //               new AttrKeyInfo(){ start = "0",end = "75",color = "0xFFADE764", desc = "良好"},
            //               new AttrKeyInfo(){ start = "76",end = "150",color = "0xFFFFD154",desc = "轻/中度污染"},
            //               new AttrKeyInfo(){ start = "151",end = "500",color = "0xFFFF9D54",desc = "重度/严重污染"},
            //            }
            //        }
            //    },
            //});
            //FunctionList.List.Functions.Add(new Function()
            //{
            //    spk = SPK.SensorHelp,
            //    name = "测试紧急求助按钮",
            //    attributes = new List<FunctionAttributes>()
            //    {
            //        new FunctionAttributes(){ key = "status",curValue= "on",state = "on" },
            //        new FunctionAttributes(){ key = "alarm_status",curValue= "alarm",state = "alarm" },
            //        new FunctionAttributes(){ key = "battery_value",curValue= "200",state = "200" },
            //        new FunctionAttributes(){ key = "battery_percentage",curValue= "10",state = "10" },
            //        new FunctionAttributes(){ key = "battery_state",curValue= "low",state = "low" },
            //    },
            //});
@@ -586,23 +751,23 @@
            //});
            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.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()
            //{
@@ -806,30 +971,31 @@
                    //音乐模块有主从关系,需要特殊处理
                    if (SPK.MusicSpkList().Contains( function.spk))
                    {
                        continue;
                        //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;
                        }
                        else if (music.ServerClientType == 1)
                        {
                            if (!music.MainPlayCollection)
                            {
                                continue;
                            }
                        }
                        else
                        {
                            if (!music.collect)
                            {
                                continue;
                            }
                        }
                        //var music = Music.A31MusicModel.A31MusicModelList.Find((obj) => obj.sid == function.sid);
                        //if (music == null)
                        //{
                        //    continue;
                        //}
                        //if (music.ServerClientType == -1)
                        //{
                        //    continue;
                        //}
                        //else if (music.ServerClientType == 1)
                        //{
                        //    if (!music.MainPlayCollection)
                        //    {
                        //        continue;
                        //    }
                        //}
                        //else
                        //{
                        //    if (!music.collect)
                        //    {
                        //        continue;
                        //    }
                        //}
                    }
                    else
                    {
@@ -874,6 +1040,17 @@
                    functionViews.Add(functionView);
                    LoadDeviceFunctionDiv(functionView, function);
                    index++;
                    if(SPK.ArmSensorSpkList().Contains(function.spk))
                    {
                        btnbg.UnSelectedImagePath = "Collection/FunctionOnbg.png";
                        btnbg.SelectedImagePath = "Collection/FunctionArmOnbg.png";
                    }
                    //if (!function.online)
                    //{
                    //    btnbg.UnSelectedImagePath = "Collection/FunctionOfflineBg.png";
                    //}
                }
                if (index == 0)
@@ -1011,11 +1188,6 @@
                };
                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()
                {
@@ -1046,6 +1218,7 @@
                };
                view.AddChidren(btnZone);
                Button btnState;
                btnState = new Button()
                {
@@ -1060,6 +1233,69 @@
                    Tag = "state",
                    Text = function.lastState
                };
                if (function.spk == SPK.SenesorMegahealth)
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
                    btnName.TextColor = CSS_Color.MainBackgroundColor;
                    btnZone.TextColor = CSS_Color.MainBackgroundColor;
                    btnState.TextColor = CSS_Color.MainBackgroundColor;
                    var tempStatus = function.attributes.Find((sta) => sta.key == FunctionAttributeKey.TargetStatus);
                    if (tempStatus != null)
                    {
                        switch (tempStatus.state)
                        {//0空,1走,2跑,3坐,4跌倒,5站
                            case "0":
                                function.lastState = Language.StringByID(StringId.SensorNormalState);
                                break;
                            case "1":
                                function.lastState = Language.StringByID(StringId.SomeoneIn);
                                break;
                            case "2":
                                if (function.extSet.labModel)
                                {
                                    function.lastState = Language.StringByID(StringId.SomeoneRunning);
                                }
                                else
                                {
                                    function.lastState = Language.StringByID(StringId.Someone);
                                }
                                break;
                            case "3":
                                if (function.extSet.labModel)
                                {
                                    function.lastState = Language.StringByID(StringId.SomeoneSitting);
                                }
                                else
                                {
                                    function.lastState = Language.StringByID(StringId.Someone);
                                }
                                break;
                            case "4":
                                function.lastState = Language.StringByID(StringId.SomeoneFell);
                                break;
                            case "5":
                                if (function.extSet.labModel)
                                {
                                    function.lastState = Language.StringByID(StringId.SomeoneStanding);
                                }
                                else
                                {
                                    function.lastState = Language.StringByID(StringId.Someone);
                                }
                                break;
                        }
                        btnState.Text = function.lastState;
                    }
                }
                else
                {
                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_blue.png";
                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                }
                if (function.spk != SPK.LightSwitch)
                {
@@ -1086,6 +1322,7 @@
                LoadEvent_FunctionCollection(btnCollection, function);
                if (//SPK.CurtainSpkList().Contains(function.spk))
                    function.spk == SPK.CurtainRoller || function.spk == SPK.CurtainShades ||
                    function.spk == SPK.CurtainDream ||
                    function.spk == SPK.CurtainSwitch || function.spk == SPK.CurtainTrietex )
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Curtain/CurtainIcon.png";
@@ -1137,6 +1374,7 @@
                {
                    btnIcon.UnSelectedImagePath = "FunctionIcon/Music/MusicIcon.png";
                    btnIcon.SelectedImagePath = "FunctionIcon/Music/MusicOnIcon.png";
                    btnCollection.Visible = false;
                    Button btnPower;
                    btnPower = new Button()
                    {
@@ -1148,8 +1386,8 @@
                        SelectedImagePath = "FunctionIcon/Music/MusicPlayOnIcon.png",
                    };
                    view.AddChidren(btnPower);
                    var a31player = (function as UI.Music.A31MusicModel);
                    btnState.Text = a31player.A31PlayStatus.Title;
                    btnState.Text = function.GetAttrState("song_name");
                    btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
                    btnState.TextColor = CSS_Color.MainBackgroundColor;//PromptingColor1
@@ -1158,21 +1396,22 @@
                    btnPower.MouseUpEventHandler = (sender, e) =>
                    {
                        string status = "off";
                        if (btnPower.IsSelected)
                        {
                            btnPower.IsSelected = false;
                            Music.SendMethod.Pause(a31player);
                            a31player.A31PlayStatus.status = "pause";
                            a31player.trait_on_off.curValue = "off";
                            status = "off";
                        }
                        else
                        {
                            btnPower.IsSelected = true;
                            Music.SendMethod.Play(a31player);
                            a31player.A31PlayStatus.status = "play";
                            a31player.trait_on_off.curValue = "on";
                            status = "on";
                        }
                        UpdataFunctionStates(a31player);
                       function.SetAttrState("on_off", status);
                        Dictionary<string, string> dic = new Dictionary<string, string>();
                        dic.Add("on_off", status);
                        Music.SendMethod.Current.SendControlCommand(function, dic);
                    };
                }
@@ -1208,6 +1447,24 @@
                    LoadEvent_ControlClothesHanger(function, btnUp, btnDown);
                }
                else if (function.spk == SPK.SenesorMegahealth)
                {
                    //btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}.png";
                    //btnIcon.SelectedImagePath = "FunctionIcon/Icon/HomeIcon/sensormegahealth.png";
                    //btnIcon.IsSelected = true;
                    btnState.SelectedTextColor = CSS_Color.MainBackgroundColor;
                    btnState.TextColor = CSS_Color.MainColor;//PromptingColor1
                }
                //紧急求助
                else if (function.spk == SPK.SensorHelp)
                {
                    btnName.TextColor = CSS_Color.MainBackgroundColor;
                    btnName.SelectedTextColor = CSS_Color.MainBackgroundColor;
                    btnIcon.UnSelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                    btnIcon.SelectedImagePath = $"FunctionIcon/Icon/HomeIcon/{function.IconName}_white.png";
                }
                else
                {
@@ -1230,14 +1487,14 @@
                //取消收藏事件
                Action cannelCollect = () => {
                    function.collect = false;
                    if (SPK.MusicSpkList().Contains(function.spk))//处理音乐主从关系
                    {
                        if ((function as Music.A31MusicModel).ServerClientType == 1)
                        {
                            (function as Music.A31MusicModel).MainPlayCollection = false;
                            Music.A31MusicModel.Save();
                        }
                    }
                    //if (SPK.MusicSpkList().Contains(function.spk))//处理音乐主从关系
                    //{
                    //    if ((function as Music.A31MusicModel).ServerClientType == 1)
                    //    {
                    //        (function as Music.A31MusicModel).MainPlayCollection = false;
                    //        Music.A31MusicModel.Save();
                    //    }
                    //}
                    string msg = function.name + Language.StringByID(StringId.CollectionCancelled);
                    LoadDeviceFunctionControlZone();
                    function.CollectFunction();
@@ -1254,6 +1511,21 @@
                {
                    UpdataFunctionStates(function);
                }
                var btnOffline = new Button()
                {
                    X = btnIcon.Right,
                    Y = Application.GetRealWidth(16),
                    Height = Application.GetMinRealAverage(32),
                    TextID = StringId.DeviceOffline,
                    TextColor = CSS_Color.WarningColor,
                    TextSize = CSS_FontSize.PromptFontSize_FirstLevel,
                    TextAlignment = TextAlignment.CenterLeft,
                    Tag = "OnlineTag",
                    Visible = !function.online
                };
                view.AddChidren(btnOffline);
            }
            catch (Exception ex)
            {