wei
2021-08-27 eda3fb873e59544ff36301b51e05aef64f87b0f9
HDL_ON/UI/UI2/3-Intelligence/Automation/TargetDeviceFunList.cs
@@ -1,6 +1,8 @@
using System;
using System;
using Shared;
using System.Collections.Generic;
using HDL_ON.Entity;
namespace HDL_ON.UI.UI2.Intelligence.Automation
{
    public class TargetDeviceFunList : FrameLayout
@@ -43,39 +45,93 @@
            this.AddChidren(saveView.FLayoutView());
            #endregion
            #region  编辑设备状态
            switch (device.functionType)
            switch (device.spk)
            {
                //开关灯光 light.Switch
                case FunctionType.Dimmer:
                case FunctionType.RGB:
                case FunctionType.RGBW:
                case FunctionType.ColorTemperature:
                case SPK.LightDimming:
                case SPK.LightRGB:
                case SPK.LightRGBW:
                case SPK.LightCCT:
                    {
                        //2表示(开,关)功能
                        SwitchBrightnessView(fLayout, device, index, edit, 2);
                        #region 界面
                        ///开关
                        LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView();
                        lightSwitchView.btnText.TextID = StringId.switchLogic;
                        fLayout.AddChidren(lightSwitchView.FLayoutView());
                        ///亮度
                        LogicView.FunTypeView brightnessView = new LogicView.FunTypeView();
                        brightnessView.frameLayout.Y = lightSwitchView.frameLayout.Bottom;
                        brightnessView.btnText.TextID = StringId.brightnesLogic;
                        fLayout.AddChidren(brightnessView.FLayoutView());
                        #endregion
                        #region 点击事件
                        ///开关点击事件
                        lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            SwitchViewMethod(device, lightSwitchView.btnState, 2);
                        };
                        ///亮度点击事件
                        brightnessView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            BrightnessMethod(device, brightnessView.btnState, brightnessView.btnText.Text);
                        };
                        if (edit)
                        {
                            //显示编辑之前的设备状态
                            GetEditState(device, index, lightSwitchView.btnState, brightnessView.btnState, null, null);
                        }
                        #endregion
                    }
                    break;
                case FunctionType.Relay:
                case SPK.LightSwitch:
                    {
                        //2表示(开,关)功能
                        SwitchView(fLayout, device, index, edit, 2);
                        #region 界面
                        ///开关
                        LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView();
                        lightSwitchView.btnText.TextID = StringId.switchLogic;
                        fLayout.AddChidren(lightSwitchView.FLayoutView());
                        #endregion
                        #region 点击事件
                        ///开关点击事件
                        lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            SwitchViewMethod(device, lightSwitchView.btnState, 2);
                        };
                        if (edit)
                        {
                            //显示编辑之前的设备状态
                            GetEditState(device, index, lightSwitchView.btnState, null, null, null);
                        }
                        #endregion
                    }
                    break;
                //窗帘
                case FunctionType.Curtain:
                case SPK.CurtainSwitch:
                case SPK.CurtainTrietex:
                case SPK.CurtainRoller:
                    {
                        //3表示(开,关,暂停)功能
                        SwitchView(fLayout, device, index, edit, 3);
                        #region 界面
                        ///开关
                        LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
                        curtainSwitchView.btnText.TextID = StringId.switchLogic;
                        fLayout.AddChidren(curtainSwitchView.FLayoutView());
                        #endregion
                        #region 点击事件
                        ///开关点击事件
                        curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            SwitchViewMethod(device, curtainSwitchView.btnState, 3);
                        };
                        if (edit)
                        {
                            //显示编辑之前的设备状态
                            GetEditState(device, index, curtainSwitchView.btnState, null, null, null);
                        }
                        #endregion
                    }
                    break;
                case FunctionType.MotorCurtain:
                case FunctionType.RollingShutter:
                    {
                        //3表示(开,关,暂停)功能
                        SwitchBrightnessView(fLayout, device, index, edit, 3);
                    }
                    break;
                case FunctionType.AC:
                case SPK.AcStandard:
                    {
                        #region 界面
                        ///开关
@@ -110,217 +166,74 @@
                        ///温度点击事件
                        temperatureView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            FrameLayout frame = new FrameLayout
                            ///之前的状态文本
                            string tempValue = temperatureView.btnState.Text;
                            LogicView.TemperatureView tempView = new LogicView.TemperatureView();
                            tempView.FLayoutView(this, tempValue, (stateStr) =>
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.TimeView view = new LogicView.TimeView();
                            view.FLayoutView(frame);
                            EventHandler<MouseEventArgs> removefLayout = (sender1, e1) =>
                            {
                                //移除fLayout界面
                                frame.RemoveFromParent();
                            };
                            //取消点击事件
                            view.btnCancel.MouseUpEventHandler += removefLayout;
                            //初始化列表
                            var temperatureList = new List<string>();
                            for (int i = 16; i < 32; i++)
                            {
                                //添加数据
                                temperatureList.Add(i.ToString() + "℃");
                                temperatureList.Add((i + 0.5).ToString() + "℃");
                            }
                            //加载数据界面的设置方法(列表互不联动)
                            view.mUIPickerView.setNPicker(temperatureList, null, null);
                            //默认初始选中状态
                            view.mUIPickerView.setCurrentItems(9, 0, 0);
                            //定义一个局部变量记录选中时间
                            string temperature = "25℃";
                            for (int i = 0; i < temperatureList.Count; i++)
                            {
                                if (temperatureList[i] == temperatureView.btnState.Text)
                                {
                                    //更新状态
                                    view.mUIPickerView.setCurrentItems(i, 0, 0);
                                    //更新状态
                                    temperature = temperatureList[i];
                                    break;
                                }
                            }
                            //选中时间回调方法,时间变化一次回调一次
                            view.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
                            {
                                temperature = temperatureList[index1];
                            };
                            //确定点击事件
                            view.btnConfirm.MouseUpEventHandler += (sender2, e2) =>
                            {
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "set_temp");
                                //界面显示选中值
                                temperatureView.btnState.Text = stateStr;
                                //设备属性值,云雀上定义好的;
                                string keyVlaue = "set_temp";
                                string set_temp_value = temperature.Replace("℃", "");
                                LogicMethod.dictionary(dic, "value", set_temp_value);
                                selectedState = device.functionType + "_set_temp";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                                temperatureView.btnState.Text = temperature;
                                selectedState = device.spk + "_" + keyVlaue;
                                string set_temp_value = stateStr.Replace("℃", "");
                                //数据封装
                                AddDictionary(keyVlaue, set_temp_value);
                            });
                            };
                        };
                        ///模式点击事件
                        acModehView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            ///之前的状态文本
                            string currText = acModehView.btnState.Text;
                            //设备属性值,云雀上定义好的;
                            string keyVlaue = "mode";
                            selectedState = device.spk + "_" + keyVlaue;
                            PublicInterface modeView = new PublicInterface();
                            var modeListStr = modeView.GetViewList(keyVlaue);
                            modeView.SingleSelectionShow(this, modeListStr, Language.StringByID(StringId.modeLogic), currText
                               , (stateValue) =>
                               {
                                   //界面显示选中值
                                   acModehView.btnState.Text = stateValue;
                                   //数据封装
                                   AddDictionary(keyVlaue, modeView.GetModeValueString(stateValue, keyVlaue));
                               });
                            List<string> modeStr = new List<string> {
                                Language.StringByID(StringId.coolLogic),
                                 Language.StringByID(StringId.heatingLogic),
                                  Language.StringByID(StringId.autoLogic),
                                   Language.StringByID(StringId.dehumidifyLogic),
                            };
                            FrameLayout frame = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.DateView modeView = new LogicView.DateView();
                            modeView.btnTitle.TextID = StringId.modeLogic;
                            modeView.FLayoutView(frame, modeStr.Count);
                            modeView.btnCancel.MouseUpEventHandler += (sender2, e2) =>
                            {
                                frame.RemoveFromParent();
                            };
                            ///定义一个Btn记录选中状态
                            Button checkBtn = new Button
                            {
                                Tag = "unknown",
                            };
                            for (int i = 0; i < modeStr.Count; i++)
                            {
                                LogicView.CheckView modeTypeView = new LogicView.CheckView();
                                modeTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i);
                                modeView.frameLayout.AddChidren(modeTypeView.FLayoutView());
                                modeTypeView.btnText.Text = modeStr[i];
                                modeTypeView.btnClick.Tag = modeStr[i];//标记
                                if (acModehView.btnState.Text == modeStr[i])
                                {
                                    //显示之前的选中状态
                                    checkBtn.IsSelected = false;
                                    modeTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = modeTypeView.btnCheckIcon;
                                    checkBtn.Tag = modeTypeView.btnClick.Tag.ToString();
                                }
                                //星期的点击事件
                                modeTypeView.btnClick.MouseUpEventHandler += (sender1, e1) =>
                                {
                                    checkBtn.IsSelected = false;
                                    modeTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = modeTypeView.btnCheckIcon;
                                    checkBtn.Tag = modeTypeView.btnClick.Tag.ToString();
                                };
                            }
                            modeView.btnConfirm.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (checkBtn.Tag.ToString() == "unknown")
                                {
                                    return;
                                }
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "mode");
                                string keyVlaue = "mode";
                                LogicMethod.dictionary(dic, "value", GetModeValueString(checkBtn.Tag.ToString(), keyVlaue));
                                acModehView.btnState.Text = checkBtn.Tag.ToString();
                                selectedState = device.functionType + "_mode";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                            };
                        };
                        ///风速点击事件
                        acSpeedView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            List<string> speedStr = new List<string> {
                                Language.StringByID(StringId.LowWindSpeed),
                                 Language.StringByID(StringId.MiddleWindSpeed),
                                  Language.StringByID(StringId.HighWindSpeed),
                                   Language.StringByID(StringId.Auto),
                            };
                            FrameLayout frame = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.DateView speedView = new LogicView.DateView();
                            speedView.btnTitle.TextID = StringId.modeLogic;
                            speedView.FLayoutView(frame, speedStr.Count);
                            speedView.btnCancel.MouseUpEventHandler += (sender2, e2) =>
                            {
                                frame.RemoveFromParent();
                            };
                            ///定义一个Btn记录选中状态
                            Button checkBtn = new Button
                            {
                                Tag = "unknown",
                            };
                            for (int i = 0; i < speedStr.Count; i++)
                            {
                                LogicView.CheckView speedTypeView = new LogicView.CheckView();
                                speedTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i);
                                speedView.frameLayout.AddChidren(speedTypeView.FLayoutView());
                                speedTypeView.btnText.Text = speedStr[i];
                                speedTypeView.btnClick.Tag = speedStr[i];//标记
                            ///之前的状态文本
                            string currText = acSpeedView.btnState.Text;
                            //设备属性值,云雀上定义好的;
                            string keyVlaue = "fan";
                            selectedState = device.spk + "_" + keyVlaue;
                            PublicInterface speedView = new PublicInterface();
                            var speedListStr = speedView.GetViewList(keyVlaue);
                            speedView.SingleSelectionShow(this, speedListStr, Language.StringByID(StringId.speedLogic), currText
                               , (stateValue) =>
                               {
                                   //界面显示选中值
                                   acSpeedView.btnState.Text = stateValue;
                                   //数据封装
                                   AddDictionary(keyVlaue, speedView.GetModeValueString(stateValue, keyVlaue));
                                if (acSpeedView.btnState.Text == speedStr[i])
                                {
                                    //显示之前的选中状态
                                    checkBtn.IsSelected = false;
                                    speedTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = speedTypeView.btnCheckIcon;
                                    checkBtn.Tag = speedTypeView.btnClick.Tag.ToString();
                                }
                                //星期的点击事件
                                speedTypeView.btnClick.MouseUpEventHandler += (sender1, e1) =>
                                {
                                    checkBtn.IsSelected = false;
                                    speedTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = speedTypeView.btnCheckIcon;
                                    checkBtn.Tag = speedTypeView.btnClick.Tag.ToString();
                                };
                            }
                            speedView.btnConfirm.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (checkBtn.Tag.ToString() == "unknown")
                                {
                                    return;
                                }
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "fan");
                                string keyVlaue = "fan";
                                LogicMethod.dictionary(dic, "value", GetModeValueString(checkBtn.Tag.ToString(), keyVlaue));
                                acSpeedView.btnState.Text = checkBtn.Tag.ToString();
                                selectedState = device.functionType + "_fan";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                            };
                               });
                        };
                        if (edit)
                        {
                            //显示编辑之前的设备状态
                            GetEditState(device, index, acSwitchVie.btnState, temperatureView.btnState, acModehView.btnState, acSpeedView.btnState);
                        }
                        #endregion
                    }
                    break;
                case FunctionType.FloorHeating:
                case SPK.FloorHeatStandard:
                    {
                        #region 界面
                        ///开关
@@ -346,147 +259,136 @@
                        ///开关点击事件
                        floorHeatingSwitchVie.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            SwitchViewMethod(device, floorHeatingSwitchVie.btnState, 2);
                        };
                        ///温度点击事件
                        temperatureView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            FrameLayout frame = new FrameLayout
                            string tempValue = temperatureView.btnState.Text;
                            LogicView.TemperatureView tempView = new LogicView.TemperatureView();
                            tempView.FLayoutView(this, tempValue, (stateStr) =>
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.TimeView view = new LogicView.TimeView();
                            view.FLayoutView(frame);
                            EventHandler<MouseEventArgs> removefLayout = (sender1, e1) =>
                            {
                                //移除fLayout界面
                                frame.RemoveFromParent();
                            };
                            //取消点击事件
                            view.btnCancel.MouseUpEventHandler += removefLayout;
                            //初始化列表
                            var temperatureList = new List<string>();
                            for (int i = 16; i < 32; i++)
                            {
                                //添加数据
                                temperatureList.Add(i.ToString() + "℃");
                                temperatureList.Add((i + 0.5).ToString() + "℃");
                            }
                            //加载数据界面的设置方法(列表互不联动)
                            view.mUIPickerView.setNPicker(temperatureList, null, null);
                            //默认初始选中状态
                            view.mUIPickerView.setCurrentItems(9, 0, 0);
                            //定义一个局部变量记录选中时间
                            string temperature = "25℃";
                            for (int i = 0; i < temperatureList.Count; i++)
                            {
                                if (temperatureList[i] == temperatureView.btnState.Text)
                                {
                                    //更新状态
                                    view.mUIPickerView.setCurrentItems(i, 0, 0);
                                    //更新状态
                                    temperature = temperatureList[i];
                                    break;
                                }
                            }
                            //选中时间回调方法,时间变化一次回调一次
                            view.mUIPickerView.OnSelectChangeEvent += (index1, index2, index3) =>
                            {
                                temperature = temperatureList[index1];
                            };
                            //确定点击事件
                            view.btnConfirm.MouseUpEventHandler += (sender2, e2) =>
                            {
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "set_temp");
                                //界面显示选中值
                                temperatureView.btnState.Text = stateStr;
                                //设备属性值,云雀上定义好的;
                                string keyVlaue = "set_temp";
                                string set_temp_value = temperature.Replace("℃", "");
                                LogicMethod.dictionary(dic, "value", set_temp_value);
                                selectedState = device.functionType + "_set_temp";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                                temperatureView.btnState.Text = temperature;
                                selectedState = device.spk + "_" + keyVlaue;
                                string set_temp_value = stateStr.Replace("℃", "");
                                //数据封装
                                AddDictionary(keyVlaue, set_temp_value);
                            };
                            });
                        };
                        ///模式点击事件
                        floorHeatingModehView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            List<string> modeStr = new List<string> {
                                Language.StringByID(StringId.dayMode),
                                 Language.StringByID(StringId.nightMode),
                                  Language.StringByID(StringId.leaveMode),
                                   Language.StringByID(StringId.ordinaryMode),
                                Language.StringByID(StringId.timeMode),
                            };
                            FrameLayout frame = new FrameLayout
                            {
                                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
                            };
                            this.AddChidren(frame);
                            LogicView.DateView modeView = new LogicView.DateView();
                            modeView.btnTitle.TextID = StringId.modeLogic;
                            modeView.FLayoutView(frame, modeStr.Count);
                            modeView.btnCancel.MouseUpEventHandler += (sender2, e2) =>
                            {
                                frame.RemoveFromParent();
                            };
                            ///定义一个Btn记录选中状态
                            Button checkBtn = new Button
                            {
                                Tag = "unknown",
                            };
                            for (int i = 0; i < modeStr.Count; i++)
                            {
                                LogicView.CheckView modeTypeView = new LogicView.CheckView();
                                modeTypeView.frameLayout.Y = Application.GetRealHeight(56 + 50 * i);
                                modeView.frameLayout.AddChidren(modeTypeView.FLayoutView());
                                modeTypeView.btnText.Text = modeStr[i];
                                modeTypeView.btnClick.Tag = modeStr[i];//标记
                                if (floorHeatingModehView.btnState.Text == modeStr[i])
                                {
                                    //显示之前的选中状态
                                    checkBtn.IsSelected = false;
                                    modeTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = modeTypeView.btnCheckIcon;
                                    checkBtn.Tag = modeTypeView.btnClick.Tag.ToString();
                                }
                                //星期的点击事件
                                modeTypeView.btnClick.MouseUpEventHandler += (sender1, e1) =>
                                {
                                    checkBtn.IsSelected = false;
                                    modeTypeView.btnCheckIcon.IsSelected = true;
                                    checkBtn = modeTypeView.btnCheckIcon;
                                    checkBtn.Tag = modeTypeView.btnClick.Tag.ToString();
                                };
                            }
                            modeView.btnConfirm.MouseUpEventHandler += (sender1, e1) =>
                            {
                                if (checkBtn.Tag.ToString() == "unknown")
                                {
                                    return;
                                }
                            ///之前的状态文本
                            string currText = floorHeatingModehView.btnState.Text;
                            //设备属性值,云雀上定义好的;
                            string keyVlaue = "mode";
                            selectedState = device.spk + "_" + keyVlaue;
                            PublicInterface modeView = new PublicInterface();
                            var modeListStr = modeView.GetViewList("floorheatingmode");
                            modeView.SingleSelectionShow(this, modeListStr, Language.StringByID(StringId.modeLogic), currText
                               , (stateValue) =>
                               {
                                   //界面显示选中值
                                   floorHeatingModehView.btnState.Text = stateValue;
                                   //数据封装
                                   AddDictionary(keyVlaue, modeView.GetModeValueString(stateValue, "floorheatingmode"));
                               });
                                Dictionary<string, string> dic = new Dictionary<string, string>();
                                LogicMethod.dictionary(dic, "key", "mode");
                                string keyVlaue = "mode";
                                LogicMethod.dictionary(dic, "value", GetModeValueString(checkBtn.Tag.ToString(), "FloorHeating"));
                                floorHeatingModehView.btnState.Text = checkBtn.Tag.ToString();
                                selectedState = device.functionType + "_mode";
                                AddDictionaryData(dicSateteList, keyVlaue, dic);
                                RemView(frame);
                            };
                        };
                        if (edit)
                        {
                            //显示编辑之前的设备状态
                            GetEditState(device, index, floorHeatingSwitchVie.btnState, temperatureView.btnState, floorHeatingModehView.btnState, null);
                        }
                        #endregion
                    }
                    break;
                case SPK.AirFreshStandard:
                    {
                        #region 界面
                        ///开关
                        LogicView.FunTypeView AirFreshSwitchVie = new LogicView.FunTypeView();
                        AirFreshSwitchVie.btnText.TextID = StringId.switchLogic;
                        fLayout.AddChidren(AirFreshSwitchVie.FLayoutView());
                        ///风速
                        LogicView.FunTypeView AirFreshSpeedView = new LogicView.FunTypeView();
                        AirFreshSpeedView.frameLayout.Y = AirFreshSwitchVie.frameLayout.Bottom;
                        AirFreshSpeedView.btnText.TextID = StringId.speedLogic;
                        fLayout.AddChidren(AirFreshSpeedView.FLayoutView());
                        #endregion
                        #region 点击事件
                        ///开关点击事件
                        AirFreshSwitchVie.btnClick.MouseUpEventHandler += (sender, e) =>
                          {
                              SwitchViewMethod(device, AirFreshSwitchVie.btnState, 2);
                          };
                        ///风速点击事件
                        AirFreshSpeedView.btnClick.MouseUpEventHandler += (sender, e) =>
                        {
                            //定义一个临时列表
                            List<string> fanAttrList = new List<string>();
                            //动态读取新风风速列表
                            var fanAttr = device.GetAttribute(FunctionAttributeKey.FanSpeed);
                            foreach (var fanAttrValue in fanAttr.value)
                            {
                                switch (fanAttrValue)
                                {
                                    case "high":
                                        {
                                            fanAttrList.Add(Language.StringByID(StringId.HighWindSpeed));
                                        }
                                        break;
                                    case "medium":
                                        {
                                            fanAttrList.Add(Language.StringByID(StringId.MiddleWindSpeed));
                                        }
                                        break;
                                    case "low":
                                        {
                                            fanAttrList.Add(Language.StringByID(StringId.LowWindSpeed));
                                        }
                                        break;
                                    case "auto":
                                        {
                                            fanAttrList.Add(Language.StringByID(StringId.Auto));
                                            break;
                                        }
                                }
                            }
                            ///之前的状态文本
                            string currText = AirFreshSpeedView.btnState.Text;
                            //设备属性值,云雀上定义好的;
                            string keyVlaue = "fan";
                            selectedState = device.spk + "_" + keyVlaue;
                            PublicInterface speedView = new PublicInterface();
                            var speedListStr = fanAttrList;// speedView.GetViewList(keyVlaue);
                            speedView.SingleSelectionShow(this, speedListStr, Language.StringByID(StringId.speedLogic), currText
                               , (stateValue) =>
                               {
                                   //界面显示选中值
                                   AirFreshSpeedView.btnState.Text = stateValue;
                                   //数据封装
                                   AddDictionary(keyVlaue, speedView.GetModeValueString(stateValue, keyVlaue));
                               });
                        };
                        if (edit)
                        {
                            //显示编辑之前的设备状态
                            GetEditState(device, index, AirFreshSwitchVie.btnState, AirFreshSpeedView.btnState, null, null);
                        }
                        #endregion
@@ -495,39 +397,37 @@
            }
            #endregion
            #region  保存点击时间
            #region  保存点击事件
            saveView.btnClick.MouseUpEventHandler += (sen, e) =>
            {
                if (selectedState != "unknown")
                {
                    Output outputDevice = new Output();
                    outputDevice.target_type = "1";
                    outputDevice.sid = device.sid;
                    switch (device.functionType)
                    switch (device.spk)
                    {
                        case FunctionType.Dimmer:
                        case FunctionType.RGB:
                        case FunctionType.RGBW:
                        case FunctionType.ColorTemperature:
                        case SPK.LightDimming:
                        case SPK.LightRGB:
                        case SPK.LightRGBW:
                        case SPK.LightCCT:
                            {
                                //调光做了一个特殊处理;
                                if (dicSateteList.Count > 1)
                                {
                                    foreach (var dictionary in dicSateteList)
                                    {
                                        if (dictionary["key"] == "on_off")
                                        string keyValue = dictionary["key"];
                                        if (keyValue == "on_off")
                                        {
                                            if (dictionary["value"] == "off")
                                            {
                                                //移除列表所有数据
                                                dicSateteList.Clear();
                                                //重新添加开光属性数据
                                                //重新添加-关-属性数据
                                                Dictionary<string, string> diction = new Dictionary<string, string>();
                                                diction.Add("key", "on_off");
                                                diction.Add("value", "on_off");
                                                diction.Add("value", "off");
                                                dicSateteList.Add(diction);
                                                break;
                                            }
@@ -536,11 +436,39 @@
                                }
                                break;
                            }
                        case SPK.AcStandard:
                        case SPK.FloorHeatStandard:
                        case SPK.AirFreshStandard:
                            {
                                //做了一个特殊处理;
                                bool _bool = false;
                                for (int i = 0; i < dicSateteList.Count; i++)
                                {
                                    var dic = dicSateteList[i];
                                    if (dic.ContainsValue("on_off"))
                                    {
                                        //判断是否存在
                                        _bool = true;
                                        break;
                                    }
                                }
                                if (!_bool)
                                {
                                    //没有开关就默认添加-开-属性
                                    Dictionary<string, string> diction = new Dictionary<string, string>();
                                    diction.Add("key", "on_off");
                                    diction.Add("value", "on");
                                    dicSateteList.Add(diction);
                                }
                            }
                            break;
                    }
                    outputDevice.status = dicSateteList;
                    if (edit)
                    {
                        //更新延时时间
                        outputDevice.delay = Logic.currlogic.output[index].delay;
                        //移除旧数据
                        Logic.currlogic.output.RemoveAt(index);
                        //新数据插入旧数据的位置;
@@ -562,166 +490,12 @@
                    this.RemoveFromParent();
                    return;
                }
                LogicMethod.RemoveAllView();
                LogicMethod.CurrLogicMethod.RemoveAllView();
                AddLogic addLogic = new AddLogic();
                MainPage.BasePageView.AddChidren(addLogic);
                addLogic.Show();
                MainPage.BasePageView.PageIndex = MainPage.BasePageView.ChildrenCount - 1;
            };
            #endregion
        }
        /// <summary>
        /// 获取模式/风速键值
        /// </summary>
        /// <param name="text"></param>
        /// <param name="type"></param>
        /// <returns></returns>
        private string GetModeValueString(string text, string type)
        {
            string str = "";
            switch (type)
            {
                case "mode":
                    {
                        if (text == Language.StringByID(StringId.coolLogic))
                        {
                            str = "cool";
                        }
                        else if (text == Language.StringByID(StringId.heatingLogic))
                        {
                            str = "heat";
                        }
                        else if (text == Language.StringByID(StringId.autoLogic))
                        {
                            str = "auto";
                        }
                        else if (text == Language.StringByID(StringId.dehumidifyLogic))
                        {
                            str = "dry";
                        }
                    }
                    break;
                case "fan":
                    {
                        if (text == Language.StringByID(StringId.HighWindSpeed))
                        {
                            str = "high";
                        }
                        else if (text == Language.StringByID(StringId.MiddleWindSpeed))
                        {
                            str = "medium";
                        }
                        else if (text == Language.StringByID(StringId.LowWindSpeed))
                        {
                            str = "low";
                        }
                        else if (text == Language.StringByID(StringId.Auto))
                        {
                            str = "auto";
                        }
                    }
                    break;
                case "FloorHeating":
                    {
                        if (text == Language.StringByID(StringId.dayMode))
                        {
                            str = "day";
                        }
                        else if (text == Language.StringByID(StringId.nightMode))
                        {
                            str = "night";
                        }
                        else if (text == Language.StringByID(StringId.leaveMode))
                        {
                            str = "away";
                        }
                        else if (text == Language.StringByID(StringId.ordinaryMode))
                        {
                            str = "normal";
                        }
                        else if (text == Language.StringByID(StringId.timeMode))
                        {
                            str = "timer";
                        }
                    }
                    break;
            }
            return str;
        }
        /// <summary>
        ///开关=界面
        /// </summary>
        /// <param name="fLayout"></param>
        /// <param name="device"></param>
        /// <param name="index"></param>
        /// <param name="edit"></param>
        /// <param name="intView">选中View的数量</param>
        private void SwitchView(FrameLayout fLayout, Entity.Function device, int index, bool edit, int intView)
        {
            #region 界面
            ///开关
            LogicView.FunTypeView curtainSwitchView = new LogicView.FunTypeView();
            curtainSwitchView.btnText.TextID = StringId.switchLogic;
            fLayout.AddChidren(curtainSwitchView.FLayoutView());
            #endregion
            #region 点击事件
            ///开关点击事件
            curtainSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                SwitchViewMethod(device, curtainSwitchView.btnState, intView);
            };
            if (edit)
            {
                GetEditState(device, index, curtainSwitchView.btnState, null, null, null);
            }
            #endregion
        }
        /// <summary>
        ///(开关+亮度/百分比)界面
        /// </summary>
        /// <param name="fLayout"></param>
        /// <param name="device"></param>
        /// <param name="index"></param>
        /// <param name="edit"></param>
        /// <param name="intView">选中View的数量</param>
        private void SwitchBrightnessView(FrameLayout fLayout, Entity.Function device, int index, bool edit, int intView)
        {
            #region 界面
            ///开关
            LogicView.FunTypeView lightSwitchView = new LogicView.FunTypeView();
            lightSwitchView.btnText.TextID = StringId.switchLogic;
            fLayout.AddChidren(lightSwitchView.FLayoutView());
            ///亮度
            LogicView.FunTypeView brightnessView = new LogicView.FunTypeView();
            brightnessView.frameLayout.Y = lightSwitchView.frameLayout.Bottom;
            if (device.functionType == FunctionType.MotorCurtain || device.functionType == FunctionType.RollingShutter)
            {
                brightnessView.btnText.TextID = StringId.percentum;
            }
            else
            {
                brightnessView.btnText.TextID = StringId.brightnesLogic;
            }
            fLayout.AddChidren(brightnessView.FLayoutView());
            #endregion
            #region 点击事件
            ///开关点击事件
            lightSwitchView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                SwitchViewMethod(device, lightSwitchView.btnState, intView);
            };
            ///亮度点击事件
            brightnessView.btnClick.MouseUpEventHandler += (sender, e) =>
            {
                BrightnessMethod(device, brightnessView.btnState, brightnessView.btnText.Text);
            };
            if (edit)
            {
                GetEditState(device, index, lightSwitchView.btnState, brightnessView.btnState, null, null);
            }
            #endregion
        }
@@ -734,67 +508,39 @@
        private void SwitchViewMethod(Entity.Function device, Button button, int len)
        {
            #region 界面
            FrameLayout frame = new FrameLayout
            {
                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
            };
            FrameLayout frame = new FrameLayout { BackgroundColor = CSS.CSS_Color.viewTrans60lucence };
            this.AddChidren(frame);
            LogicView.SwitchView switchView = new LogicView.SwitchView();
            switchView.FLayoutView(frame, len);
            switchView.FLayoutView(frame, len, button.Text, (strValue) =>
            {
                int id = 0;
                switch (strValue)
                {
                    case "on":
                        {
                            id = StringId.onLogic;
                        }
                        break;
                    case "off":
                        {
                            id = StringId.offLogic;
                        }
                        break;
                    case "stop":
                        {
                            id = StringId.stop;
                        }
                        break;
                }
                //界面显示选中值
                button.TextID = id;
                selectedState = device.spk + "_" + strValue;
                //设备属性值,云雀上定义好的;
                string keyVlaue = "on_off";
                //数据封装
                AddDictionary(keyVlaue, strValue);
            });
            #endregion
            #region 点击事件
            Dictionary<string, string> dic = new Dictionary<string, string>();
            LogicMethod.dictionary(dic, "key", "on_off");
            string keyVlaue = "on_off";
            //开-点击事件
            switchView.btnOn.MouseUpEventHandler += (sender2, e2) =>
            {
                LogicMethod.dictionary(dic, "value", "on");
                button.TextID = StringId.onLogic;
                selectedState = device.functionType + "_on";
                AddDictionaryData(dicSateteList, keyVlaue, dic);
                RemView(frame);
            };
            //关-点击事件
            switchView.btnOff.MouseUpEventHandler += (sender3, e3) =>
            {
                LogicMethod.dictionary(dic, "value", "off");
                button.TextID = StringId.offLogic;
                selectedState = device.functionType + "_off";
                AddDictionaryData(dicSateteList, keyVlaue, dic);
                RemView(frame);
            };
            //暂停-点击事件
            switchView.btnStop.MouseUpEventHandler += (sender3, e3) =>
            {
                LogicMethod.dictionary(dic, "value", "stop");
                button.TextID = StringId.stop;
                selectedState = device.functionType + "_stop";
                AddDictionaryData(dicSateteList, keyVlaue, dic);
                RemView(frame);
            };
            ///显示之前状态
            if (button.Text != "")
            {
                if (button.Text == switchView.btnOn.Text)
                {
                    switchView.btnOn.TextColor = CSS.CSS_Color.textConfirmColor;
                }
                else if (button.Text == switchView.btnOff.Text)
                {
                    switchView.btnOff.TextColor = CSS.CSS_Color.textConfirmColor;
                }
                else if (button.Text == switchView.btnStop.Text)
                {
                    switchView.btnOff.TextColor = CSS.CSS_Color.textConfirmColor;
                }
            }
            #endregion
        }
        /// <summary>
        /// 亮度/百分比=功能下一级界面
@@ -804,78 +550,39 @@
        private void BrightnessMethod(Entity.Function device, Button button, string titleName)
        {
            #region 界面
            FrameLayout frame = new FrameLayout
            {
                BackgroundColor = CSS.CSS_Color.viewTrans60lucence,
            };
            this.AddChidren(frame);
            //之前的状态值
            string stateVlaue = button.Text;
            LogicView.BrightnessView brightness = new LogicView.BrightnessView();
            brightness.btnTitle.Text = titleName;
            brightness.FLayoutView(frame);
            #endregion
            #region 点击事件
            int brightnesValue = 0;
            Dictionary<string, string> dic = new Dictionary<string, string>();
            LogicMethod.dictionary(dic, "key", "brightness");
            string keyVlaue = "brightness";
            //—点击事件
            brightness.btn_subtract_click.MouseUpEventHandler += (sender2, e2) =>
            brightness.FLayoutView(this, titleName, stateVlaue, (brightnesValue) =>
            {
                if (brightnesValue > 0)
                //界面显示选中值
                button.Text = brightnesValue + "%";
                selectedState = device.spk + brightnesValue.ToString();
                //设备属性值,云雀上定义好的;
                string keyVlaue = "";
                switch (device.spk)
                {
                    brightnesValue -= 1;
                    brightness.seekBarVol.Progress = brightnesValue;
                    //开关灯光 light.Switch
                    case SPK.LightDimming:
                    case SPK.LightRGB:
                    case SPK.LightRGBW:
                    case SPK.LightCCT:
                        {
                            keyVlaue = "brightness";
                        }
                        break;
                    case SPK.CurtainRoller:
                    case SPK.CurtainTrietex:
                        {
                            keyVlaue = "percent";
                        }
                        break;
                }
            };
            //+点击事件
            brightness.btn_add_click.MouseUpEventHandler += (sende2, e2) =>
            {
                if (brightnesValue < 100)
                {
                    brightnesValue += 1;
                    brightness.seekBarVol.Progress = brightnesValue;
                }
            };
            //进度条滑动点击事件
            EventHandler<int> progressclick = (sender2, e2) =>
            {
                brightnesValue = brightness.seekBarVol.Progress;
            };
            brightness.seekBarVol.OnProgressChangedEvent += progressclick;
            brightness.seekBarVol.OnStopTrackingTouchEvent += progressclick;
            //确定点击事件
            brightness.btnConfirm.MouseUpEventHandler += (sende2, e2) =>
            {
                if (brightnesValue == 0)
                {
                    return;
                }
                LogicMethod.dictionary(dic, "value", brightnesValue.ToString());
                selectedState = device.functionType + brightnesValue.ToString();
                AddDictionaryData(dicSateteList, keyVlaue, dic);
                button.Text = brightnesValue.ToString();
                RemView(frame);
            };
            //显示之前状态
            if (button.Text != "")
            {
                brightnesValue = int.Parse(button.Text);
                brightness.seekBarVol.Progress = brightnesValue;
            }
                //数据封装
                AddDictionary(keyVlaue, brightnesValue);
            });
            #endregion
        }
        /// <summary>
        /// 移除控件
        /// </summary>
        /// <param name="frame"></param>
        private void RemView(FrameLayout frame)
        {
            frame.RemoveFromParent();
        }
        /// <summary>
        /// 显示编辑之前的设备状态
@@ -889,7 +596,7 @@
        private void GetEditState(Entity.Function device, int index, Button button1, Button button2, Button button3, Button button4)
        {
            Output outputs = Logic.currlogic.output[index];
            var dicList = outputs.status as List<Dictionary<string, string>>;
            var dicList = outputs.status;
            //清除之前旧数据
            dicSateteList.Clear();
            if (dicList.Count != 0)
@@ -897,310 +604,33 @@
                //有数据重新赋值
                dicSateteList = dicList;
            }
            switch (device.functionType)
            {
                //开关灯光
                case FunctionType.Relay:
                    {
                        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 FunctionType.Dimmer:
                case FunctionType.RGB:
                case FunctionType.RGBW:
                case FunctionType.ColorTemperature:
                    {
                        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":
                                    {
                                        button2.Text = value;
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                case FunctionType.Curtain:
                    {
                        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 FunctionType.MotorCurtain:
                case FunctionType.RollingShutter:
                    {
                        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;
                                            case "stop":
                                                {
                                                    button1.Text = Language.StringByID(StringId.stop);
                                                }
                                                break;
                                        }
                                    }
                                    break;
                                case "brightness":
                                    {
                                        button2.Text = value;
                                    }
                                    break;
                            }
                        }
                    }
                    break;
                case FunctionType.AC:
                    {
                        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":
                                    {
                                        button2.Text = value + "℃";
                                    }
                                    break;
                                case "mode":
                                    {
                                        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":
                                    {
                                        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 FunctionType.FloorHeating:
                    {
                        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":
                                    {
                                        button2.Text = value + "℃";
                                    }
                                    break;
                                case "mode":
                                    {
                                        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;
            }
            InpOrOutLogicMethod.EditState(device, dicList, button1, button2, button3, button4);
        }
        /// <summary>
        /// 添加处理选中数据
        /// 添加选中数据
        /// </summary>
        /// <param name="dicList">存储数据列表</param>
        /// <param name="keyValue">识别设备</param>
        /// <param name="dictionary">选中数据</param>
        /// <param name="KeyValue">设备属性值,云雀上定义好的</param>
        /// <param name="selectedValue">状态值</param>
        private void AddDictionary(string KeyValue, string selectedValue)
        {
            //数据封装
            Dictionary<string, string> dic = new Dictionary<string, string>();
            LogicMethod.CurrLogicMethod.dictionary(dic, "key", KeyValue);
            LogicMethod.CurrLogicMethod.dictionary(dic, "value", selectedValue);
            AddDictionaryList(KeyValue, dic);
        }
        /// <summary>
        /// 更新数据列表
        /// </summary>
        /// <param name="keyValue">设备属性值,云雀上定义好的</param>
        /// <param name="dictionary">添加选中数据</param>
        /// <returns></returns>
        private void AddDictionaryData(List<Dictionary<string, string>> dicList, string keyValue, Dictionary<string, string> dictionary)
        private void AddDictionaryList(string keyValue, Dictionary<string, string> dictionary)
        {
            int indexValue = -1;
            for (int i = 0; i < dicList.Count; i++)
            for (int i = 0; i < dicSateteList.Count; i++)
            {
                var dic = dicList[i];
                var dic = dicSateteList[i];
                if (dic.ContainsValue(keyValue))
                {
                    //判断是否存在
@@ -1212,14 +642,14 @@
            if (indexValue != -1)
            {
                //存在移除
                dicList.RemoveAt(indexValue);
                dicSateteList.RemoveAt(indexValue);
                //重新添加
                dicList.Insert(indexValue, dictionary);
                dicSateteList.Insert(indexValue, dictionary);
            }
            else
            {
                //新添加
                dicList.Add(dictionary);
                dicSateteList.Add(dictionary);
            }
        }
@@ -1250,7 +680,6 @@
            }
        }
    }
}