wxr
2021-07-01 43b0d5870d528f23ecd6aeceb6cfd4325188b46f
HDL_ON/Entity/FunctionList.cs
@@ -41,19 +41,8 @@
        /// <returns></returns>
        public List<Function> GetAcList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.AcStandard || obj.spk == SPK.AcIr);
        }
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public List<Function> GetList()
        {
            List<Function> list = new List<Function>();
            return list;
            var spkList = SPK.AcSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
@@ -61,24 +50,16 @@
        /// </summary>
        public List<Function> GetLightList()
        {
            return Functions.FindAll((obj) =>
                        obj.spk == SPK.LightSwitch
                     || obj.spk == SPK.LightDimming
                     || obj.spk == SPK.LightRGB
                     || obj.spk == SPK.LightRGBW
                     || obj.spk == SPK.LightCCT);
            var spkList = SPK.LightSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 窗帘列表
        /// </summary>
        public List<Function> GetCurtainList()
        {
            return Functions.FindAll((obj) =>
                       obj.spk == SPK.CurtainRoller
                    || obj.spk == SPK.CurtainShades
                    || obj.spk == SPK.CurtainSwitch
                    || obj.spk == SPK.CurtainTrietex
            );
            var spkList = SPK.CurtainSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
@@ -86,72 +67,41 @@
        /// </summary>
        public List<Function> GetFloorHeatingList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.FloorHeatStandard);
            var spkList = SPK.FhSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 新风列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetAirFreshList()
        {
            var spkList = SPK.AirFreshSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 能源列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetEnergyList()
        {
            var spkList = SPK.EnergySpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        #region 家电列表 electricals
        /// <summary>
        /// 家电列表
        /// </summary>
        public List<Function> GetElectricals()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ElectricFan || obj.spk == SPK.ElectricTuyaFan
                || obj.spk == SPK.ElectricSocket
                || obj.spk == SPK.ElectricTV
                || obj.spk == SPK.ElectricTuyaAirCleaner
                || obj.spk == SPK.ElectricTuyaWeepRobot
                || obj.spk == SPK.ElectricTuyaWaterValve
                || obj.spk == SPK.ClothesHanger);
            var spkList = SPK.ElectricalSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 风扇列表
        /// </summary>
        public List<Function> GetFanList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ElectricFan || obj.spk == SPK.ElectricTuyaFan);
        }
        /// <summary>
        /// 电视列表
        /// </summary>
        public List<Function> GetTVList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTV);
        }
        /// <summary>
        /// 家电插座列表
        /// </summary>
        public List<Function> GetElectricSocketList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ElectricSocket);
        }
        /// <summary>
        /// 空气净化器列表
        /// </summary>
        public List<Function> GetAirCleanerList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaAirCleaner);
        }
        /// <summary>
        /// 扫地机器人列表
        /// </summary>
        public List<Function> GetWeepRobotList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaWeepRobot);
        }
        /// <summary>
        /// 水阀列表
        /// </summary>
        public List<Function> GetWaterValveList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ElectricTuyaWaterValve);
        }
        /// <summary>
        /// 凉霸列表
        /// </summary>
        public List<Function> GetClothesHangerList ()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.ClothesHanger);
        }
        /// <summary>
        /// 红外宝列表
        /// </summary>
@@ -159,40 +109,82 @@
        {
            return Functions.FindAll((obj) => obj.spk == SPK.IrModule);
        }
        #endregion
        /// <summary>
        /// 音乐列表
        /// </summary>
        /// <returns></returns>
        public List<Function> GetMusicList()
        {
            var spkList = SPK.MusicSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 环境传感器列表
        /// </summary>
        public List<Function> GetEnvirSensorsList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.SensorPm25
                    || obj.spk == SPK.SensorCO2
                    || obj.spk == SPK.SensorTVOC
                    || obj.spk == SPK.SensorTemperature
                    || obj.spk == SPK.SensorHumidity
                    );
            var spkList = SPK.EnvironSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 安防设备列表
        /// </summary>
        public List<Function> GetArmSensorList()
        {
            return Functions.FindAll((obj) => obj.spk == SPK.SensorSmoke
                    || obj.spk == SPK.SensorWater
                    || obj.spk == SPK.SensorDoorWindow
                    || obj.spk == SPK.SensorPir
            );
            var spkList = SPK.ArmSensorSpkList();
            return Functions.FindAll((obj) => spkList.Contains(obj.spk));
        }
        /// <summary>
        /// 可视对讲列表,当为null或size为0则不显示可视对讲icon
        /// </summary>
        // public UI.UI2.FuntionControlView.Video.VideoClouds videoIntercom;
        public List<UI.UI2.FuntionControlView.Video.Video> videoIntercom = new List<UI.UI2.FuntionControlView.Video.Video>();
        List<Function> _OtherBrandFunction;
        /// <summary>
        /// 第三方品牌功能
        /// </summary>
        public List<Function> OtherBrandFunction
        {
            get
            {
                if(_OtherBrandFunction == null)
                {
                    _OtherBrandFunction = new List<Function>();
                    var spkList = SPK.GetAll3tySPK();
                    _OtherBrandFunction = Functions.FindAll((obj) => spkList.Contains(obj.spk));
                }
                return _OtherBrandFunction;
            }
        }
        /// <summary>
        /// 场景列表
        /// </summary>
        public List<Scene> scenes = new List<Scene>();
        /// <summary>
        /// 安防列表
        /// </summary>
        public List<SecurityAlarm> securities = new List<SecurityAlarm>();
        /// <summary>
        /// 加载功能列表
        /// </summary>
        /// <param name="filePath"></param>
        public void IniFunctionList(string filePath)
        /// <param name="checkRepeat">
        /// <para>考虑到性能问题追加此变量,是否检测重复,只对function有效</para>
        /// <para>true:当重复存在时,替换掉</para>
        /// <para>false:直接无条件添加</para></param>
        public void IniFunctionList(string filePath, bool checkRepeat = false)
        {
            //MainPage.Log("12346890sdkxghjkl");
            // todo 增加设备,增加功能进功能列表
            if (filePath.StartsWith("FunctionData_"))
            {
@@ -201,13 +193,30 @@
                var tempFunction = Newtonsoft.Json.JsonConvert.DeserializeObject<Function>(functionDataString);
                if (tempFunction == null)
                {
                    MainPage.Log("null");
                    FileUtlis.Files.DeleteFile(filePath);
                    return;
                }
                //音乐部分要修改
                //if(tempFunction.spk.ToString() == SPK.MusicStandard)
                //{
                //    UI.Music.A31MusicModel.A31MusicModelList.Add(Newtonsoft.Json.JsonConvert.DeserializeObject<UI.Music.A31MusicModel>(functionDataString));
                //}
                if (checkRepeat == true)
                {
                    //检测重复
                    for (int i = 0; i < Functions.Count; i++)
                    {
                        if (Functions[i].deviceId == tempFunction.deviceId)
                        {
                            //先移除掉再加
                            Functions.RemoveAt(i);
                            Functions.Add(tempFunction);
                            return;
                        }
                    }
                }
                Functions.Add(tempFunction);
            }
            if (filePath.StartsWith("SceneData_"))
            {
@@ -215,6 +224,33 @@
                var sceneDataString = System.Text.Encoding.UTF8.GetString(sceneDataBytes);
                var tempScene = Newtonsoft.Json.JsonConvert.DeserializeObject<Scene>(sceneDataString);
                List.scenes.Add(tempScene);
            }
            else if (filePath.StartsWith("SecurityData_"))
            {
                var dataBytes = FileUtlis.Files.ReadFile(filePath);
                var dataString = System.Text.Encoding.UTF8.GetString(dataBytes);
                var temp = Newtonsoft.Json.JsonConvert.DeserializeObject<SecurityAlarm>(dataString);
                if (temp == null)
                {
                    MainPage.Log("null");
                    FileUtlis.Files.DeleteFile(filePath);
                    return;
                }
                if (checkRepeat == true)
                {
                    //检测重复
                    for (int i = 0; i < securities.Count; i++)
                    {
                        if (securities[i].sid == temp.sid)
                        {
                            //先移除掉再加
                            securities.RemoveAt(i);
                            securities.Add(temp);
                            return;
                        }
                    }
                }
                securities.Add(temp);
            }
        }
@@ -256,6 +292,9 @@
            return Functions;
        }
        /// <summary>
        /// 清空设备功能列表
@@ -310,6 +349,7 @@
                List.scenes.Remove(scene);
            }
        }
        /// <summary>
        /// 删除本地功能及文件
        /// </summary>
@@ -427,6 +467,7 @@
            })
            { IsBackground = true }.Start();
        }
        #region 场景相关
        /// <summary>
        /// 添加场景