public frm_WHControlConfig_Editor(string sn, UC_WHControlConfig_VM_Base strategy, List <UC_WHControlConfig_Tem_VM> temStrategyList, List <UC_WHControlConfig_Smoke_VM> smokeStrategyList)
 {
     InitializeComponent();
     UpdateLang(CommonUI.ControlConfigLangPath);
     _vm = new WHControlConfig_Editor_VM();
     _vm.SelectedScreenSN = sn;
     if (strategy == null)
     {
         comboBox_ControlType.Enabled = true;
         _vm.Strategy = new UC_WHControlConfig_Tem_VM(sn);
     }
     else
     {
         _vm.Strategy = strategy;
         comboBox_ControlType.Enabled = false;
     }
     _vm.TemStrategyList   = temStrategyList;
     _vm.SmokeStrategyList = smokeStrategyList;
 }
        private void UpdateUI(UC_WHControlConfig_VM_Base strategy)
        {
            if (strategy == null)
            {
                return;
            }
            UC_WHControlConfig_Smoke_VM smoke_VM = null;
            UC_WHControlConfig_Tem_VM   tem_VM   = null;

            if (strategy.StratlType == StrategyType.SmokeStrategy)
            {
                smoke_VM = (UC_WHControlConfig_Smoke_VM)strategy;
                if (smoke_VM == null)
                {
                    return;
                }
                if (_UC_SmokeCfg != null)
                {
                    panel_ControlContent.Controls.Remove(_UC_SmokeCfg);
                }
                _UC_SmokeCfg = new UC_WHControlConfig_Smoke(smoke_VM);
                panel_ControlContent.Controls.Add(_UC_SmokeCfg);
                _UC_SmokeCfg.Dock = DockStyle.Fill;
                _UC_SmokeCfg.BringToFront();
            }
            else if (strategy.StratlType == StrategyType.TemperatureStrategy)
            {
                tem_VM = (UC_WHControlConfig_Tem_VM)strategy;
                if (tem_VM == null)
                {
                    return;
                }
                if (_UC_TemCfg != null)
                {
                    panel_ControlContent.Controls.Remove(_UC_TemCfg);
                }
                _UC_TemCfg = new UC_WHControlConfig_Tem(tem_VM);
                panel_ControlContent.Controls.Add(_UC_TemCfg);
                _UC_TemCfg.Dock = DockStyle.Fill;
                _UC_TemCfg.BringToFront();
            }
        }
 public void AddStartegy(UC_WHControlConfig_VM_Base strategyInfo)
 {
     if (strategyInfo.StratlType == StrategyType.SmokeStrategy)
     {
         var vm = (UC_WHControlConfig_Smoke_VM)strategyInfo;
         _smokeStrategyList.Add(vm);
         _vm_BaseList.Add(vm);
     }
     else if (strategyInfo.StratlType == StrategyType.TemperatureStrategy)
     {
         var vm = (UC_WHControlConfig_Tem_VM)strategyInfo;
         _temStrategyList.Add(vm);
         _vm_BaseList.Add(vm);
     }
 }
 public void ModifyStartegy(UC_WHControlConfig_VM_Base strategyInfo)
 {
     if (strategyInfo.StratlType == StrategyType.SmokeStrategy)
     {
         var vm = (UC_WHControlConfig_Smoke_VM)strategyInfo;
         if (vm == null) return;
         var smokeVM = _smokeStrategyList.Find(a => a.ID == vm.ID);
         if (smokeVM != null)
         {
             int index = _smokeStrategyList.FindIndex(a => a.ID == smokeVM.ID);
             _smokeStrategyList.RemoveAt(index);
             _smokeStrategyList.Insert(index, vm);
             index = _vm_BaseList.FindIndex(a => a.ID == smokeVM.ID);
             _vm_BaseList.RemoveAt(index);
             _vm_BaseList.Insert(index, vm);
         }
     }
     else if (strategyInfo.StratlType == StrategyType.TemperatureStrategy)
     {
         var vm = (UC_WHControlConfig_Tem_VM)strategyInfo;
         if (vm == null) return;
         var temVM = _temStrategyList.Find(a => a.ID == vm.ID);
         if (temVM != null)
         {
             int index = _temStrategyList.FindIndex(a => a.ID == temVM.ID);
             _temStrategyList.RemoveAt(index);
             _temStrategyList.Insert(index, vm);
             index = _vm_BaseList.FindIndex(a => a.ID == temVM.ID);
             _vm_BaseList.RemoveAt(index);
             _vm_BaseList.Insert(index, vm);
         }
     }
 }
 public bool DeleteStartegy(UC_WHControlConfig_VM_Base strategyInfo)
 {
     if (strategyInfo.StratlType == StrategyType.SmokeStrategy)
     {
         var vm = (UC_WHControlConfig_Smoke_VM)strategyInfo;
         if (vm == null) return false;
         var smokeVM = _smokeStrategyList.Find(a => a.ID == vm.ID);
         if (smokeVM == null) return false;
         else
         {
             if (_smokeStrategyList.Remove(smokeVM))
                 return _vm_BaseList.Remove(smokeVM);
             else return false;
         }
     }
     else if (strategyInfo.StratlType == StrategyType.TemperatureStrategy)
     {
         var vm = (UC_WHControlConfig_Tem_VM)strategyInfo;
         if (vm == null) return false;
         var temVM = _temStrategyList.Find(a => a.ID == vm.ID);
         if (temVM == null) return false;
         else
         {
             if (_temStrategyList.Remove(temVM))
                 return _vm_BaseList.Remove(temVM);
             else return false;
         }
     }
     else if (strategyInfo.StratlType == StrategyType.LightStrategy)
     {
         //处理亮度控制
     }
     return true;
 }
        private void button_OK_Click(object sender, EventArgs e)
        {
            if (comboBox_ControlType.SelectedIndex < 0)
            {
                return;
            }
            StrategyType type = _vm.SelectedCtrlType.Value;
            UC_WHControlConfig_VM_Base baseVM = null;

            #region 页面输入合理性检测
            if (type == StrategyType.TemperatureStrategy)
            {
                ValueRes tempRes = _UC_TemCfg.IsOK();
                switch (tempRes)
                {
                case ValueRes.ok:
                    break;

                case ValueRes.MinBiggerThanMax:
                    CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_tem_minvaluebiggerthanmax", "最小温度不能大于最大温度"));
                    return;

                case ValueRes.MinToMaxToSimilar:
                    CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_tem_valuetoosimilar", "最大温度与最小温度值相差不能小于5℃"));
                    return;

                case ValueRes.invalidValue:
                    CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_action_illegal", "请设置有效的执行动作"));
                    return;
                }
            }
            else if (type == StrategyType.SmokeStrategy)
            {
                if (!_UC_SmokeCfg.IsOk())
                {
                    CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_power_notchoose", "请选择需要关闭的电源"));
                    return;
                }
                baseVM = _UC_SmokeCfg.SmokeVM;
            }
            #endregion
            if (comboBox_ControlType.Enabled)
            {
                ControlConfigSaveRes res;
                if (type == StrategyType.SmokeStrategy)
                {
                    res = _vm.IsSmokeOk(_UC_SmokeCfg.SmokeVM);
                    switch (res)
                    {
                    case ControlConfigSaveRes.ok:
                        _vm.Strategy      = _UC_SmokeCfg.SmokeVM;
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                        return;

                    case ControlConfigSaveRes.smoke_CtrlCfgIsExist:
                        CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_controlconfig_repeat", "策略重复,添加失败"));
                        return;

                    case ControlConfigSaveRes.smoke_CtrlCfgIsInvalid:
                        CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_action_illegal", "请设置有效的执行动作"));
                        return;

                    case ControlConfigSaveRes.smoke_objIsNull:
                        CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_controlconfig_null", "策略对象为空"));
                        return;

                    default:
                        break;
                    }
                }
                else if (type == StrategyType.TemperatureStrategy)
                {
                    res = _vm.IsTemOk(_UC_TemCfg.TemVM);
                    switch (res)
                    {
                    case ControlConfigSaveRes.ok:
                        _vm.Strategy      = _UC_TemCfg.TemVM;
                        this.DialogResult = System.Windows.Forms.DialogResult.OK;
                        return;

                    case ControlConfigSaveRes.tem_CtrlCfgIsExist:
                        CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_controlconfig_repeat", "策略重复,添加失败"));
                        return;

                    case ControlConfigSaveRes.tem_CtrlCfgIsInvalid:
                        CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_action_illegal", "请设置有效的执行动作"));
                        return;

                    case ControlConfigSaveRes.tem_objIsNull:
                        CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_controlconfig_null", "策略对象为空"));
                        return;

                    case ControlConfigSaveRes.tem_ConditionError:
                        CustomMessageBox.ShowCustomMessageBox(this.ParentForm, CommonUI.GetCustomMessage(_langTable, "msg_tem_valuetoosimilar", "最大温度与最小温度值相差不能小于5℃"));
                        return;

                    default:
                        break;
                    }
                }
            }
            else
            {
                if (type == StrategyType.SmokeStrategy)
                {
                    _vm.Strategy      = _UC_SmokeCfg.SmokeVM;
                    this.DialogResult = System.Windows.Forms.DialogResult.OK;
                }
                else if (type == StrategyType.TemperatureStrategy)
                {
                    _vm.Strategy      = _UC_TemCfg.TemVM;
                    this.DialogResult = System.Windows.Forms.DialogResult.OK;
                }
            }
        }