using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.Core; using Tango.Core.Commands; namespace Tango.DispenserAnalyzer.UI.Models { public interface IBaseSettingModel { string PropertyName { get; set; } object PropertyValue { get; set; } object DefaultValue { get; set; } string DefaultValueDisplay { get; set; } double MinRangeValue { get; set; } double MaxRangeValue { get; set; } bool IsRangeVisible { get; set; } } [JsonObject(MemberSerialization.OptIn)] public class BaseSettingModel: ExtendedObject, IBaseSettingModel { #region Properties [JsonProperty] public AnalyzerSettingsEnum _enumName; private string _propertyName; [JsonProperty] public string PropertyName { get { return _propertyName; } set { _propertyName = value; RaisePropertyChangedAuto(); } } private object _propertyvalue; [JsonProperty] public object PropertyValue { get { return _propertyvalue; } set { if( _propertyvalue != value) { _propertyvalue = value; RaisePropertyChangedAuto(); OnPropertyvalueChanged(); } } } [JsonProperty] public bool IsShowCheckBox { get { if(PropertyValue is bool) { return true; } return false; } } private object _defaultValue; [JsonProperty] public object DefaultValue { get { return _defaultValue; } set { _defaultValue = value; RaisePropertyChangedAuto(); } } private string _defaultValueDisplay; [JsonProperty] public string DefaultValueDisplay { get { return _defaultValueDisplay; } set { _defaultValueDisplay = value; } } private double _minDefaultRangeValue; [JsonProperty] public double MinDefaultRangeValue { get { return _minDefaultRangeValue; } set { _minDefaultRangeValue = value; RaisePropertyChangedAuto(); } } private double _maxDefaultRangeValue; [JsonProperty] public double MaxDefaultRangeValue { get { return _maxDefaultRangeValue; } set { _maxDefaultRangeValue = value; RaisePropertyChangedAuto(); } } private double _minRangeValue; [JsonProperty] public double MinRangeValue { get { return _minRangeValue; } set { if (_minRangeValue != value) { _minRangeValue = value; RaisePropertyChangedAuto(); OnPropertyvalueChanged(); } } } private double _maxRangeValue; [JsonProperty] public double MaxRangeValue { get { return _maxRangeValue; } set { if (_maxRangeValue != value) { _maxRangeValue = value; RaisePropertyChangedAuto(); OnPropertyvalueChanged(); } } } [JsonProperty] public bool IsRangeVisible { get; set; } #endregion #region event and command public event EventHandler SettingValueEvent; public RelayCommand SetDefaultCommand { get; set; } #endregion public BaseSettingModel(AnalyzerSettingsEnum enumName, string defaultValueDisplay, bool isrange = false) { _enumName = enumName; PropertyName = _enumName.ToDescription(); DefaultValueDisplay = defaultValueDisplay; DefaultValue = Settings.GetDefaultValueByName(enumName); PropertyValue = Settings.GetValueByName(enumName); IsRangeVisible = isrange; if (IsRangeVisible) { var b = Settings.GetDefaultValueByName(AnalyzerSettingsEnum.AvgMinValue); double bf = (double)b; } MinDefaultRangeValue = IsRangeVisible ? (double)(Settings.GetDefaultValueByName(AnalyzerSettingsEnum.AvgMinValue)) : 0.0; MaxDefaultRangeValue = IsRangeVisible ? (double)(Settings.GetDefaultValueByName(AnalyzerSettingsEnum.AvgMaxValue)) : 0.0; MinRangeValue = IsRangeVisible ? (double)(Settings.GetValueByName(AnalyzerSettingsEnum.AvgMinValue)) : 0.0; MaxRangeValue = IsRangeVisible ? (double)(Settings.GetValueByName(AnalyzerSettingsEnum.AvgMaxValue)) : 0.0; SetDefaultCommand = new RelayCommand(SetDefault); } public BaseSettingModel(AnalyzerSettingsEnum enumNameMinValue, AnalyzerSettingsEnum enumNameMaxValue, string defaultValueDisplay) { _enumName = enumNameMinValue; PropertyName = _enumName.ToDescription(); DefaultValueDisplay = defaultValueDisplay; DefaultValue = Settings.GetDefaultValueByName(enumNameMinValue); PropertyValue = Settings.GetValueByName(enumNameMinValue); IsRangeVisible = true; MinDefaultRangeValue = (double)(Settings.GetDefaultValueByName(enumNameMinValue)); MaxDefaultRangeValue = (double)(Settings.GetDefaultValueByName(enumNameMaxValue)); MinRangeValue = (double)(Settings.GetValueByName(enumNameMinValue)); MaxRangeValue = (double)(Settings.GetValueByName(enumNameMaxValue)); SetDefaultCommand = new RelayCommand(SetDefault); } private void SetDefault() { if (IsRangeVisible) { MinRangeValue = MinDefaultRangeValue; MaxRangeValue = MaxDefaultRangeValue; return; } PropertyValue = DefaultValue; } private void OnPropertyvalueChanged() { if (SettingValueEvent != null) { SettingValueEvent?.Invoke(this, new EventArgs()); } } } }