xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/3-Intelligence/Automation/ConditionDeviceFunList.cs
@@ -13,6 +13,10 @@
            Tag = "Logic";
        }
        /// <summary>
        /// 当前选中的功能
        /// </summary>
        private Entity.Function function = null;
        /// <summary>
        /// 定义一个记录选中设备状态列表;
        /// </summary>
        private List<Dictionary<string, string>> dicSateteList = new List<Dictionary<string, string>>();
@@ -23,6 +27,7 @@
        public void Show(Entity.Function device, int index, bool edit)
        {
            this.function = device;
            #region 界面布局
            this.BackgroundColor = CSS.CSS_Color.viewMiddle;
            LogicView.TopView topView = new LogicView.TopView();
@@ -43,6 +48,7 @@
            switch (device.spk)
            {
                //开关灯光 light.Switch
                case SPK.AirSwitch:
                case SPK.LightDimming:
                case SPK.LightRGB:
                case SPK.LightRGBW:
@@ -54,8 +60,16 @@
                case SPK.CurtainTrietex:
                //空调
                case SPK.AcStandard:
                case SPK.HvacAC:
                //地热
                case SPK.FloorHeatStandard:
                case SPK.HvacFloorHeat:
                //新风
                case SPK.AirFreshStandard:
                case SPK.HvacAirFresh:
                //插座
                case SPK.PanelSocket:
                case SPK.ElectricSocket:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
@@ -108,6 +122,7 @@
                    break;
                //干接点
                case SPK.SensorDryContact:
                case SPK.SensorDryContact2:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
                        view.btnText.TextID = StringId.switchLogic;
@@ -187,6 +202,7 @@
                    break;
                //毫米波传感器
                case SPK.SenesorMegahealth:
                case SPK.SenesorMegahealth2:
                    {
                        LogicView.FunTypeView view = new LogicView.FunTypeView();
                        view.btnText.TextID = StringId.mubiaozhuangtai;//目标状态
@@ -203,6 +219,8 @@
                    break;
                //环境检测传感器
                case SPK.SensorEnvironment:
                case SPK.SensorEnvironment2:
                case SPK.SensorEnvironment3:
                    {
                        #region 界面
                        ///温度
@@ -228,7 +246,11 @@
                        LogicView.FunTypeView tvocView = new LogicView.FunTypeView();
                        tvocView.frameLayout.Y = co2View.frameLayout.Bottom;
                        tvocView.btnText.TextID = StringId.tvoc;
                        fLayout.AddChidren(tvocView.FLayoutView());
                        if (SPK.SensorEnvironment3 != device.spk)
                        {
                            fLayout.AddChidren(tvocView.FLayoutView());
                        }
                        #endregion
                        #region 点击事件
                        ///温度点击事件
@@ -265,6 +287,105 @@
                        };
                        #endregion
                    }
                    break;
                    //温度传感器
                case SPK.SensorTemperature:
                    {
                        ///温度
                        LogicView.FunTypeView wenuView = new LogicView.FunTypeView();
                        wenuView.btnText.TextID = StringId.wendu;
                        fLayout.AddChidren(wenuView.FLayoutView());
                        ///温度点击事件
                        wenuView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            new PublicInterface { }.ViewZuHe(this, StringId.wendugaoyu, StringId.wendudiyu, (intText, view) =>
                            {
                                InputBoxAction(device, intText, index, edit);
                            });
                        };
                    }
                    break;
                //湿度传感器
                case SPK.SensorHumidity:
                    {
                        ///湿度
                        LogicView.FunTypeView shiduView = new LogicView.FunTypeView();
                        shiduView.btnText.TextID = StringId.shidu;
                        fLayout.AddChidren(shiduView.FLayoutView());
                        ///湿度点击事件
                        shiduView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            new PublicInterface { }.ViewZuHe(this, StringId.shidugaoyu, StringId.shidudiyu, (intText, view) =>
                            {
                                InputBoxAction(device, intText, index, edit);
                            });
                        };
                    }
                    break;
                //co2
                case SPK.SensorCO2:
                    {
                        ///co2
                        LogicView.FunTypeView co2View = new LogicView.FunTypeView();
                        co2View.btnText.TextID = StringId.co2;
                        fLayout.AddChidren(co2View.FLayoutView());
                        ///co2点击事件
                        co2View.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            PmCo2TvocAction(this, device, "co2", StringId.co2, index, edit);
                        };
                    }
                    break;
                //pm2.5
                case SPK.SensorPm25:
                    {
                        ///pm2.5
                        LogicView.FunTypeView pm25View = new LogicView.FunTypeView();
                        pm25View.btnText.TextID = StringId.pm25;
                        fLayout.AddChidren(pm25View.FLayoutView());
                        ///pm2.5点击事件
                        pm25View.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            PmCo2TvocAction(this, device, "pm25", StringId.pm25, index, edit);
                        };
                    }
                    break;
                //tvoc
                case SPK.SensorTVOC:
                    {
                        ///tvoc
                        LogicView.FunTypeView tvocView = new LogicView.FunTypeView();
                        tvocView.btnText.TextID = StringId.tvoc;
                        fLayout.AddChidren(tvocView.FLayoutView());
                        ///tvoc点击事件
                        tvocView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            PmCo2TvocAction(this, device, "tvoc", StringId.tvoc, index, edit);
                        };
                    }
                    break;
                //甲醛
                case SPK.SensorHcho:
                    {
                        ///hcho
                        LogicView.FunTypeView hchoView = new LogicView.FunTypeView();
                        hchoView.btnText.TextID = StringId.Formaldehyde;
                        fLayout.AddChidren(hchoView.FLayoutView());
                        ///hcho点击事件
                        hchoView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            PmCo2TvocAction(this, device, "hcho", StringId.Formaldehyde, index, edit);
                        };
                    }
                    break;
            }
@@ -357,22 +478,48 @@
                switch (device.spk)
                {
                    //传感器
                    case SPK.SensorGas:
                    case SPK.SensorWater:
                    case SPK.SensorSmoke:
                    case SPK.SensorGas:
                    case SPK.SensorDryContact:
                    case SPK.SensorShanLan:
                    case SPK.SensorDuiShe:
                    case SPK.SensorPir:
                        {
                            keyVlaue = "status";
                            if (!Is_SpkAttribute(keyVlaue)) {
                                keyVlaue = "alarm_status";
                            }
                        };
                        break;
                    case SPK.SensorDoorWindow:
                    case SPK.SensorDryContact:
                    case SPK.SensorDryContact2:
                        {
                            keyVlaue = "status";
                            if (!Is_SpkAttribute(keyVlaue))
                            {
                                keyVlaue = "contact_status";
                            }
                        }
                        break;
                    case SPK.SensorDuiShe:
                    case SPK.SensorShanLan:
                    case SPK.SensorPir:
                    case SPK.SensorUtrasonic:
                        {
                            keyVlaue = "status";
                            if (!Is_SpkAttribute(keyVlaue))
                            {
                                keyVlaue = "people_status";
                            }
                        }
                        break;
                    case SPK.SenesorMegahealth:
                    case SPK.SenesorMegahealth2:
                        {
                            keyVlaue = "action_state";
                            if (!Is_SpkAttribute(keyVlaue))
                            {
                                keyVlaue = "megahealth_state";
                            }
                        }
                        break;
@@ -408,7 +555,7 @@
                        break;
                    case StringId.wuren:
                        {
                            if (device.spk == SPK.SenesorMegahealth)
                            if (device.spk == SPK.SenesorMegahealth || device.spk == SPK.SenesorMegahealth2)
                            {
                                value = "uninhabited";
                            }
@@ -516,7 +663,7 @@
        /// <param name="index"></param>
        /// <param name="edit"></param>
        /// <param name="stateValue">编辑之前的状态值,默认为""</param>
        public void PmCo2TvocAction(FrameLayout frame, Entity.Function device,string key,int title, int index, bool edit, string stateValue = "")
        public void PmCo2TvocAction(FrameLayout frame, Entity.Function device, string key, int title, int index, bool edit, string stateValue = "")
        {
            if (edit)
            {
@@ -529,15 +676,32 @@
                    dicSateteList = inputs.condition;
                }
            }
            PublicInterface view = new PublicInterface();
            var listStr = view.GetViewList(key);
            PublicInterface view = new PublicInterface();
            var listStr = view.GetViewList(key);
            view.SingleSelectionShow(frame, listStr, Language.StringByID(title), view.GetString(key, stateValue)
               , (text) =>
               {
                   var value = view.GetValue(key, text);
                   selectedState = device.spk + "_"+ key;
                   AddDictionary(key, value, "integer","in");
                   Save(device,index, edit);
                   selectedState = device.spk + "_" + key;
                   switch (device.spk)
                   {
                       case SPK.SensorTemperature:
                       case SPK.SensorHumidity:
                       case SPK.SensorCO2:
                       case SPK.SensorPm25:
                       case SPK.SensorTVOC:
                       case SPK.SensorHcho:
                           {
                               if (!Is_SpkAttribute(key))
                               {
                                   key = "value";
                               }
                           }
                           break;
                   }
                   AddDictionary(key, value, "integer", "in");
                   Save(device, index, edit);
               });
        }
        /// <summary>
@@ -682,6 +846,21 @@
            return false;
        }
        /// <summary>
        /// 识别使用功能是否存在属性
        /// </summary>
        /// <param name="key">设备属性,云雀上定义好的</param>
        /// <returns></returns>
        private bool Is_SpkAttribute(string key) {
            ///修改新属性
            ///识别使用功能是否存在属性
            var job = this.function.GetAttribute(key);
            if (job != null)
            {
                return true;
            }
            return false;
        }
       
    }
}