xm
2021-12-01 6d73bf6e816570291865674bef8bce8972e4de3f
HDL_ON/UI/UI2/3-Intelligence/Automation/InpOrOutLogicMethod.cs
@@ -5,2321 +5,2325 @@
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
    public class InpOrOutLogicMethod
  public class InpOrOutLogicMethod
  {
    /// <summary>
    /// 输入条件处理方法
    /// </summary>
    /// <param name="thisView">当前界面</param>
    /// <param name="viewLayout">上下滑动控件</param>
    public static void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
    {
        /// <summary>
        /// 输入条件处理方法
        /// </summary>
        /// <param name="thisView">当前界面</param>
        /// <param name="viewLayout">上下滑动控件</param>
        public static void InputCondition(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
      for (int i = 0; i < Logic.currlogic.input.Count; i++)
      {
        Input inputCondition = Logic.currlogic.input[i];
        ///各种条件的View
        LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView();
        inputView.FLayoutView(viewLayout);
        //添加没有延时,隐藏延时按钮;
        inputView.btnDelay.Visible = false;
        ///记录条件类型
        inputView.btnClick.Name = inputCondition.condition_type;
        ///记录条件索引
        inputView.btnClick.Tag = inputCondition;
        ///条件状态数组
        List<Dictionary<string, string>> dicList = inputCondition.condition;
        //显示条件各种类型状态
        switch (inputCondition.condition_type)
        {
            for (int i = 0; i < Logic.currlogic.input.Count; i++)
          case "1":
            {
                Input inputCondition = Logic.currlogic.input[i];
                ///各种条件的View
                LogicView.AddOutputInputView inputView = new LogicView.AddOutputInputView();
                inputView.FLayoutView(viewLayout);
                //添加没有延时,隐藏延时按钮;
                inputView.btnDelay.Visible = false;
                ///记录条件类型
                inputView.btnClick.Name = inputCondition.condition_type;
                ///记录条件索引
                inputView.btnClick.Tag = inputCondition;
                ///条件状态数组
                List<Dictionary<string, string>> dicList = inputCondition.condition;
                //显示条件各种类型状态
                switch (inputCondition.condition_type)
              inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
              foreach (var dic in dicList)
              {
                string keyValue = dic["key"];
                string value = dic["value"];
                if (keyValue == "timepoint")
                {
                    case "1":
                        {
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                            foreach (var dic in dicList)
                            {
                                string keyValue = dic["key"];
                                string value = dic["value"];
                                if (keyValue == "timepoint")
                                {
                                    inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value;
                                }
                                else
                                {
                                    string strtext = "";
                                    string statetext = "";
                                    switch (keyValue)
                                    {
                                        case "before_sunrise":
                                            {
                                                strtext = Language.StringByID(StringId.sunrise);
                                                statetext = Language.StringByID(StringId.advanced);
                                            }
                                            break;
                                        case "before_sunset":
                                            {
                                                strtext = Language.StringByID(StringId.sunset);
                                                statetext = Language.StringByID(StringId.advanced);
                                            }
                                            break;
                                        case "before_noon":
                                            {
                                                strtext = Language.StringByID(StringId.at);
                                                statetext = Language.StringByID(StringId.advanced);
                                            }
                                            break;
                                        case "after_sunrise":
                                            {
                                                strtext = Language.StringByID(StringId.sunrise);
                                                statetext = Language.StringByID(StringId.delayLogic);
                                            }
                                            break;
                                        case "after_sunset":
                                            {
                                                strtext = Language.StringByID(StringId.sunset);
                                                statetext = Language.StringByID(StringId.delayLogic);
                                            }
                                            break;
                                        case "after_noon":
                                            {
                                                strtext = Language.StringByID(StringId.at);
                                                statetext = Language.StringByID(StringId.delayLogic);
                                            }
                                            break;
                                    }
                                    if (value != "0")
                                    {
                                        if (value == "30")
                                        {
                                            statetext += value + Language.StringByID(StringId.s);
                                        }
                                        else
                                        {
                                            statetext += value + Language.StringByID(StringId.minute);
                                        }
                                    }
                                    else
                                    {
                                        statetext = "";
                                    }
                                    inputView.btnText.Text = strtext;
                                    inputView.btnState.Text = statetext;
                                }
                            }
                        }
                        break;
                    case "2":
                        {
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
                                inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value;
                            }
                        }
                        break;
                    case "3":
                        {
                            //用sid找到设备;
                            var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
                            //用设备的functionType类型找到对应图标;
                            inputView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
                            //显示设备名称
                            inputView.btnText.Text = device.name;
                            //改变设备名称显示控件宽度
                            inputView.btnText.Width = Application.GetRealWidth(80);
                            //区别不同设备,显示不同设备状态
                            switch (device.spk)
                            {
                                //开关灯光
                                case SPK.AirSwitch:
                                case SPK.LightDimming:
                                case SPK.LightRGB:
                                case SPK.LightRGBW:
                                case SPK.LightCCT:
                                case SPK.LightSwitch:
                                //窗帘
                                case SPK.CurtainSwitch:
                                case SPK.CurtainRoller:
                                case SPK.CurtainTrietex:
                                //空调
                                case SPK.AcStandard:
                                case SPK.HvacAC:
                                //地热
                                case SPK.HvacFloorHeat:
                                case SPK.FloorHeatStandard:
                                //新风
                                case SPK.AirFreshStandard:
                                case SPK.HvacAirFresh:
                                //插座
                                case SPK.PanelSocket:
                                case SPK.ElectricSocket:
                                    {//开关灯
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                    }
                                    break;
                                //传感器
                                case SPK.SensorSmoke:
                                case SPK.SensorGas:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "alarm")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.xieluo);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuxieluo);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorWater:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "alarm")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.luoshui);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuluoshui);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorDryContact:
                                case SPK.SensorDryContact2:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorShanLan:
                                case SPK.SensorDuiShe:
                                case SPK.SensorPir:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "true")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.youren);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorDoorWindow:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "open")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.bihe);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorUtrasonic:
                                    {
                                        string str = "";
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            switch (dic["key"])
                                            {
                                                case "status":
                                                case "people_status":
                                                    {
                                                        if (value == "true")
                                                        {
                                                            str += Language.StringByID(StringId.youren) + ";";
                                                        }
                                                        else
                                                        {
                                                            str += Language.StringByID(StringId.wuren) + ";";
                                                        }
                                                    }
                                                    break;
                                                case "dismantle":
                                                    {
                                                        if (value == "true")
                                                        {
                                                            str += Language.StringByID(StringId.zaixian);
                                                        }
                                                        else
                                                        {
                                                            str += Language.StringByID(StringId.buzaixian);
                                                        }
                                                    }
                                                    break;
                                            }
                                        }
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SenesorMegahealth:
                                case SPK.SenesorMegahealth2:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "fall")
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.diedao);
                                            }
                                            else
                                            {
                                                inputView.btnState.Text = Language.StringByID(StringId.wuren);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.SensorEnvironment:
                                case SPK.SensorEnvironment2:
                                case SPK.SensorEnvironment3:
                                    {
                                        string strtext = "";
                                        foreach (var dic in dicList)
                                        {
                                            string key = dic["key"];
                                            string value = dic["value"];
                                            string comparator = dic["comparator"];
                                            switch (key)
                                            {
                                                case "temperature":
                                                    {
                                                        if (comparator == ">")
                                                        {
                                                            strtext = ">" + value + "℃";
                                                        }
                                                        else if (comparator == "<")
                                                        {
                                                            strtext = "<" + value + "℃";
                                                        }
                                                    }
                                                    break;
                                                case "humidity":
                                                    {
                                                        if (comparator == ">")
                                                        {
                                                            strtext = ">" + value + "%";
                                                        }
                                                        else if (comparator == "<")
                                                        {
                                                            strtext = "<" + value + "%";
                                                        }
                                                    }
                                                    break;
                                                case "co2":
                                                    {
                                                        strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value);
                                                    }
                                                    break;
                                                case "pm25":
                                                    {
                                                        strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value);
                                                    }
                                                    break;
                                                case "tvoc":
                                                    {
                                                        strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value);
                                                    }
                                                    break;
                                            }
                                            inputView.btnState.Text = strtext;
                                        }
                                    }
                                    break;
                                case SPK.SensorTemperature:
                                    {
                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "temperature");
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SensorHumidity:
                                    {
                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "humidity");
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SensorCO2:
                                    {
                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "co2");
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SensorPm25:
                                    {
                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "pm25");
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SensorTVOC:
                                    {
                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "tvoc");
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                                case SPK.SensorHcho:
                                    {
                                        string str = new InpOrOutLogicMethod { }.GetText(dicList, "hcho");
                                        inputView.btnState.Text = str;
                                    }
                                    break;
                            }
                        }
                        break;
                    case "6":
                        {
                            //inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
                            string strtext = "";
                            string strvalue = "";
                            foreach (var dic in dicList)
                            {
                                string key = dic["key"];
                                string comparator = dic["comparator"];
                                string value = dic["value"];
                                switch (key)
                                {
                                    case "temperature":
                                        {
                                            //云端天气条件 城市温度触发
                                            strvalue = value + "℃";
                                            if (comparator == ">")
                                            {
                                                strtext = Language.StringByID(StringId.wendugaoyu);
                                            }
                                            else if (comparator == "<")
                                            {
                                                strtext = Language.StringByID(StringId.wendudiyu);
                                            }
                                        }
                                        break;
                                    case "humidity":
                                        {
                                            //云端天气条件 城市湿度触发
                                            strvalue = value + "%";
                                            if (comparator == ">")
                                            {
                                                strtext = Language.StringByID(StringId.shidugaoyu);
                                            }
                                            else if (comparator == "<")
                                            {
                                                strtext = Language.StringByID(StringId.shidudiyu);
                                            }
                                        }
                                        break;
                                    case "pm25":
                                        {
                                            //云端天气条件 城市pm2.5触发
                                            strtext = Language.StringByID(StringId.PM25);
                                            strvalue = new PublicInterface { }.GetString("pm25", value);
                                        }
                                        break;
                                    case "weather":
                                        {
                                            //云端天气条件 城市天气触发
                                            strtext = Language.StringByID(StringId.tianqibianhua);
                                            switch (value)
                                            {
                                                case "Sunny":
                                                    {
                                                        strtext = Language.StringByID(StringId.clearday);
                                                    }
                                                    break;
                                                case "Cloudy":
                                                    {
                                                        strtext = Language.StringByID(StringId.cloudy);
                                                    }
                                                    break;
                                                case "Rain":
                                                    {
                                                        strtext = Language.StringByID(StringId.rain);
                                                    }
                                                    break;
                                            }
                                        }
                                        break;
                                    case "airquality":
                                        {
                                            //云端天气条件 城市空气质量
                                            strtext = Language.StringByID(StringId.kongqizhiliang);
                                            switch (value)
                                            {
                                                case "Excellent":
                                                    {
                                                        strtext = Language.StringByID(StringId.kongqiyou);
                                                    }
                                                    break;
                                                case "Good":
                                                    {
                                                        strtext = Language.StringByID(StringId.kongqiliang);
                                                    }
                                                    break;
                                                case "Poor":
                                                    {
                                                        strtext = Language.StringByID(StringId.kongqicha);
                                                    }
                                                    break;
                                            }
                                        }
                                        break;
                                }
                            }
                            inputView.btnText.Text = strtext;
                            inputView.btnState.Text = strvalue;
                        }
                        break;
                    case "8":
                        {
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/location.png";
                            foreach (var dic in dicList)
                            {
                                string strtext = "";
                                string value = dic["value"];
                                switch (value)
                                {
                                    case "arrive":
                                        {
                                            strtext = Language.StringByID(StringId.daoda);
                                        }
                                        break;
                                    case "leave":
                                        {
                                            strtext = Language.StringByID(StringId.likai);
                                        }
                                        break;
                                }
                                inputView.btnText.TextID = StringId.likiadaoda;
                                inputView.btnState.Text = strtext;
                            }
                        }
                        break;
                    case "10":
                        {
                            //用sid找到场景;
                            var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
                            inputView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
                            inputView.btnNextIcon.Visible = false;
                            inputView.btnClick.Visible = false;
                            //显示场景名称
                            inputView.btnText.Text = scene.name;
                        }
                        break;
                }
                //再次编辑条件状态点击事件
                inputView.btnClick.MouseUpEventHandler += (sen, e) =>
                {
                    Button button = (Button)sen;
                    //当前编辑的条件
                    Input ckcliInput = inputView.btnClick.Tag as Input;
                    //找到当前编辑的索引
                    int indexVulae = 0;
                    for (int index = 0; index < Logic.currlogic.input.Count; index++)
                    {
                        Input input = Logic.currlogic.input[index];
                        if (input.sid == ckcliInput.sid)
                        {
                            if (button.Name == "3")
                            {
                                //有些设备比较特殊(例如:海林传感器还是要判断属性值,温湿度属性还要判断比较关系,才能确认是否已经存在该条件,其他设备条件直接用sid判断即可)
                                //加一级判断是为兼容特殊设备
                                if (new ConditionDeviceFunList { }.IsContainsAll(ckcliInput.condition, input.condition))
                                {
                                    //用户可能删除数据,使列表索引发生改变;
                                    //通过唯一sid重新查找到索引且更新索引值
                                    indexVulae = index;
                                    break;
                                }
                            }
                            else
                            {
                                //用户可能删除数据,使列表索引发生改变;
                                //通过唯一sid重新查找到索引且更新索引值
                                indexVulae = index;
                                break;
                            }
                        }
                    }
                    //标记编辑状态
                    bool edit = true;
                    switch (button.Name)
                    {
                        case "1":
                            {
                                bool is_bool = false;
                                Input _input = Logic.currlogic.input[indexVulae];
                                if (_input.condition_type == "1")
                                {
                                    var dicLists = _input.condition;
                                    foreach (var dic in dicLists)
                                    {
                                        string keyValue = dic["key"];
                                        if (keyValue != "timepoint")
                                        {
                                            //通过键值查找键值是否是
                                            //(日出/日落/正午)
                                            is_bool = true;
                                            break;
                                        }
                                    }
                                }
                                if (is_bool)
                                {
                                    //跳转到(日出/日落/正午)界面
                                    SpeciaTime speciaTime = new SpeciaTime();
                                    MainPage.BasePageView.AddChidren(speciaTime);
                                    speciaTime.Show(edit, indexVulae);
                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                }
                                else
                                {
                                    //跳转到(时间点)界面
                                    FrameLayout fLayout = new FrameLayout
                                    {
                                        BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                                    };
                                    thisView.AddChidren(fLayout);
                                    TimeTpye timeTpye = new TimeTpye();
                                    timeTpye.TimePoint(fLayout, edit, indexVulae);
                                }
                            }
                            break;
                        case "2":
                            {
                                FrameLayout fLayout = new FrameLayout
                                {
                                    BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                                };
                                thisView.AddChidren(fLayout);
                                TimeTpye timeTpye = new TimeTpye();
                                timeTpye.TimeHorizon(fLayout, edit, indexVulae);
                            }
                            break;
                        case "3":
                            {
                                //用sid找到设备;
                                var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
                                if (device.spk == SPK.SensorEnvironment
                                || device.spk == SPK.SensorEnvironment2
                                || device.spk == SPK.SensorEnvironment3
                                )
                                {
                                    //这个设备比较特殊
                                    ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
                                    ///当前的索引值数据对象
                                    Input inputedit = Logic.currlogic.input[indexVulae];
                                    ///状态值
                                    string stateValue = "";
                                    foreach (var dic in inputedit.condition)
                                    {
                                        string key = dic["key"];
                                        string comparator = dic["comparator"];
                                        stateValue = dic["value"];
                                        switch (key)
                                        {
                                            case "temperature":
                                                {
                                                    int titleInt = 0;
                                                    if (comparator == ">")
                                                    {
                                                        titleInt = StringId.wendugaoyu;
                                                    }
                                                    else if (comparator == "<")
                                                    {
                                                        titleInt = StringId.wendudiyu;
                                                    }
                                                    conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                                                }
                                                break;
                                            case "humidity":
                                                {
                                                    int titleInt = 0;
                                                    if (comparator == ">")
                                                    {
                                                        titleInt = StringId.shidugaoyu;
                                                    }
                                                    else if (comparator == "<")
                                                    {
                                                        titleInt = StringId.shidudiyu;
                                                    }
                                                    conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                                                }
                                                break;
                                            case "co2":
                                                {
                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
                                                }
                                                break;
                                            case "pm25":
                                                {
                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
                                                }
                                                break;
                                            case "tvoc":
                                                {
                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
                                                }
                                                break;
                                            case "hcho":
                                                {
                                                    conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
                                                }
                                                break;
                                        }
                                    }
                                }
                                else if (device.spk == SPK.SensorTemperature)
                                {
                                    new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae);
                                }
                                else if (device.spk == SPK.SensorHumidity)
                                {
                                    new InpOrOutLogicMethod().SensorView(thisView, device, "humidity", indexVulae);
                                }
                                else if (device.spk == SPK.SensorCO2)
                                {
                                    new InpOrOutLogicMethod().SensorView(thisView, device, "co2", indexVulae);
                                }
                                else if (device.spk == SPK.SensorPm25)
                                {
                                    new InpOrOutLogicMethod().SensorView(thisView, device, "pm25", indexVulae);
                                }
                                else if (device.spk == SPK.SensorTVOC)
                                {
                                    new InpOrOutLogicMethod().SensorView(thisView, device, "tvoc", indexVulae);
                                }
                                else if (device.spk == SPK.SensorHcho)
                                {
                                    new InpOrOutLogicMethod().SensorView(thisView, device, "hcho", indexVulae);
                                }
                                else
                                {
                                    ConditionDeviceFunList deviceFunList = new ConditionDeviceFunList();
                                    MainPage.BasePageView.AddChidren(deviceFunList);
                                    deviceFunList.Show(device, indexVulae, edit);
                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                }
                            }
                            break;
                        case "6":
                            {
                                ///当前的索引值数据对象
                                Input inputedit = Logic.currlogic.input[indexVulae];
                                ///状态值
                                string stateValue = "";
                                ///状态值文本
                                int intValue = -1;
                                foreach (var dic in inputedit.condition)
                                {
                                    string key = dic["key"];
                                    string comparator = dic["comparator"];
                                    stateValue = dic["value"];
                                    switch (key)
                                    {
                                        case "temperature":
                                            {
                                                if (comparator == ">")
                                                {
                                                    intValue = StringId.wendugaoyu;
                                                }
                                                else if (comparator == "<")
                                                {
                                                    intValue = StringId.wendudiyu;
                                                }
                                            }
                                            break;
                                        case "humidity":
                                            {
                                                if (comparator == ">")
                                                {
                                                    intValue = StringId.shidugaoyu;
                                                }
                                                else if (comparator == "<")
                                                {
                                                    intValue = StringId.shidudiyu;
                                                }
                                            }
                                            break;
                                        case "pm25":
                                            {
                                                intValue = StringId.PM25;
                                            }
                                            break;
                                        case "weather":
                                            {
                                                intValue = StringId.tianqibianhua;
                                            }
                                            break;
                                        case "airquality":
                                            {
                                                intValue = StringId.kongqizhiliang;
                                            }
                                            break;
                                    }
                                }
                                OutdoorEnvironment outdoorEnvironment = new OutdoorEnvironment();
                                if (intValue == StringId.tianqibianhua)
                                {
                                    //城市天气(晴天,下雨)
                                    WeatherCondition weatherCondition = new WeatherCondition();
                                    MainPage.BasePageView.AddChidren(weatherCondition);
                                    weatherCondition.Show();
                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                }
                                else if (intValue == StringId.PM25)
                                {
                                    //城市天气(pm2.5)
                                    outdoorEnvironment.PmAction(thisView, stateValue);
                                }
                                else if (intValue == StringId.kongqizhiliang)
                                {
                                    //城市天气(空气质量)
                                    AirQuality airQuality = new AirQuality();
                                    MainPage.BasePageView.AddChidren(airQuality);
                                    airQuality.Show();
                                    MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                                }
                                else
                                {
                                    //城市天气(温湿度)
                                    outdoorEnvironment.InputBoxAction(intValue, stateValue);
                                }
                            }
                            break;
                        case "8":
                            {
                                AddInputType addInputType = new AddInputType();
                                addInputType.LocationView(thisView, true);
                            }
                            break;
                    }
                };
                ///删除控件
                inputView.btnDel.MouseUpEventHandler += (sender, e) =>
                {
                    Logic.currlogic.input.Remove(inputCondition);
                    inputView.frameLayout.RemoveFromParent();
                };
            }
        }
        /// <summary>
        /// 输出条件处理方法
        /// </summary>
        /// <param name="thisView">当前界面</param>
        /// <param name="viewLayout">上下滑动控件</param>
        public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
        {
            for (int i = 0; i < Logic.currlogic.output.Count; i++)
            {
                Output outputTarget = Logic.currlogic.output[i];
                ///各种条件的View
                LogicView.AddOutputInputView targetView = new LogicView.AddOutputInputView();
                targetView.FLayoutView(viewLayout);
                ///记录条件类型
                targetView.btnClick.Name = outputTarget.target_type;
                ///记录条件索引
                targetView.btnClick.Tag = outputTarget.sid;
                ///条件状态数组
                List<Dictionary<string, string>> dicList = outputTarget.status;
                //显示状态值
                string stateStr = "";
                //显示输出条件各种类型状态
                switch (outputTarget.target_type)
                {
                    case "1":
                        {
                            //用sid找到设备;
                            var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
                            //用设备的functionType类型找到对应图标;
                            targetView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
                            //显示设备名称
                            targetView.btnText.Text = device.name;
                            //改变设备名称显示控件宽度
                            targetView.btnText.Width = Application.GetRealWidth(80);
                            //区别不同设备,显示不同设备状态
                            switch (device.spk)
                            {
                                case SPK.AirSwitch:
                                case SPK.LightSwitch:
                                //插座
                                case SPK.PanelSocket:
                                case SPK.ElectricSocket:
                                    {//开关
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
                                                stateStr = Language.StringByID(StringId.onLogic);
                                            }
                                            else
                                            {
                                                stateStr = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.LightRGB:
                                case SPK.LightRGBW:
                                case SPK.LightCCT:
                                case SPK.LightDimming:
                                    {
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string brightness = GetKeyValue("brightness", dicList);
                                        if (on_off == "on" && brightness != "")
                                        {
                                            stateStr = Language.StringByID(StringId.onLogic) + brightness + "%";
                                        }
                                        else if (on_off == "on")
                                        {
                                            stateStr = Language.StringByID(StringId.onLogic);
                                        }
                                        else if (on_off == "off")
                                        {
                                            stateStr = Language.StringByID(StringId.offLogic);
                                        }
                                        else if (brightness != "")
                                        {
                                            stateStr = brightness + "%";
                                        }
                                    }
                                    break;
                                case SPK.CurtainSwitch:
                                case SPK.CurtainTrietex:
                                case SPK.CurtainRoller:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            switch (value)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic);
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic);
                                                    }
                                                    break;
                                                case "stop":
                                                    {
                                                        stateStr = Language.StringByID(StringId.stop);
                                                    }
                                                    break;
                                            }
                                        }
                                    }
                                    break;
                                case SPK.AcStandard:
                                case SPK.HvacAC:
                                    {
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string set_temp = GetKeyValue("set_temp", dicList);
                                        string mode = GetKeyValue("mode", dicList);
                                        string fan = GetKeyValue("fan", dicList);
                                        if (on_off != "")
                                        {
                                            switch (on_off)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic) + ",";
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic) + ",";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (set_temp != "")
                                        {
                                            stateStr += set_temp + "℃,";
                                        }
                                        if (mode != "")
                                        {
                                            switch (mode)
                                            {
                                                case "cool":
                                                    {
                                                        stateStr += Language.StringByID(StringId.coolLogic) + ",";
                                                    }
                                                    break;
                                                case "heat":
                                                    {
                                                        stateStr += Language.StringByID(StringId.heatingLogic) + ",";
                                                    }
                                                    break;
                                                case "auto":
                                                    {
                                                        stateStr += Language.StringByID(StringId.autoLogic) + ",";
                                                    }
                                                    break;
                                                case "dry":
                                                    {
                                                        stateStr += Language.StringByID(StringId.dehumidifyLogic) + ",";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (fan != "")
                                        {
                                            switch (fan)
                                            {
                                                case "high":
                                                    {
                                                        stateStr += Language.StringByID(StringId.HighWindSpeed) + ",";
                                                    }
                                                    break;
                                                case "medium":
                                                    {
                                                        stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ",";
                                                    }
                                                    break;
                                                case "low":
                                                    {
                                                        stateStr += Language.StringByID(StringId.LowWindSpeed) + ",";
                                                    }
                                                    break;
                                                case "auto":
                                                    {
                                                        stateStr += Language.StringByID(StringId.Auto) + ",";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            stateStr = Language.StringByID(StringId.offLogic);
                                        }
                                        else
                                        {
                                            stateStr = stateStr.TrimEnd(',');
                                        }
                                    }
                                    break;
                                case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
                                    {
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string set_temp = GetKeyValue("set_temp", dicList);
                                        string mode = GetKeyValue("mode", dicList);
                                        if (on_off != "")
                                        {
                                            switch (on_off)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic) + ",";
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic) + ",";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (set_temp != "")
                                        {
                                            stateStr += set_temp + "℃,";
                                        }
                                        if (mode != "")
                                        {
                                            switch (mode)
                                            {
                                                case "day":
                                                    {
                                                        stateStr += Language.StringByID(StringId.dayMode) + ",";
                                                    }
                                                    break;
                                                case "night":
                                                    {
                                                        stateStr += Language.StringByID(StringId.nightMode) + ",";
                                                    }
                                                    break;
                                                case "away":
                                                    {
                                                        stateStr += Language.StringByID(StringId.leaveMode) + ",";
                                                    }
                                                    break;
                                                case "normal":
                                                    {
                                                        stateStr += Language.StringByID(StringId.ordinaryMode) + ",";
                                                    }
                                                    break;
                                                case "timer":
                                                    {
                                                        stateStr += Language.StringByID(StringId.timeMode) + ",";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            stateStr = Language.StringByID(StringId.offLogic);
                                        }
                                        else
                                        {
                                            stateStr = stateStr.TrimEnd(',');
                                        }
                                    }
                                    break;
                                case SPK.AirFreshStandard:
                                case SPK.HvacAirFresh:
                                    {
                                        string on_off = GetKeyValue("on_off", dicList);
                                        string fan = GetKeyValue("fan", dicList);
                                        if (on_off != "")
                                        {
                                            switch (on_off)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic) + ",";
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic) + ",";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (fan != "")
                                        {
                                            switch (fan)
                                            {
                                                case "high":
                                                    {
                                                        stateStr += Language.StringByID(StringId.HighWindSpeed) + ",";
                                                    }
                                                    break;
                                                case "medium":
                                                    {
                                                        stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ",";
                                                    }
                                                    break;
                                                case "low":
                                                    {
                                                        stateStr += Language.StringByID(StringId.LowWindSpeed) + ",";
                                                    }
                                                    break;
                                                case "auto":
                                                    {
                                                        stateStr += Language.StringByID(StringId.Auto) + ",";
                                                    }
                                                    break;
                                            }
                                        }
                                        if (on_off != "" && on_off == "off")
                                        {
                                            stateStr = Language.StringByID(StringId.offLogic);
                                        }
                                        else
                                        {
                                            stateStr = stateStr.TrimEnd(',');
                                        }
                                    }
                                    break;
                            }
                        }
                        break;
                    case "2":
                        {
                            //用sid找到场景;
                            var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
                            targetView.btnNextIcon.Visible = false;
                            //显示场景名称
                            stateStr = scene.name;
                        }
                        break;
                    case "3":
                        {
                            //用sid找到安防;
                            var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/security.png";
                            targetView.btnDelay.Visible = false;
                            //显示安防名称
                            targetView.btnText.Text = security.name;
                            string value = GetKeyValue("security", dicList);
                            if (value == "enable")
                            {
                                stateStr = Language.StringByID(StringId.bufang);
                            }
                            else
                            {
                                stateStr = Language.StringByID(StringId.chefang);
                            }
                        }
                        break;
                    case "4":
                        {
                            targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
                            foreach (var dic in dicList)
                            {
                                string value = dic["value"];
                                stateStr = value;
                            }
                        }
                        break;
                }
                if (outputTarget.target_type == "1" || outputTarget.target_type == "3")
                {
                    targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
                  inputView.btnText.Text = Language.StringByID(StringId.hour) + ": " + value;
                }
                else
                {
                    targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
                  string strtext = "";
                  string statetext = "";
                  switch (keyValue)
                  {
                    case "before_sunrise":
                      {
                        strtext = Language.StringByID(StringId.sunrise);
                        statetext = Language.StringByID(StringId.advanced);
                      }
                      break;
                    case "before_sunset":
                      {
                        strtext = Language.StringByID(StringId.sunset);
                        statetext = Language.StringByID(StringId.advanced);
                      }
                      break;
                    case "before_noon":
                      {
                        strtext = Language.StringByID(StringId.at);
                        statetext = Language.StringByID(StringId.advanced);
                      }
                      break;
                    case "after_sunrise":
                      {
                        strtext = Language.StringByID(StringId.sunrise);
                        statetext = Language.StringByID(StringId.delayLogic);
                      }
                      break;
                    case "after_sunset":
                      {
                        strtext = Language.StringByID(StringId.sunset);
                        statetext = Language.StringByID(StringId.delayLogic);
                      }
                      break;
                    case "after_noon":
                      {
                        strtext = Language.StringByID(StringId.at);
                        statetext = Language.StringByID(StringId.delayLogic);
                      }
                      break;
                  }
                  if (value != "0")
                  {
                    if (value == "30")
                    {
                      statetext += value + Language.StringByID(StringId.s);
                    }
                    else
                    {
                      statetext += value + Language.StringByID(StringId.minute);
                    }
                  }
                  else
                  {
                    statetext = "";
                  }
                  inputView.btnText.Text = strtext;
                  inputView.btnState.Text = statetext;
                }
                //再次编辑条件状态点击事件
                targetView.btnClick.MouseUpEventHandler += (sen, e) =>
                {
                    Button button = (Button)sen;
                    //找到当前编辑的索引
                    int indexVulae = 0;
                    for (int index = 0; index < Logic.currlogic.output.Count; index++)
                    {
                        Output target = Logic.currlogic.output[index];
                        if (target.sid == targetView.btnClick.Tag.ToString())
                        {
                            //用户可能删除数据,使列表索引发生改变;
                            //通过唯一sid重新查找到索引且更新索引值
                            indexVulae = index;
                            break;
                        }
                    }
                    //标记编辑状态
                    bool edit = true;
                    switch (button.Name)
                    {
                        case "1":
                            {
                                //用sid找到设备;
                                var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
                                TargetDeviceFunList deviceFunList = new TargetDeviceFunList();
                                MainPage.BasePageView.AddChidren(deviceFunList);
                                deviceFunList.Show(device, indexVulae, edit);
                                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                            }
                            break;
                        case "3":
                            {
                                Security security = new Security();
                                security.SecurityMethod(thisView, "", edit, indexVulae);
                            }
                            break;
                        case "4":
                            {
                                FrameLayout fLayout = new FrameLayout
                                {
                                    BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                                };
                                thisView.AddChidren(fLayout);
                                AddTarget addTarget = new AddTarget();
                                addTarget.Delayed(fLayout, edit, indexVulae);
                            }
                            break;
                    }
                };
                //延时点击事件
                targetView.btnDelay.MouseUpEventHandler += (sen, e) =>
                {
                    InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod();
                    inpOrOutLogicMethod.Delayed(thisView, outputTarget, (value) =>
                    {
                        outputTarget.delay = value.ToString();
                        if (outputTarget.target_type == "1")
                        {
                            targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
                        }
                        else
                        {
                            targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
                        }
                    });
                };
                ///删除控件
                targetView.btnDel.MouseUpEventHandler += (sender, e) =>
                {
                    Logic.currlogic.output.Remove(outputTarget);
                    targetView.frameLayout.RemoveFromParent();
                };
              }
            }
        }
        /// <summary>
        /// 显示编辑之前的设备状态
        /// </summary>
        /// <param name="device">编辑设备</param>
        /// <param name="button1">显示Btn</param>
        /// <param name="button2">显示Btn</param>
        /// <param name="button3">显示Btn</param>
        /// <param name="button4">显示Btn</param>
        public static void EditState(Entity.Function device, List<Dictionary<string, string>> dicList, Button button1, Button button2, Button button3, Button button4)
        {
            switch (device.spk)
            break;
          case "2":
            {
                //插座
                case SPK.PanelSocket:
                case SPK.ElectricSocket:
              inputView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
              foreach (var dic in dicList)
              {
                string value = dic["value"];
                inputView.btnText.Text = Language.StringByID(StringId.timeHorizon) + ": " + value;
              }
            }
            break;
          case "3":
            {
              //用sid找到设备;
              var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
              //用设备的functionType类型找到对应图标;
              inputView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
              //显示设备名称
              inputView.btnText.Text = device.name;
              //改变设备名称显示控件宽度
              inputView.btnText.Width = Application.GetRealWidth(80);
              //区别不同设备,显示不同设备状态
              switch (device.spk)
              {
                //开关灯光
                case SPK.AirSwitch:
                case SPK.LightSwitch:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "on")
                            {
                                button1.Text = Language.StringByID(StringId.onLogic);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.offLogic);
                            }
                        }
                    }
                    break;
                case SPK.LightDimming:
                case SPK.LightRGB:
                case SPK.LightRGBW:
                case SPK.LightCCT:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "on_off":
                                    {
                                        if (value == "on")
                                        {
                                            button1.Text = Language.StringByID(StringId.onLogic);
                                        }
                                        else
                                        {
                                            button1.Text = Language.StringByID(StringId.offLogic);
                                        }
                                    }
                                    break;
                                case "brightness":
                                    {
                                        if (button2 == null)
                                        {
                                            //怕调试软件乱上东西导致抛异常
                                            break;
                                        }
                                        button2.Text = value + "%";
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                case SPK.LightSwitch:
                //窗帘
                case SPK.CurtainSwitch:
                case SPK.CurtainTrietex:
                case SPK.CurtainRoller:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (value)
                            {
                                case "on":
                                    {
                                        button1.Text = Language.StringByID(StringId.onLogic);
                                    }
                                    break;
                                case "off":
                                    {
                                        button1.Text = Language.StringByID(StringId.offLogic);
                                    }
                                    break;
                                case "stop":
                                    {
                                        button1.Text = Language.StringByID(StringId.stop);
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                case SPK.CurtainTrietex:
                //空调
                case SPK.AcStandard:
                case SPK.HvacAC:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "on_off":
                                    {
                                        switch (value)
                                        {
                                            case "on":
                                                {
                                                    button1.Text = Language.StringByID(StringId.onLogic);
                                                }
                                                break;
                                            case "off":
                                                {
                                                    button1.Text = Language.StringByID(StringId.offLogic);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case "set_temp":
                                    {
                                        if (button2 == null)
                                        {
                                            //怕调试软件乱上东西导致抛异常
                                            break;
                                        }
                                        button2.Text = value + "℃";
                                    }
                                    break;
                                case "mode":
                                    {
                                        if (button3 == null)
                                        {
                                            //怕调试软件乱上东西导致抛异常
                                            break;
                                        }
                                        switch (value)
                                        {
                                            case "cool":
                                                {
                                                    button3.Text = Language.StringByID(StringId.coolLogic);
                                                }
                                                break;
                                            case "heat":
                                                {
                                                    button3.Text = Language.StringByID(StringId.heatingLogic);
                                                }
                                                break;
                                            case "auto":
                                                {
                                                    button3.Text = Language.StringByID(StringId.autoLogic);
                                                }
                                                break;
                                            case "dry":
                                                {
                                                    button3.Text = Language.StringByID(StringId.dehumidifyLogic);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case "fan":
                                    {
                                        if (button4 == null)
                                        {
                                            //怕调试软件乱上东西导致抛异常
                                            break;
                                        }
                                        switch (value)
                                        {
                                            case "high":
                                                {
                                                    button4.Text = Language.StringByID(StringId.HighWindSpeed);
                                                }
                                                break;
                                            case "medium":
                                                {
                                                    button4.Text = Language.StringByID(StringId.MiddleWindSpeed);
                                                }
                                                break;
                                            case "low":
                                                {
                                                    button4.Text = Language.StringByID(StringId.LowWindSpeed);
                                                }
                                                break;
                                            case "auto":
                                                {
                                                    button4.Text = Language.StringByID(StringId.Auto);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "on_off":
                                    {
                                        switch (value)
                                        {
                                            case "on":
                                                {
                                                    button1.Text = Language.StringByID(StringId.onLogic);
                                                }
                                                break;
                                            case "off":
                                                {
                                                    button1.Text = Language.StringByID(StringId.offLogic);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case "set_temp":
                                    {
                                        if (button2 == null)
                                        {
                                            //怕调试软件乱上东西导致抛异常
                                            break;
                                        }
                                        button2.Text = value + "℃";
                                    }
                                    break;
                                case "mode":
                                    {
                                        if (button3 == null)
                                        {
                                            //怕调试软件乱上东西导致抛异常
                                            break;
                                        }
                                        switch (value)
                                        {
                                            case "day":
                                                {
                                                    button3.Text = Language.StringByID(StringId.dayMode);
                                                }
                                                break;
                                            case "night":
                                                {
                                                    button3.Text = Language.StringByID(StringId.nightMode);
                                                }
                                                break;
                                            case "away":
                                                {
                                                    button3.Text = Language.StringByID(StringId.leaveMode);
                                                }
                                                break;
                                            case "normal":
                                                {
                                                    button3.Text = Language.StringByID(StringId.ordinaryMode);
                                                }
                                                break;
                                            case "timer":
                                                {
                                                    button3.Text = Language.StringByID(StringId.timeMode);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                //地热
                case SPK.HvacFloorHeat:
                case SPK.FloorHeatStandard:
                //新风
                case SPK.AirFreshStandard:
                case SPK.HvacAirFresh:
                //插座
                case SPK.PanelSocket:
                case SPK.ElectricSocket:
                  {//开关灯
                    foreach (var dic in dicList)
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "on_off":
                                    {
                                        switch (value)
                                        {
                                            case "on":
                                                {
                                                    button1.Text = Language.StringByID(StringId.onLogic);
                                                }
                                                break;
                                            case "off":
                                                {
                                                    button1.Text = Language.StringByID(StringId.offLogic);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                      string value = dic["value"];
                      if (value == "on")
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                                case "fan":
                                    {
                                        if (button2 == null)
                                        {
                                            //怕调试软件乱上东西导致抛异常
                                            break;
                                        }
                                        switch (value)
                                        {
                                            case "high":
                                                {
                                                    button2.Text = Language.StringByID(StringId.HighWindSpeed);
                                                }
                                                break;
                                            case "medium":
                                                {
                                                    button2.Text = Language.StringByID(StringId.MiddleWindSpeed);
                                                }
                                                break;
                                            case "low":
                                                {
                                                    button2.Text = Language.StringByID(StringId.LowWindSpeed);
                                                }
                                                break;
                                            case "auto":
                                                {
                                                    button2.Text = Language.StringByID(StringId.Auto);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                            }
                        }
                      }
                      else
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.offLogic);
                      }
                    }
                    break;
                case SPK.SensorGas:
                  }
                  break;
                //传感器
                case SPK.SensorSmoke:
                case SPK.SensorGas:
                  {
                    foreach (var dic in dicList)
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "alarm")
                            {
                                button1.Text = Language.StringByID(StringId.xieluo);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuxieluo);
                            }
                        }
                      string value = dic["value"];
                      if (value == "alarm")
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.xieluo);
                      }
                      else
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.wuxieluo);
                      }
                    }
                    break;
                  }
                  break;
                case SPK.SensorWater:
                  {
                    foreach (var dic in dicList)
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "alarm")
                            {
                                button1.Text = Language.StringByID(StringId.luoshui);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuluoshui);
                            }
                        }
                      string value = dic["value"];
                      if (value == "alarm")
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.luoshui);
                      }
                      else
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.wuluoshui);
                      }
                    }
                    break;
                  }
                  break;
                case SPK.SensorDryContact:
                case SPK.SensorDryContact2:
                  {
                    foreach (var dic in dicList)
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "on")
                            {
                                button1.Text = Language.StringByID(StringId.onLogic);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.offLogic);
                            }
                        }
                      string value = dic["value"];
                      if (value == "on")
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.onLogic);
                      }
                      else
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.offLogic);
                      }
                    }
                    break;
                  }
                  break;
                case SPK.SensorShanLan:
                case SPK.SensorDuiShe:
                case SPK.SensorPir:
                  {
                    foreach (var dic in dicList)
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                      string value = dic["value"];
                      if (value == "true")
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.youren);
                      }
                      else
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.wuren);
                      }
                    }
                  }
                  break;
                case SPK.SensorDoorWindow:
                  {
                    foreach (var dic in dicList)
                    {
                      string value = dic["value"];
                      if (value == "open")
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.kaiqi);
                      }
                      else
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.bihe);
                      }
                    }
                  }
                  break;
                case SPK.SensorUtrasonic:
                  {
                    string str = "";
                    foreach (var dic in dicList)
                    {
                      string value = dic["value"];
                      switch (dic["key"])
                      {
                        case "status":
                        case "people_status":
                          {
                            if (value == "true")
                            {
                                button1.Text = Language.StringByID(StringId.youren);
                              str += Language.StringByID(StringId.youren) + ";";
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.wuren);
                              str += Language.StringByID(StringId.wuren) + ";";
                            }
                        }
                    }
                    break;
                case SPK.SensorDoorWindow:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "open")
                          }
                          break;
                        case "dismantle":
                          {
                            if (value == "true")
                            {
                                button1.Text = Language.StringByID(StringId.kaiqi);
                              str += Language.StringByID(StringId.zaixian);
                            }
                            else
                            {
                                button1.Text = Language.StringByID(StringId.bihe);
                              str += Language.StringByID(StringId.buzaixian);
                            }
                        }
                          }
                          break;
                      }
                    }
                    break;
                case SPK.SensorUtrasonic:
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            switch (dic["key"])
                            {
                                case "status":
                                case "people_status":
                                    {
                                        if (value == "true")
                                        {
                                            button1.Text = Language.StringByID(StringId.youren);
                                        }
                                        else
                                        {
                                            button1.Text = Language.StringByID(StringId.wuren);
                                        }
                                    }
                                    break;
                                case "dismantle":
                                    {
                                        if (value == "true")
                                        {
                                            button1.Text = Language.StringByID(StringId.zaixian);
                                        }
                                        else
                                        {
                                            button1.Text = Language.StringByID(StringId.buzaixian);
                                        }
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                    inputView.btnState.Text = str;
                  }
                  break;
                case SPK.SenesorMegahealth:
                case SPK.SenesorMegahealth2:
                  {
                    foreach (var dic in dicList)
                    {
                        foreach (var dic in dicList)
                        {
                            string value = dic["value"];
                            if (value == "fall")
                      string value = dic["value"];
                      if (value == "fall")
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.diedao);
                      }
                      else
                      {
                        inputView.btnState.Text = Language.StringByID(StringId.wuren);
                      }
                    }
                  }
                  break;
                case SPK.SensorEnvironment:
                case SPK.SensorEnvironment2:
                case SPK.SensorEnvironment3:
                  {
                    string strtext = "";
                    foreach (var dic in dicList)
                    {
                      string key = dic["key"];
                      string value = dic["value"];
                      string comparator = dic["comparator"];
                      switch (key)
                      {
                        case "temperature":
                          {
                            if (comparator == ">")
                            {
                                button1.Text = Language.StringByID(StringId.diedao);
                              strtext = ">" + value + "℃";
                            }
                            else
                            else if (comparator == "<")
                            {
                                button1.Text = Language.StringByID(StringId.wuren);
                              strtext = "<" + value + "℃";
                            }
                        }
                          }
                          break;
                        case "humidity":
                          {
                            if (comparator == ">")
                            {
                              strtext = ">" + value + "%";
                            }
                            else if (comparator == "<")
                            {
                              strtext = "<" + value + "%";
                            }
                          }
                          break;
                        case "co2":
                          {
                            strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value);
                          }
                          break;
                        case "pm25":
                          {
                            strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value);
                          }
                          break;
                        case "tvoc":
                          {
                            strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value);
                          }
                          break;
                      }
                      inputView.btnState.Text = strtext;
                    }
                  }
                  break;
                case SPK.SensorTemperature:
                  {
                    string str = new InpOrOutLogicMethod { }.GetText(dicList, "temperature");
                    inputView.btnState.Text = str;
                  }
                  break;
                case SPK.SensorHumidity:
                  {
                    string str = new InpOrOutLogicMethod { }.GetText(dicList, "humidity");
                    inputView.btnState.Text = str;
                  }
                  break;
                case SPK.SensorCO2:
                  {
                    string str = new InpOrOutLogicMethod { }.GetText(dicList, "co2");
                    inputView.btnState.Text = str;
                  }
                  break;
                case SPK.SensorPm25:
                  {
                    string str = new InpOrOutLogicMethod { }.GetText(dicList, "pm25");
                    inputView.btnState.Text = str;
                  }
                  break;
                case SPK.SensorTVOC:
                  {
                    string str = new InpOrOutLogicMethod { }.GetText(dicList, "tvoc");
                    inputView.btnState.Text = str;
                  }
                  break;
                case SPK.SensorHcho:
                  {
                    string str = new InpOrOutLogicMethod { }.GetText(dicList, "hcho");
                    inputView.btnState.Text = str;
                  }
                  break;
              }
            }
            break;
          case "6":
            {
              //inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
              inputView.btnIcon.UnSelectedImagePath = "LogicIcon/changesinoutdoor.png";
              string strtext = "";
              string strvalue = "";
              foreach (var dic in dicList)
              {
                string key = dic["key"];
                string comparator = dic["comparator"];
                string value = dic["value"];
                switch (key)
                {
                  case "temperature":
                    {
                      //云端天气条件 城市温度触发
                      strvalue = value + "℃";
                      if (comparator == ">")
                      {
                        strtext = Language.StringByID(StringId.wendugaoyu);
                      }
                      else if (comparator == "<")
                      {
                        strtext = Language.StringByID(StringId.wendudiyu);
                      }
                    }
                    break;
            }
        }
        /// <summary>
        /// 获取value键值
        /// </summary>
        /// <param name="keyValue"></param>
        /// <param name="dicList"></param>
        /// <returns></returns>
        public static string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList)
        {
                  case "humidity":
                    {
                      //云端天气条件 城市湿度触发
                      strvalue = value + "%";
                      if (comparator == ">")
                      {
                        strtext = Language.StringByID(StringId.shidugaoyu);
                      }
                      else if (comparator == "<")
                      {
                        strtext = Language.StringByID(StringId.shidudiyu);
                      }
            string valueStr = "";
            foreach (var dic in dicList)
            {
                if (dic["key"] == keyValue)
                {
                    valueStr = dic["value"];
                    }
                    break;
                  case "pm25":
                    {
                      //云端天气条件 城市pm2.5触发
                      strtext = Language.StringByID(StringId.PM25);
                      strvalue = new PublicInterface { }.GetString("pm25", value);
                    }
                    break;
                  case "weather":
                    {
                      //云端天气条件 城市天气触发
                      strtext = Language.StringByID(StringId.tianqibianhua);
                      switch (value)
                      {
                        case "Sunny":
                          {
                            strtext = Language.StringByID(StringId.clearday);
                          }
                          break;
                        case "Cloudy":
                          {
                            strtext = Language.StringByID(StringId.cloudy);
                          }
                          break;
                        case "Rain":
                          {
                            strtext = Language.StringByID(StringId.rain);
                          }
                          break;
                      }
                    }
                    break;
                  case "airquality":
                    {
                      //云端天气条件 城市空气质量
                      strtext = Language.StringByID(StringId.kongqizhiliang);
                      switch (value)
                      {
                        case "Excellent":
                          {
                            strtext = Language.StringByID(StringId.kongqiyou);
                          }
                          break;
                        case "Good":
                          {
                            strtext = Language.StringByID(StringId.kongqiliang);
                          }
                          break;
                        case "Poor":
                          {
                            strtext = Language.StringByID(StringId.kongqicha);
                          }
                          break;
                      }
                    }
                    break;
                }
              }
              inputView.btnText.Text = strtext;
              inputView.btnState.Text = strvalue;
            }
            return valueStr;
        }
        /// <summary>
        ///获取自动化名称
        /// </summary>
        /// <returns> 新建自动化命名规则</returns>
        public static string GetLogicName(Logic logic)
        {
            string name = "";
            try
            break;
          case "8":
            {
                //默认取第一个条件
                Input inputCondition = logic.input[0];
                //显示条件各种类型状态
                switch (inputCondition.condition_type)
              inputView.btnIcon.UnSelectedImagePath = "LogicIcon/inputlocation.png";
              foreach (var dic in dicList)
              {
                string strtext = "";
                string value = dic["value"];
                switch (value)
                {
                    case "1":
                        {
                            name = Language.StringByID(StringId.hour) + "-";
                        }
                        break;
                    case "2":
                        {
                            name = Language.StringByID(StringId.timeHorizon) + "-";
                        }
                        break;
                    case "3":
                        {
                            //用sid找到设备;
                            var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
                            name = device.name + "-";
                        }
                        break;
                    case "10":
                        {
                            //用sid找到场景;
                            var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
                            name = scene.name + "-";
                        }
                        break;
                  case "arrive":
                    {
                      strtext = Language.StringByID(StringId.daoda);
                    }
                    break;
                  case "leave":
                    {
                      strtext = Language.StringByID(StringId.likai);
                    }
                    break;
                }
                //默认取第一个目标
                Output outputTarget = logic.output[0];
                List<Dictionary<string, string>> dicList = outputTarget.status as List<Dictionary<string, string>>;
                //显示输出条件各种类型状态
                switch (outputTarget.target_type)
                {
                    case "1":
                        {
                            //用sid找到设备;
                            var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
                            //显示设备名称
                            name += device.name;
                            string stateStr = "";
                            //区别不同设备,显示不同设备状态
                            switch (device.spk)
                            {
                                case SPK.AirSwitch:
                                case SPK.LightSwitch:
                                    {//开关灯
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
                                                stateStr = Language.StringByID(StringId.onLogic);
                                            }
                                            else
                                            {
                                                stateStr = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                    }
                                    break;
                                case SPK.LightRGB:
                                case SPK.LightRGBW:
                                case SPK.LightCCT:
                                case SPK.LightDimming:
                                    {
                                        string on_off = InpOrOutLogicMethod.GetKeyValue("on_off", dicList);
                                        string brightness = InpOrOutLogicMethod.GetKeyValue("brightness", dicList);
                                        if (on_off == "on" && brightness != "")
                                        {
                                            stateStr = Language.StringByID(StringId.onLogic) + brightness + "%";
                                        }
                                        else if (on_off == "on")
                                        {
                                            stateStr = Language.StringByID(StringId.onLogic);
                                        }
                                        else if (on_off == "off")
                                        {
                                            stateStr = Language.StringByID(StringId.offLogic);
                                        }
                                        else if (brightness != "")
                                        {
                                            stateStr = brightness + "%";
                                        }
                                    }
                                    break;
                                case SPK.CurtainSwitch:
                                case SPK.CurtainTrietex:
                                case SPK.CurtainRoller:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            switch (value)
                                            {
                                                case "on":
                                                    {
                                                        stateStr = Language.StringByID(StringId.onLogic);
                                                    }
                                                    break;
                                                case "off":
                                                    {
                                                        stateStr = Language.StringByID(StringId.offLogic);
                                                    }
                                                    break;
                                                case "stop":
                                                    {
                                                        stateStr = Language.StringByID(StringId.stop);
                                                    }
                                                    break;
                                            }
                                        }
                                    }
                                    break;
                                case SPK.AcStandard:
                                case SPK.HvacAC:
                                case SPK.FloorHeatStandard:case SPK.HvacFloorHeat:
                                    {
                                        foreach (var dic in dicList)
                                        {
                                            string value = dic["value"];
                                            if (value == "on")
                                            {
                                                stateStr = Language.StringByID(StringId.onLogic);
                                            }
                                            else if (value == "off")
                                            {
                                                stateStr = Language.StringByID(StringId.offLogic);
                                            }
                                        }
                                    }
                                    break;
                            }
                            name += stateStr;
                        }
                        break;
                    case "2":
                        {
                            //用sid找到场景;
                            var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
                            name += scene.name;
                        }
                        break;
                    case "3":
                        {
                            //用sid找到安防;
                            var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
                            name += security.name;
                        }
                        break;
                }
                if (!MainView.IsGatewayType)
                {
                    name += Language.StringByID(StringId.push);
                }
                inputView.btnText.TextID = StringId.likiadaoda;
                inputView.btnState.Text = strtext;
              }
            }
            catch { }
            return name;
        }
        /// <summary>
        /// 延时时间方法
        /// </summary>
        /// <param name="fLayout">在哪个界面显示</param>
        /// <param name="edit">(true=编辑;false=新建)</param>
        /// <param name="index">编辑条件的索引</param>
        private void Delayed(FrameLayout thisFLayout, Output output, Action<int> action)
        {
            FrameLayout fLayout = new FrameLayout
            break;
          case "10":
            {
                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
            };
            thisFLayout.AddChidren(fLayout);
            LogicView.TimeView timePointView = new LogicView.TimeView();
            timePointView.FLayoutView(fLayout);
            EventHandler<MouseEventArgs> RemovefLayout = (sender, e1) =>
            {
                //移除fLayout界面
                fLayout.RemoveFromParent();
            };
            //取消点击事件
            timePointView.btnCancel.MouseUpEventHandler += RemovefLayout;
            //加载数据界面的设置方法(列表互不联动)
            timePointView.mUIPickerView.setNPicker(timePointView.GetmStringList(), timePointView.GetsStringList(), null);
            //默认初始选中状态
            timePointView.mUIPickerView.setCurrentItems(0, 5, 0);
            //定义一个局部变量记录选中时间
            int timepoint = 5;
            if (output.delay != "0")
            {
                int intValue = int.Parse(output.delay);
                var m = intValue / 60;
                var s = intValue % 60;
                string timeValue = m.ToString() + ":" + s.ToString();
                int mIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GetmIntList());
                int sIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList());
                //更新初始状态
                timePointView.mUIPickerView.setCurrentItems(mIndex, sIndex, 0);
                timepoint = intValue;
              //用sid找到场景;
              var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
              inputView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
              inputView.btnNextIcon.Visible = false;
              inputView.btnClick.Visible = false;
              //显示场景名称
              inputView.btnText.Text = scene.name;
            }
            break;
            //选中时间回调方法,时间变化一次回调一次
            timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
            {
                string minuet = timePointView.GethStringList0()[index1].Split(' ')[0];
                string second = timePointView.GetmStringList()[index2].Split(' ')[0];
                int minuetIntValue = int.Parse(minuet);
                int secondIntValue = int.Parse(second);
                timepoint = minuetIntValue * 60 + secondIntValue;
            };
            //确定点击事件
            timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) =>
            {
                if (timepoint == 0)
                {
                    //提示
                    return;
                }
                fLayout.RemoveFromParent();
                action(timepoint);
            };
        }
        /// <summary>
        /// 获取时间文本描述
        /// </summary>
        /// <param name="strTimeValue">时间值(单位s秒)</param>
        /// <returns></returns>
        private string GetTimeText(string strTimeValue)
        //再次编辑条件状态点击事件
        inputView.btnClick.MouseUpEventHandler += (sen, e) =>
        {
            var timeValue = int.Parse(strTimeValue);
            string state = "";
            var minutes = timeValue / 60;
            var seconds = timeValue % 60;
            if (minutes != 0)
          Button button = (Button)sen;
                  //当前编辑的条件
                  Input ckcliInput = inputView.btnClick.Tag as Input;
                  //找到当前编辑的索引
                  int indexVulae = 0;
          for (int index = 0; index < Logic.currlogic.input.Count; index++)
          {
            Input input = Logic.currlogic.input[index];
            if (input.sid == ckcliInput.sid)
            {
                if (seconds == 0)
              if (button.Name == "3")
              {
                        //有些设备比较特殊(例如:海林传感器还是要判断属性值,温湿度属性还要判断比较关系,才能确认是否已经存在该条件,其他设备条件直接用sid判断即可)
                        //加一级判断是为兼容特殊设备
                        if (new ConditionDeviceFunList { }.IsContainsAll(ckcliInput.condition, input.condition))
                {
                    state = minutes.ToString() + Language.StringByID(StringId.minute);
                          //用户可能删除数据,使列表索引发生改变;
                          //通过唯一sid重新查找到索引且更新索引值
                          indexVulae = index;
                  break;
                }
              }
              else
              {
                        //用户可能删除数据,使列表索引发生改变;
                        //通过唯一sid重新查找到索引且更新索引值
                        indexVulae = index;
                break;
              }
            }
          }
                  //标记编辑状态
                  bool edit = true;
          switch (button.Name)
          {
            case "1":
              {
                bool is_bool = false;
                Input _input = Logic.currlogic.input[indexVulae];
                if (_input.condition_type == "1")
                {
                  var dicLists = _input.condition;
                  foreach (var dic in dicLists)
                  {
                    string keyValue = dic["key"];
                    if (keyValue != "timepoint")
                    {
                              //通过键值查找键值是否是
                              //(日出/日落/正午)
                              is_bool = true;
                      break;
                    }
                  }
                }
                if (is_bool)
                {
                          //跳转到(日出/日落/正午)界面
                          SpeciaTime speciaTime = new SpeciaTime();
                  MainPage.BasePageView.AddChidren(speciaTime);
                  speciaTime.Show(edit, indexVulae);
                  MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
                else
                {
                    state = minutes.ToString() + Language.StringByID(StringId.minute) + seconds.ToString() + Language.StringByID(StringId.s);
                          //跳转到(时间点)界面
                          FrameLayout fLayout = new FrameLayout
                  {
                    BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                  };
                  thisView.AddChidren(fLayout);
                  TimeTpye timeTpye = new TimeTpye();
                  timeTpye.TimePoint(fLayout, edit, indexVulae);
                }
            }
            else
            {
                if (seconds != 0)
              }
              break;
            case "2":
              {
                FrameLayout fLayout = new FrameLayout
                {
                    state = seconds.ToString() + Language.StringByID(StringId.s);
                  BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                };
                thisView.AddChidren(fLayout);
                TimeTpye timeTpye = new TimeTpye();
                timeTpye.TimeHorizon(fLayout, edit, indexVulae);
              }
              break;
            case "3":
              {
                        //用sid找到设备;
                        var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
                if (device.spk == SPK.SensorEnvironment
                        || device.spk == SPK.SensorEnvironment2
                        || device.spk == SPK.SensorEnvironment3
                        )
                {
                          //这个设备比较特殊
                          ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
                          ///当前的索引值数据对象
                          Input inputedit = Logic.currlogic.input[indexVulae];
                          ///状态值
                          string stateValue = "";
                  foreach (var dic in inputedit.condition)
                  {
                    string key = dic["key"];
                    string comparator = dic["comparator"];
                    stateValue = dic["value"];
                    switch (key)
                    {
                      case "temperature":
                        {
                          int titleInt = 0;
                          if (comparator == ">")
                          {
                            titleInt = StringId.wendugaoyu;
                          }
                          else if (comparator == "<")
                          {
                            titleInt = StringId.wendudiyu;
                          }
                          conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                        }
                        break;
                      case "humidity":
                        {
                          int titleInt = 0;
                          if (comparator == ">")
                          {
                            titleInt = StringId.shidugaoyu;
                          }
                          else if (comparator == "<")
                          {
                            titleInt = StringId.shidudiyu;
                          }
                          conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                        }
                        break;
                      case "co2":
                        {
                          conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
                        }
                        break;
                      case "pm25":
                        {
                          conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
                        }
                        break;
                      case "tvoc":
                        {
                          conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
                        }
                        break;
                      case "hcho":
                        {
                          conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
                        }
                        break;
                    }
                  }
                }
            }
            if (!string.IsNullOrEmpty(state))
            {
                state = Language.StringByID(StringId.delayLogic) + state;
            }
            return state;
        }
        /// <summary>
        /// 获取显示面熟文本
        /// </summary>
        /// <param name="dicList">状态数据列表</param>
        /// <returns></returns>
        private string GetText(List<Dictionary<string, string>> dicList,string key)
                else if (device.spk == SPK.SensorTemperature)
                {
                  new InpOrOutLogicMethod().SensorView(thisView, device, "temperature", indexVulae);
                }
                else if (device.spk == SPK.SensorHumidity)
                {
                  new InpOrOutLogicMethod().SensorView(thisView, device, "humidity", indexVulae);
                }
                else if (device.spk == SPK.SensorCO2)
                {
                  new InpOrOutLogicMethod().SensorView(thisView, device, "co2", indexVulae);
                }
                else if (device.spk == SPK.SensorPm25)
                {
                  new InpOrOutLogicMethod().SensorView(thisView, device, "pm25", indexVulae);
                }
                else if (device.spk == SPK.SensorTVOC)
                {
                  new InpOrOutLogicMethod().SensorView(thisView, device, "tvoc", indexVulae);
                }
                else if (device.spk == SPK.SensorHcho)
                {
                  new InpOrOutLogicMethod().SensorView(thisView, device, "hcho", indexVulae);
                }
                else
                {
                  ConditionDeviceFunList deviceFunList = new ConditionDeviceFunList();
                  MainPage.BasePageView.AddChidren(deviceFunList);
                  deviceFunList.Show(device, indexVulae, edit);
                  MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
              }
              break;
            case "6":
              {
                        ///当前的索引值数据对象
                        Input inputedit = Logic.currlogic.input[indexVulae];
                        ///状态值
                        string stateValue = "";
                        ///状态值文本
                        int intValue = -1;
                foreach (var dic in inputedit.condition)
                {
                  string key = dic["key"];
                  string comparator = dic["comparator"];
                  stateValue = dic["value"];
                  switch (key)
                  {
                    case "temperature":
                      {
                        if (comparator == ">")
                        {
                          intValue = StringId.wendugaoyu;
                        }
                        else if (comparator == "<")
                        {
                          intValue = StringId.wendudiyu;
                        }
                      }
                      break;
                    case "humidity":
                      {
                        if (comparator == ">")
                        {
                          intValue = StringId.shidugaoyu;
                        }
                        else if (comparator == "<")
                        {
                          intValue = StringId.shidudiyu;
                        }
                      }
                      break;
                    case "pm25":
                      {
                        intValue = StringId.PM25;
                      }
                      break;
                    case "weather":
                      {
                        intValue = StringId.tianqibianhua;
                      }
                      break;
                    case "airquality":
                      {
                        intValue = StringId.kongqizhiliang;
                      }
                      break;
                  }
                }
                OutdoorEnvironment outdoorEnvironment = new OutdoorEnvironment();
                if (intValue == StringId.tianqibianhua)
                {
                          //城市天气(晴天,下雨)
                          WeatherCondition weatherCondition = new WeatherCondition();
                  MainPage.BasePageView.AddChidren(weatherCondition);
                  weatherCondition.Show();
                  MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
                else if (intValue == StringId.PM25)
                {
                          //城市天气(pm2.5)
                          outdoorEnvironment.PmAction(thisView, stateValue);
                }
                else if (intValue == StringId.kongqizhiliang)
                {
                          //城市天气(空气质量)
                          AirQuality airQuality = new AirQuality();
                  MainPage.BasePageView.AddChidren(airQuality);
                  airQuality.Show();
                  MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
                }
                else
                {
                          //城市天气(温湿度)
                          outdoorEnvironment.InputBoxAction(intValue, stateValue);
                }
              }
              break;
            case "8":
              {
                AddInputType addInputType = new AddInputType();
                addInputType.LocationView(thisView, true);
              }
              break;
          }
        };
        ///删除控件
        inputView.btnDel.MouseUpEventHandler += (sender, e) =>
        {
            string strtext = "";
          Logic.currlogic.input.Remove(inputCondition);
          inputView.frameLayout.RemoveFromParent();
        };
      }
    }
    /// <summary>
    /// 输出条件处理方法
    /// </summary>
    /// <param name="thisView">当前界面</param>
    /// <param name="viewLayout">上下滑动控件</param>
    public static void OutputTarget(FrameLayout thisView, VerticalScrolViewLayout viewLayout)
    {
      for (int i = 0; i < Logic.currlogic.output.Count; i++)
      {
        Output outputTarget = Logic.currlogic.output[i];
        ///各种条件的View
        LogicView.AddOutputInputView targetView = new LogicView.AddOutputInputView();
        targetView.FLayoutView(viewLayout);
        ///记录条件类型
        targetView.btnClick.Name = outputTarget.target_type;
        ///记录条件索引
        targetView.btnClick.Tag = outputTarget.sid;
        ///条件状态数组
        List<Dictionary<string, string>> dicList = outputTarget.status;
        //显示状态值
        string stateStr = "";
        //显示输出条件各种类型状态
        switch (outputTarget.target_type)
        {
          case "1":
            {
              //用sid找到设备;
              var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
              //用设备的functionType类型找到对应图标;
              targetView.btnIcon.UnSelectedImagePath = LogicMethod.CurrLogicMethod.GetIconPath(device.spk);
              //显示设备名称
              targetView.btnText.Text = device.name;
              //改变设备名称显示控件宽度
              targetView.btnText.Width = Application.GetRealWidth(80);
              //区别不同设备,显示不同设备状态
              switch (device.spk)
              {
                case SPK.AirSwitch:
                case SPK.LightSwitch:
                //插座
                case SPK.PanelSocket:
                case SPK.ElectricSocket:
                  {//开关
                    foreach (var dic in dicList)
                    {
                      string value = dic["value"];
                      if (value == "on")
                      {
                        stateStr = Language.StringByID(StringId.onLogic);
                      }
                      else
                      {
                        stateStr = Language.StringByID(StringId.offLogic);
                      }
                    }
                  }
                  break;
                case SPK.LightRGB:
                case SPK.LightRGBW:
                case SPK.LightCCT:
                case SPK.LightDimming:
                  {
                    string on_off = GetKeyValue("on_off", dicList);
                    string brightness = GetKeyValue("brightness", dicList);
                    if (on_off == "on" && brightness != "")
                    {
                      stateStr = Language.StringByID(StringId.onLogic) + brightness + "%";
                    }
                    else if (on_off == "on")
                    {
                      stateStr = Language.StringByID(StringId.onLogic);
                    }
                    else if (on_off == "off")
                    {
                      stateStr = Language.StringByID(StringId.offLogic);
                    }
                    else if (brightness != "")
                    {
                      stateStr = brightness + "%";
                    }
                  }
                  break;
                case SPK.CurtainSwitch:
                case SPK.CurtainTrietex:
                case SPK.CurtainRoller:
                  {
                    foreach (var dic in dicList)
                    {
                      string value = dic["value"];
                      switch (value)
                      {
                        case "on":
                          {
                            stateStr = Language.StringByID(StringId.onLogic);
                          }
                          break;
                        case "off":
                          {
                            stateStr = Language.StringByID(StringId.offLogic);
                          }
                          break;
                        case "stop":
                          {
                            stateStr = Language.StringByID(StringId.stop);
                          }
                          break;
                      }
                    }
                  }
                  break;
                case SPK.AcStandard:
                case SPK.HvacAC:
                  {
                    string on_off = GetKeyValue("on_off", dicList);
                    string set_temp = GetKeyValue("set_temp", dicList);
                    string mode = GetKeyValue("mode", dicList);
                    string fan = GetKeyValue("fan", dicList);
                    if (on_off != "")
                    {
                      switch (on_off)
                      {
                        case "on":
                          {
                            stateStr = Language.StringByID(StringId.onLogic) + ",";
                          }
                          break;
                        case "off":
                          {
                            stateStr = Language.StringByID(StringId.offLogic) + ",";
                          }
                          break;
                      }
                    }
                    if (set_temp != "")
                    {
                      stateStr += set_temp + "℃,";
                    }
                    if (mode != "")
                    {
                      switch (mode)
                      {
                        case "cool":
                          {
                            stateStr += Language.StringByID(StringId.coolLogic) + ",";
                          }
                          break;
                        case "heat":
                          {
                            stateStr += Language.StringByID(StringId.heatingLogic) + ",";
                          }
                          break;
                        case "auto":
                          {
                            stateStr += Language.StringByID(StringId.autoLogic) + ",";
                          }
                          break;
                        case "dry":
                          {
                            stateStr += Language.StringByID(StringId.dehumidifyLogic) + ",";
                          }
                          break;
                      }
                    }
                    if (fan != "")
                    {
                      switch (fan)
                      {
                        case "high":
                          {
                            stateStr += Language.StringByID(StringId.HighWindSpeed) + ",";
                          }
                          break;
                        case "medium":
                          {
                            stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ",";
                          }
                          break;
                        case "low":
                          {
                            stateStr += Language.StringByID(StringId.LowWindSpeed) + ",";
                          }
                          break;
                        case "auto":
                          {
                            stateStr += Language.StringByID(StringId.Auto) + ",";
                          }
                          break;
                      }
                    }
                    if (on_off != "" && on_off == "off")
                    {
                      stateStr = Language.StringByID(StringId.offLogic);
                    }
                    else
                    {
                      stateStr = stateStr.TrimEnd(',');
                    }
                  }
                  break;
                case SPK.FloorHeatStandard:
                case SPK.HvacFloorHeat:
                  {
                    string on_off = GetKeyValue("on_off", dicList);
                    string set_temp = GetKeyValue("set_temp", dicList);
                    string mode = GetKeyValue("mode", dicList);
                    if (on_off != "")
                    {
                      switch (on_off)
                      {
                        case "on":
                          {
                            stateStr = Language.StringByID(StringId.onLogic) + ",";
                          }
                          break;
                        case "off":
                          {
                            stateStr = Language.StringByID(StringId.offLogic) + ",";
                          }
                          break;
                      }
                    }
                    if (set_temp != "")
                    {
                      stateStr += set_temp + "℃,";
                    }
                    if (mode != "")
                    {
                      switch (mode)
                      {
                        case "day":
                          {
                            stateStr += Language.StringByID(StringId.dayMode) + ",";
                          }
                          break;
                        case "night":
                          {
                            stateStr += Language.StringByID(StringId.nightMode) + ",";
                          }
                          break;
                        case "away":
                          {
                            stateStr += Language.StringByID(StringId.leaveMode) + ",";
                          }
                          break;
                        case "normal":
                          {
                            stateStr += Language.StringByID(StringId.ordinaryMode) + ",";
                          }
                          break;
                        case "timer":
                          {
                            stateStr += Language.StringByID(StringId.timeMode) + ",";
                          }
                          break;
                      }
                    }
                    if (on_off != "" && on_off == "off")
                    {
                      stateStr = Language.StringByID(StringId.offLogic);
                    }
                    else
                    {
                      stateStr = stateStr.TrimEnd(',');
                    }
                  }
                  break;
                case SPK.AirFreshStandard:
                case SPK.HvacAirFresh:
                  {
                    string on_off = GetKeyValue("on_off", dicList);
                    string fan = GetKeyValue("fan", dicList);
                    if (on_off != "")
                    {
                      switch (on_off)
                      {
                        case "on":
                          {
                            stateStr = Language.StringByID(StringId.onLogic) + ",";
                          }
                          break;
                        case "off":
                          {
                            stateStr = Language.StringByID(StringId.offLogic) + ",";
                          }
                          break;
                      }
                    }
                    if (fan != "")
                    {
                      switch (fan)
                      {
                        case "high":
                          {
                            stateStr += Language.StringByID(StringId.HighWindSpeed) + ",";
                          }
                          break;
                        case "medium":
                          {
                            stateStr += Language.StringByID(StringId.MiddleWindSpeed) + ",";
                          }
                          break;
                        case "low":
                          {
                            stateStr += Language.StringByID(StringId.LowWindSpeed) + ",";
                          }
                          break;
                        case "auto":
                          {
                            stateStr += Language.StringByID(StringId.Auto) + ",";
                          }
                          break;
                      }
                    }
                    if (on_off != "" && on_off == "off")
                    {
                      stateStr = Language.StringByID(StringId.offLogic);
                    }
                    else
                    {
                      stateStr = stateStr.TrimEnd(',');
                    }
                  }
                  break;
              }
            }
            break;
          case "2":
            {
              //用sid找到场景;
              var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
              targetView.btnIcon.UnSelectedImagePath = "LogicIcon/scene.png";
              targetView.btnNextIcon.Visible = false;
              //显示场景名称
              stateStr = scene.name;
            }
            break;
          case "3":
            {
              //用sid找到安防;
              var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
              targetView.btnIcon.UnSelectedImagePath = "LogicIcon/security.png";
              targetView.btnDelay.Visible = false;
              //显示安防名称
              targetView.btnText.Text = security.name;
              string value = GetKeyValue("security", dicList);
              if (value == "enable")
              {
                stateStr = Language.StringByID(StringId.bufang);
              }
              else
              {
                stateStr = Language.StringByID(StringId.chefang);
              }
            }
            break;
          case "4":
            {
              targetView.btnIcon.UnSelectedImagePath = "LogicIcon/time.png";
              foreach (var dic in dicList)
              {
                string value = dic["value"];
                stateStr = value;
              }
            }
            break;
        }
        if (outputTarget.target_type == "1" || outputTarget.target_type == "3")
        {
          targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
        }
        else
        {
          targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
        }
        //再次编辑条件状态点击事件
        targetView.btnClick.MouseUpEventHandler += (sen, e) =>
        {
          Button button = (Button)sen;
                  //找到当前编辑的索引
                  int indexVulae = 0;
          for (int index = 0; index < Logic.currlogic.output.Count; index++)
          {
            Output target = Logic.currlogic.output[index];
            if (target.sid == targetView.btnClick.Tag.ToString())
            {
                      //用户可能删除数据,使列表索引发生改变;
                      //通过唯一sid重新查找到索引且更新索引值
                      indexVulae = index;
              break;
            }
          }
                  //标记编辑状态
                  bool edit = true;
          switch (button.Name)
          {
            case "1":
              {
                        //用sid找到设备;
                        var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
                TargetDeviceFunList deviceFunList = new TargetDeviceFunList();
                MainPage.BasePageView.AddChidren(deviceFunList);
                deviceFunList.Show(device, indexVulae, edit);
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
              }
              break;
            case "3":
              {
                Security security = new Security();
                security.SecurityMethod(thisView, "", edit, indexVulae);
              }
              break;
            case "4":
              {
                FrameLayout fLayout = new FrameLayout
                {
                  BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                };
                thisView.AddChidren(fLayout);
                AddTarget addTarget = new AddTarget();
                addTarget.Delayed(fLayout, edit, indexVulae);
              }
              break;
          }
        };
        //延时点击事件
        targetView.btnDelay.MouseUpEventHandler += (sen, e) =>
        {
          InpOrOutLogicMethod inpOrOutLogicMethod = new InpOrOutLogicMethod();
          inpOrOutLogicMethod.Delayed(thisView, outputTarget, (value) =>
                  {
              outputTarget.delay = value.ToString();
              if (outputTarget.target_type == "1")
              {
                targetView.btnState.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
              }
              else
              {
                targetView.btnText.Text = new InpOrOutLogicMethod { }.GetTimeText(outputTarget.delay) + stateStr;
              }
            });
        };
        ///删除控件
        targetView.btnDel.MouseUpEventHandler += (sender, e) =>
        {
          Logic.currlogic.output.Remove(outputTarget);
          targetView.frameLayout.RemoveFromParent();
        };
      }
    }
    /// <summary>
    /// 显示编辑之前的设备状态
    /// </summary>
    /// <param name="device">编辑设备</param>
    /// <param name="button1">显示Btn</param>
    /// <param name="button2">显示Btn</param>
    /// <param name="button3">显示Btn</param>
    /// <param name="button4">显示Btn</param>
    public static void EditState(Entity.Function device, List<Dictionary<string, string>> dicList, Button button1, Button button2, Button button3, Button button4)
    {
      switch (device.spk)
      {
        //插座
        case SPK.PanelSocket:
        case SPK.ElectricSocket:
        //开关灯光
        case SPK.AirSwitch:
        case SPK.LightSwitch:
          {
            foreach (var dic in dicList)
            {
                string value = dic["value"];
                string comparator = dic["comparator"];
                switch (key)
                {
                    case "temperature":
                        {
                            if (comparator == ">")
                            {
                                strtext = ">" + value + "℃";
                            }
                            else if (comparator == "<")
                            {
                                strtext = "<" + value + "℃";
                            }
                        }
                        break;
                    case "humidity":
                        {
                            if (comparator == ">")
                            {
                                strtext = ">" + value + "%";
                            }
                            else if (comparator == "<")
                            {
                                strtext = "<" + value + "%";
                            }
                        }
                        break;
                    case "co2":
                        {
                            strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value);
                        }
                        break;
                    case "pm25":
                        {
                            strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value);
                        }
                        break;
                    case "tvoc":
                        {
                            strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value);
                        }
                        break;
                    case "hcho":
                        {
                            strtext = Language.StringByID(StringId.Formaldehyde) + new PublicInterface { }.GetString("hcho", value);
                        }
                        break;
                }
              string value = dic["value"];
              if (value == "on")
              {
                button1.Text = Language.StringByID(StringId.onLogic);
              }
              else
              {
                button1.Text = Language.StringByID(StringId.offLogic);
              }
            }
            return strtext;
        }
        private void SensorView(FrameLayout thisView, Function device,string key, int indexVulae) {
            //这个设备比较特殊
            ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
            ///当前的索引值数据对象
            Input inputedit = Logic.currlogic.input[indexVulae];
            ///状态值
            string stateValue = "";
            foreach (var dic in inputedit.condition)
          }
          break;
        case SPK.LightDimming:
        case SPK.LightRGB:
        case SPK.LightRGBW:
        case SPK.LightCCT:
          {
            foreach (var dic in dicList)
            {
                string comparator = dic["comparator"];
                stateValue = dic["value"];
                switch (key)
                {
              string value = dic["value"];
              switch (dic["key"])
              {
                case "on_off":
                  {
                    if (value == "on")
                    {
                      button1.Text = Language.StringByID(StringId.onLogic);
                    }
                    else
                    {
                      button1.Text = Language.StringByID(StringId.offLogic);
                    }
                  }
                  break;
                case "brightness":
                  {
                    if (button2 == null)
                    {
                      //怕调试软件乱上东西导致抛异常
                      break;
                    }
                    button2.Text = value + "%";
                  }
                  break;
              }
                    case "temperature":
                        {
                            int titleInt = 0;
                            if (comparator == ">")
                            {
                                titleInt = StringId.wendugaoyu;
                            }
                            else if (comparator == "<")
                            {
                                titleInt = StringId.wendudiyu;
                            }
                            conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                        }
                        break;
                    case "humidity":
                        {
                            int titleInt = 0;
                            if (comparator == ">")
                            {
                                titleInt = StringId.shidugaoyu;
                            }
                            else if (comparator == "<")
                            {
                                titleInt = StringId.shidudiyu;
                            }
                            conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
                        }
                        break;
                    case "co2":
                        {
                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
                        }
                        break;
                    case "pm25":
                        {
                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
                        }
                        break;
                    case "tvoc":
                        {
                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
                        }
                        break;
                    case "hcho":
                        {
                            conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
                        }
                        break;
                }
            }
        }
          }
          break;
        case SPK.CurtainSwitch:
        case SPK.CurtainTrietex:
        case SPK.CurtainRoller:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              switch (value)
              {
                case "on":
                  {
                    button1.Text = Language.StringByID(StringId.onLogic);
                  }
                  break;
                case "off":
                  {
                    button1.Text = Language.StringByID(StringId.offLogic);
                  }
                  break;
                case "stop":
                  {
                    button1.Text = Language.StringByID(StringId.stop);
                  }
                  break;
              }
            }
          }
          break;
        case SPK.AcStandard:
        case SPK.HvacAC:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              switch (dic["key"])
              {
                case "on_off":
                  {
                    switch (value)
                    {
                      case "on":
                        {
                          button1.Text = Language.StringByID(StringId.onLogic);
                        }
                        break;
                      case "off":
                        {
                          button1.Text = Language.StringByID(StringId.offLogic);
                        }
                        break;
                    }
                  }
                  break;
                case "set_temp":
                  {
                    if (button2 == null)
                    {
                      //怕调试软件乱上东西导致抛异常
                      break;
                    }
                    button2.Text = value + "℃";
                  }
                  break;
                case "mode":
                  {
                    if (button3 == null)
                    {
                      //怕调试软件乱上东西导致抛异常
                      break;
                    }
                    switch (value)
                    {
                      case "cool":
                        {
                          button3.Text = Language.StringByID(StringId.coolLogic);
                        }
                        break;
                      case "heat":
                        {
                          button3.Text = Language.StringByID(StringId.heatingLogic);
                        }
                        break;
                      case "auto":
                        {
                          button3.Text = Language.StringByID(StringId.autoLogic);
                        }
                        break;
                      case "dry":
                        {
                          button3.Text = Language.StringByID(StringId.dehumidifyLogic);
                        }
                        break;
                    }
                  }
                  break;
                case "fan":
                  {
                    if (button4 == null)
                    {
                      //怕调试软件乱上东西导致抛异常
                      break;
                    }
                    switch (value)
                    {
                      case "high":
                        {
                          button4.Text = Language.StringByID(StringId.HighWindSpeed);
                        }
                        break;
                      case "medium":
                        {
                          button4.Text = Language.StringByID(StringId.MiddleWindSpeed);
                        }
                        break;
                      case "low":
                        {
                          button4.Text = Language.StringByID(StringId.LowWindSpeed);
                        }
                        break;
                      case "auto":
                        {
                          button4.Text = Language.StringByID(StringId.Auto);
                        }
                        break;
                    }
                  }
                  break;
              }
            }
          }
          break;
        case SPK.FloorHeatStandard:
        case SPK.HvacFloorHeat:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              switch (dic["key"])
              {
                case "on_off":
                  {
                    switch (value)
                    {
                      case "on":
                        {
                          button1.Text = Language.StringByID(StringId.onLogic);
                        }
                        break;
                      case "off":
                        {
                          button1.Text = Language.StringByID(StringId.offLogic);
                        }
                        break;
                    }
                  }
                  break;
                case "set_temp":
                  {
                    if (button2 == null)
                    {
                      //怕调试软件乱上东西导致抛异常
                      break;
                    }
                    button2.Text = value + "℃";
                  }
                  break;
                case "mode":
                  {
                    if (button3 == null)
                    {
                      //怕调试软件乱上东西导致抛异常
                      break;
                    }
                    switch (value)
                    {
                      case "day":
                        {
                          button3.Text = Language.StringByID(StringId.dayMode);
                        }
                        break;
                      case "night":
                        {
                          button3.Text = Language.StringByID(StringId.nightMode);
                        }
                        break;
                      case "away":
                        {
                          button3.Text = Language.StringByID(StringId.leaveMode);
                        }
                        break;
                      case "normal":
                        {
                          button3.Text = Language.StringByID(StringId.ordinaryMode);
                        }
                        break;
                      case "timer":
                        {
                          button3.Text = Language.StringByID(StringId.timeMode);
                        }
                        break;
                    }
                  }
                  break;
              }
            }
          }
          break;
        case SPK.AirFreshStandard:
        case SPK.HvacAirFresh:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              switch (dic["key"])
              {
                case "on_off":
                  {
                    switch (value)
                    {
                      case "on":
                        {
                          button1.Text = Language.StringByID(StringId.onLogic);
                        }
                        break;
                      case "off":
                        {
                          button1.Text = Language.StringByID(StringId.offLogic);
                        }
                        break;
                    }
                  }
                  break;
                case "fan":
                  {
                    if (button2 == null)
                    {
                      //怕调试软件乱上东西导致抛异常
                      break;
                    }
                    switch (value)
                    {
                      case "high":
                        {
                          button2.Text = Language.StringByID(StringId.HighWindSpeed);
                        }
                        break;
                      case "medium":
                        {
                          button2.Text = Language.StringByID(StringId.MiddleWindSpeed);
                        }
                        break;
                      case "low":
                        {
                          button2.Text = Language.StringByID(StringId.LowWindSpeed);
                        }
                        break;
                      case "auto":
                        {
                          button2.Text = Language.StringByID(StringId.Auto);
                        }
                        break;
                    }
                  }
                  break;
              }
            }
          }
          break;
        case SPK.SensorGas:
        case SPK.SensorSmoke:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              if (value == "alarm")
              {
                button1.Text = Language.StringByID(StringId.xieluo);
              }
              else
              {
                button1.Text = Language.StringByID(StringId.wuxieluo);
              }
            }
          }
          break;
        case SPK.SensorWater:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              if (value == "alarm")
              {
                button1.Text = Language.StringByID(StringId.luoshui);
              }
              else
              {
                button1.Text = Language.StringByID(StringId.wuluoshui);
              }
            }
          }
          break;
        case SPK.SensorDryContact:
        case SPK.SensorDryContact2:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              if (value == "on")
              {
                button1.Text = Language.StringByID(StringId.onLogic);
              }
              else
              {
                button1.Text = Language.StringByID(StringId.offLogic);
              }
            }
          }
          break;
        case SPK.SensorShanLan:
        case SPK.SensorDuiShe:
        case SPK.SensorPir:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              if (value == "true")
              {
                button1.Text = Language.StringByID(StringId.youren);
              }
              else
              {
                button1.Text = Language.StringByID(StringId.wuren);
              }
            }
          }
          break;
        case SPK.SensorDoorWindow:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              if (value == "open")
              {
                button1.Text = Language.StringByID(StringId.kaiqi);
              }
              else
              {
                button1.Text = Language.StringByID(StringId.bihe);
              }
            }
          }
          break;
        case SPK.SensorUtrasonic:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              switch (dic["key"])
              {
                case "status":
                case "people_status":
                  {
                    if (value == "true")
                    {
                      button1.Text = Language.StringByID(StringId.youren);
                    }
                    else
                    {
                      button1.Text = Language.StringByID(StringId.wuren);
                    }
                  }
                  break;
                case "dismantle":
                  {
                    if (value == "true")
                    {
                      button1.Text = Language.StringByID(StringId.zaixian);
                    }
                    else
                    {
                      button1.Text = Language.StringByID(StringId.buzaixian);
                    }
                  }
                  break;
              }
            }
          }
          break;
        case SPK.SenesorMegahealth:
        case SPK.SenesorMegahealth2:
          {
            foreach (var dic in dicList)
            {
              string value = dic["value"];
              if (value == "fall")
              {
                button1.Text = Language.StringByID(StringId.diedao);
              }
              else
              {
                button1.Text = Language.StringByID(StringId.wuren);
              }
            }
          }
          break;
      }
    }
    /// <summary>
    /// 获取value键值
    /// </summary>
    /// <param name="keyValue"></param>
    /// <param name="dicList"></param>
    /// <returns></returns>
    public static string GetKeyValue(string keyValue, List<Dictionary<string, string>> dicList)
    {
      string valueStr = "";
      foreach (var dic in dicList)
      {
        if (dic["key"] == keyValue)
        {
          valueStr = dic["value"];
          break;
        }
      }
      return valueStr;
    }
    /// <summary>
    ///获取自动化名称
    /// </summary>
    /// <returns> 新建自动化命名规则</returns>
    public static string GetLogicName(Logic logic)
    {
      string name = "";
      try
      {
        //默认取第一个条件
        Input inputCondition = logic.input[0];
        //显示条件各种类型状态
        switch (inputCondition.condition_type)
        {
          case "1":
            {
              name = Language.StringByID(StringId.hour) + "-";
            }
            break;
          case "2":
            {
              name = Language.StringByID(StringId.timeHorizon) + "-";
            }
            break;
          case "3":
            {
              //用sid找到设备;
              var device = LogicMethod.CurrLogicMethod.GetDevice(inputCondition.sid);
              name = device.name + "-";
            }
            break;
          case "10":
            {
              //用sid找到场景;
              var scene = LogicMethod.CurrLogicMethod.GetSecne(inputCondition.sid);
              name = scene.name + "-";
            }
            break;
        }
        //默认取第一个目标
        Output outputTarget = logic.output[0];
        List<Dictionary<string, string>> dicList = outputTarget.status as List<Dictionary<string, string>>;
        //显示输出条件各种类型状态
        switch (outputTarget.target_type)
        {
          case "1":
            {
              //用sid找到设备;
              var device = LogicMethod.CurrLogicMethod.GetDevice(outputTarget.sid);
              //显示设备名称
              name += device.name;
              string stateStr = "";
              //区别不同设备,显示不同设备状态
              switch (device.spk)
              {
                case SPK.AirSwitch:
                case SPK.LightSwitch:
                  {//开关灯
                    foreach (var dic in dicList)
                    {
                      string value = dic["value"];
                      if (value == "on")
                      {
                        stateStr = Language.StringByID(StringId.onLogic);
                      }
                      else
                      {
                        stateStr = Language.StringByID(StringId.offLogic);
                      }
                    }
                  }
                  break;
                case SPK.LightRGB:
                case SPK.LightRGBW:
                case SPK.LightCCT:
                case SPK.LightDimming:
                  {
                    string on_off = InpOrOutLogicMethod.GetKeyValue("on_off", dicList);
                    string brightness = InpOrOutLogicMethod.GetKeyValue("brightness", dicList);
                    if (on_off == "on" && brightness != "")
                    {
                      stateStr = Language.StringByID(StringId.onLogic) + brightness + "%";
                    }
                    else if (on_off == "on")
                    {
                      stateStr = Language.StringByID(StringId.onLogic);
                    }
                    else if (on_off == "off")
                    {
                      stateStr = Language.StringByID(StringId.offLogic);
                    }
                    else if (brightness != "")
                    {
                      stateStr = brightness + "%";
                    }
                  }
                  break;
                case SPK.CurtainSwitch:
                case SPK.CurtainTrietex:
                case SPK.CurtainRoller:
                  {
                    foreach (var dic in dicList)
                    {
                      string value = dic["value"];
                      switch (value)
                      {
                        case "on":
                          {
                            stateStr = Language.StringByID(StringId.onLogic);
                          }
                          break;
                        case "off":
                          {
                            stateStr = Language.StringByID(StringId.offLogic);
                          }
                          break;
                        case "stop":
                          {
                            stateStr = Language.StringByID(StringId.stop);
                          }
                          break;
                      }
                    }
                  }
                  break;
                case SPK.AcStandard:
                case SPK.HvacAC:
                case SPK.FloorHeatStandard:
                case SPK.HvacFloorHeat:
                  {
                    foreach (var dic in dicList)
                    {
                      string value = dic["value"];
                      if (value == "on")
                      {
                        stateStr = Language.StringByID(StringId.onLogic);
                      }
                      else if (value == "off")
                      {
                        stateStr = Language.StringByID(StringId.offLogic);
                      }
                    }
                  }
                  break;
              }
              name += stateStr;
            }
            break;
          case "2":
            {
              //用sid找到场景;
              var scene = LogicMethod.CurrLogicMethod.GetSecne(outputTarget.sid);
              name += scene.name;
            }
            break;
          case "3":
            {
              //用sid找到安防;
              var security = LogicMethod.CurrLogicMethod.GetSecurity(outputTarget.sid);
              name += security.name;
            }
            break;
        }
        if (!MainView.IsGatewayType)
        {
          name += Language.StringByID(StringId.push);
        }
      }
      catch { }
      return name;
    }
    /// <summary>
    /// 延时时间方法
    /// </summary>
    /// <param name="fLayout">在哪个界面显示</param>
    /// <param name="edit">(true=编辑;false=新建)</param>
    /// <param name="index">编辑条件的索引</param>
    private void Delayed(FrameLayout thisFLayout, Output output, Action<int> action)
    {
      FrameLayout fLayout = new FrameLayout
      {
        BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
      };
      thisFLayout.AddChidren(fLayout);
      LogicView.TimeView timePointView = new LogicView.TimeView();
      timePointView.FLayoutView(fLayout);
      EventHandler<MouseEventArgs> RemovefLayout = (sender, e1) =>
      {
              //移除fLayout界面
              fLayout.RemoveFromParent();
      };
      //取消点击事件
      timePointView.btnCancel.MouseUpEventHandler += RemovefLayout;
      //加载数据界面的设置方法(列表互不联动)
      timePointView.mUIPickerView.setNPicker(timePointView.GetmStringList(), timePointView.GetsStringList(), null);
      //默认初始选中状态
      timePointView.mUIPickerView.setCurrentItems(0, 5, 0);
      //定义一个局部变量记录选中时间
      int timepoint = 5;
      if (output.delay != "0")
      {
        int intValue = int.Parse(output.delay);
        var m = intValue / 60;
        var s = intValue % 60;
        string timeValue = m.ToString() + ":" + s.ToString();
        int mIndex = timePointView.GetValueIndex(timeValue, 0, 1, timePointView.GetmIntList());
        int sIndex = timePointView.GetValueIndex(timeValue, 1, 0, timePointView.GetmIntList());
        //更新初始状态
        timePointView.mUIPickerView.setCurrentItems(mIndex, sIndex, 0);
        timepoint = intValue;
      }
      //选中时间回调方法,时间变化一次回调一次
      timePointView.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
      {
        string minuet = timePointView.GethStringList0()[index1].Split(' ')[0];
        string second = timePointView.GetmStringList()[index2].Split(' ')[0];
        int minuetIntValue = int.Parse(minuet);
        int secondIntValue = int.Parse(second);
        timepoint = minuetIntValue * 60 + secondIntValue;
      };
      //确定点击事件
      timePointView.btnConfirm.MouseUpEventHandler += (sender, e3) =>
      {
        if (timepoint == 0)
        {
                //提示
                return;
        }
        fLayout.RemoveFromParent();
        action(timepoint);
      };
    }
    /// <summary>
    /// 获取时间文本描述
    /// </summary>
    /// <param name="strTimeValue">时间值(单位s秒)</param>
    /// <returns></returns>
    private string GetTimeText(string strTimeValue)
    {
      var timeValue = int.Parse(strTimeValue);
      string state = "";
      var minutes = timeValue / 60;
      var seconds = timeValue % 60;
      if (minutes != 0)
      {
        if (seconds == 0)
        {
          state = minutes.ToString() + Language.StringByID(StringId.minute);
        }
        else
        {
          state = minutes.ToString() + Language.StringByID(StringId.minute) + seconds.ToString() + Language.StringByID(StringId.s);
        }
      }
      else
      {
        if (seconds != 0)
        {
          state = seconds.ToString() + Language.StringByID(StringId.s);
        }
      }
      if (!string.IsNullOrEmpty(state))
      {
        state = Language.StringByID(StringId.delayLogic) + state;
      }
      return state;
    }
    /// <summary>
    /// 获取显示面熟文本
    /// </summary>
    /// <param name="dicList">状态数据列表</param>
    /// <returns></returns>
    private string GetText(List<Dictionary<string, string>> dicList, string key)
    {
      string strtext = "";
      foreach (var dic in dicList)
      {
        string value = dic["value"];
        string comparator = dic["comparator"];
        switch (key)
        {
          case "temperature":
            {
              if (comparator == ">")
              {
                strtext = ">" + value + "℃";
              }
              else if (comparator == "<")
              {
                strtext = "<" + value + "℃";
              }
            }
            break;
          case "humidity":
            {
              if (comparator == ">")
              {
                strtext = ">" + value + "%";
              }
              else if (comparator == "<")
              {
                strtext = "<" + value + "%";
              }
            }
            break;
          case "co2":
            {
              strtext = Language.StringByID(StringId.co2) + new PublicInterface { }.GetString("co2", value);
            }
            break;
          case "pm25":
            {
              strtext = Language.StringByID(StringId.pm25) + new PublicInterface { }.GetString("pm25", value);
            }
            break;
          case "tvoc":
            {
              strtext = Language.StringByID(StringId.tvoc) + new PublicInterface { }.GetString("tvoc", value);
            }
            break;
          case "hcho":
            {
              strtext = Language.StringByID(StringId.Formaldehyde) + new PublicInterface { }.GetString("hcho", value);
            }
            break;
        }
      }
      return strtext;
    }
    private void SensorView(FrameLayout thisView, Function device, string key, int indexVulae)
    {
      //这个设备比较特殊
      ConditionDeviceFunList conditionDeviceFunList = new ConditionDeviceFunList();
      ///当前的索引值数据对象
      Input inputedit = Logic.currlogic.input[indexVulae];
      ///状态值
      string stateValue = "";
      foreach (var dic in inputedit.condition)
      {
        string comparator = dic["comparator"];
        stateValue = dic["value"];
        switch (key)
        {
          case "temperature":
            {
              int titleInt = 0;
              if (comparator == ">")
              {
                titleInt = StringId.wendugaoyu;
              }
              else if (comparator == "<")
              {
                titleInt = StringId.wendudiyu;
              }
              conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
            }
            break;
          case "humidity":
            {
              int titleInt = 0;
              if (comparator == ">")
              {
                titleInt = StringId.shidugaoyu;
              }
              else if (comparator == "<")
              {
                titleInt = StringId.shidudiyu;
              }
              conditionDeviceFunList.InputBoxAction(device, titleInt, indexVulae, true, stateValue);
            }
            break;
          case "co2":
            {
              conditionDeviceFunList.PmCo2TvocAction(thisView, device, "co2", StringId.co2, indexVulae, true, stateValue);
            }
            break;
          case "pm25":
            {
              conditionDeviceFunList.PmCo2TvocAction(thisView, device, "pm25", StringId.pm25, indexVulae, true, stateValue);
            }
            break;
          case "tvoc":
            {
              conditionDeviceFunList.PmCo2TvocAction(thisView, device, "tvoc", StringId.tvoc, indexVulae, true, stateValue);
            }
            break;
          case "hcho":
            {
              conditionDeviceFunList.PmCo2TvocAction(thisView, device, "hcho", StringId.Formaldehyde, indexVulae, true, stateValue);
            }
            break;
        }
      }
    }
  }
}