using DTS.Common.Enums; using DTS.Common.Interface; // ReSharper disable InconsistentNaming namespace ISOSettings { public class ISOSettingsData : DTS.Common.Base.BasePropertyChanged, IISOSettingsData { private bool _bValidateTestPositionAndTestObject = false; /// /// whether the TestObject and position iso fields should be validated when validating a test setup /// 15457 add error validation against valid ISO test object and position controlled by a site bool in system settings /// public bool ValidateTestObjectAndPosition { get => _bValidateTestPositionAndTestObject; set => SetProperty(ref _bValidateTestPositionAndTestObject, value, "ValidateTestObjectAndPosition"); } private bool _uniqueISOCodesRequired; public bool UniqueISOCodesRequired { get => _uniqueISOCodesRequired; set => SetProperty(ref _uniqueISOCodesRequired, value, "UniqueISOCodesRequired"); } public bool UniqueISOCodesRequiredAndShowISOCodes => UniqueISOCodesRequired && ShowISOCodes; public bool ShowISOCodes { get => ISOViewMode == IsoViewMode.ISOAndUserCode || ISOViewMode == IsoViewMode.ISOOnly; set { if (value) { switch (ISOViewMode) { case IsoViewMode.ISOOnly: case IsoViewMode.ISOAndUserCode: break; case IsoViewMode.UserCodeOnly: ISOViewMode = IsoViewMode.ISOAndUserCode; break; case IsoViewMode.ChannelNameOnly: ISOViewMode = IsoViewMode.ISOOnly; break; } } else { switch (ISOViewMode) { case IsoViewMode.ISOOnly: case IsoViewMode.UserCodeOnly: case IsoViewMode.ChannelNameOnly: break; case IsoViewMode.ISOAndUserCode: ISOViewMode = IsoViewMode.UserCodeOnly; break; } } OnPropertyChanged("ShowISOStringBuilder"); OnPropertyChanged("UniqueISOCodesRequired"); OnPropertyChanged("UseISOCodeFilterMapping"); OnPropertyChanged("UniqueISOCodesRequiredAndShowISOCodes"); } } public bool ShowUserCodes { get => ISOViewMode == IsoViewMode.ISOAndUserCode || ISOViewMode == IsoViewMode.UserCodeOnly; set { if (value) { switch (ISOViewMode) { case IsoViewMode.UserCodeOnly: case IsoViewMode.ISOAndUserCode: break; case IsoViewMode.ChannelNameOnly: ISOViewMode = IsoViewMode.UserCodeOnly; break; case IsoViewMode.ISOOnly: ISOViewMode = IsoViewMode.ISOAndUserCode; break; } } else { switch (ISOViewMode) { case IsoViewMode.ISOOnly: case IsoViewMode.UserCodeOnly: break; case IsoViewMode.ISOAndUserCode: ISOViewMode = IsoViewMode.ISOOnly; break; case IsoViewMode.ChannelNameOnly: ISOViewMode = IsoViewMode.ChannelNameOnly; break; } } } } private bool _showISOStringBuilder; public bool ShowISOStringBuilder { get => _showISOStringBuilder; set => SetProperty(ref _showISOStringBuilder, value, "ShowISOStringBuilder"); } private bool _showChannelCodeLookupHelper; public bool ShowChannelCodeLookupHelper { get => _showChannelCodeLookupHelper; set => SetProperty(ref _showChannelCodeLookupHelper, value, "ShowChannelCodeLookupHelper"); } private bool _useISOCodeFilterMapping; public bool UseISOCodeFilterMapping { get => _useISOCodeFilterMapping; set => SetProperty(ref _useISOCodeFilterMapping, value, "UseISOCodeFilterMapping"); } public bool ChannelNamesOnly { get => ISOViewMode == IsoViewMode.ChannelNameOnly; set { if (value) { ISOViewMode = IsoViewMode.ChannelNameOnly; } //there is no else, the only way to turn it false is by clicking on iso or user, which turns this false implicitly } } private IsoViewMode _viewMode; public IsoViewMode ISOViewMode { get => _viewMode; set { SetProperty(ref _viewMode, value, "ISOViewMode"); OnPropertyChanged("ShowISOCodes"); OnPropertyChanged("ShowUserCodes"); OnPropertyChanged("ChannelNamesOnly"); } } } }