public DetailsParameterViewModel(Parameter model, DeviceDetailsViewModel parent)
		{
			Model = model;
			Name = model.DriverParameter.Description;
			_parent = parent;
			IsNotReadOnly = !model.DriverParameter.IsReadOnly && (model.DriverParameter.CanWriteInActive || !parent.IsActive);

			if (IsNotReadOnly)
				switch (Model.DriverParameter.ParameterType)
				{
					case ParameterType.Enum:
						IsEnum = true;
						ParameterEnum = new ObservableCollection<ParameterEnumItem>(Model.DriverParameter.ParameterEnumItems);
						SelectedEnumItem = ParameterEnum.FirstOrDefault(x => x.Value == model.IntValue);
						if (SelectedEnumItem == null)
							SelectedEnumItem = ParameterEnum.FirstOrDefault();
						break;
					case ParameterType.String:
						IsString = true;
						StringValue = Model.StringValue;
						break;
					case ParameterType.Int:
						IsInt = true;
						IntValue = Model.IntValue ?? Model.DriverParameter.IntDefaultValue;
						if (Model.DriverParameter.IsReadOnly)
							StringValue = IntValue.ToString();
						break;
					case ParameterType.Double:
						IsDouble = true;
						var doubleValue = Model.DoubleValue ?? Model.DriverParameter.DoubleDefaultValue;
						StringValue = doubleValue.ToString();
						break;
					case ParameterType.Bool:
						IsBool = true;
						BoolValue = Model.BoolValue ?? Model.DriverParameter.BoolDefaultValue;
						break;
					case ParameterType.DateTime:
						IsDateTime = true;
						var dateTime = Model.DateTimeValue ?? DateTime.Now;
						DateTimeValue = new DateTimePairViewModel(dateTime);
						TimeSpan = dateTime.TimeOfDay;
						break;
					default:
						break;
				}
			else
				ReadOnlyValue = model.GetStringValue();
		}
示例#2
0
文件: Device.cs 项目: xbadcode/Rubezh
		public Device(ResursAPI.DriverType driverType, Device parent = null)
			: this()
		{
			Name = driverType.ToDescription();
			Driver = ResursAPI.DriversConfiguration.GetDriver(driverType);
			DriverUID = Driver.UID;
			TariffType = Driver.DefaultTariffType;
			foreach (var item in Driver.DriverParameters)
			{
				var parameter = new Parameter { Device = this };
				parameter.Initialize(item);
				Parameters.Add(parameter);
			}

			SetParent(parent);
		}
示例#3
0
		public static bool IsEqual(Parameter x, Parameter y)
		{
			if (x.DriverParameter.ParameterType != y.DriverParameter.ParameterType)
				return false;
			switch (x.DriverParameter.ParameterType)
			{
				case ParameterType.Enum:
				case ParameterType.Int:
					return x.IntValue == y.IntValue;
				case ParameterType.String:
					return x.StringValue == y.StringValue;
				case ParameterType.Double:
					return x.DoubleValue == y.DoubleValue;
				case ParameterType.Bool:
					return x.BoolValue == y.BoolValue;
				case ParameterType.DateTime:
					return  x.DateTimeValue == y.DateTimeValue;
				default:
					return false;
			}
		}
示例#4
0
		public ParameterViewModel(Parameter model)
		{
			Model = model;
			Name = Model.DriverParameter.Description;
			Value = Model.GetStringValue();
		}