using System.ComponentModel; using System.Windows.Data; using DTS.Common.Base.Classes; using DTS.Common.Converters; using DTS.Common.Enums.Sensors; using DTS.Common.Interface.Sensors.SoftwareFilters; using DTS.Common.Utils; using Xceed.Wpf.Toolkit.PropertyGrid.Attributes; // ReSharper disable InconsistentNaming // ReSharper disable CheckNamespace namespace DTS.Common { [TypeConverter(typeof(EnumDescriptionTypeConverter))] public enum CFCFilter { [Description("None")] None = 0, [Description("Unfiltered")] Unfiltered = -2, [Description("CFC 10")] Class10 = 17, [Description("CFC 60")] Class60 = 100, [Description("CFC 180")] Class180 = 300, [Description("CFC 600")] Class600 = 1000, [Description("CFC 1000")] Class1000 = 1650 } public class CFCFilterItemSource : IItemsSource { public ItemCollection GetValues() { return EnumUtil.GetValuesList(); } } /// /// this class could be extended to become an IValueConverter, but for now it just serves as a mechanism for /// going from the serialized in DTS files form of CFC filter to enum and vice versa. /// public class CFCFilterDTSFileStringConverter { //returns a string representing the isocode field for software filter given a software filter //returns ? if filter is not known public static string GetIsoCodeFromString( string s, bool bUseZeroForUnfiltered = false) { var filter = GetFilterFromString(s); return CFCFilterToCFC(filter); } /// /// converts from a string (like in ITestChannel) to the CFC enum /// /// /// public static CFCFilter GetFilterFromString(string s) { if (string.IsNullOrEmpty(s)) return CFCFilter.Unfiltered; switch (s.ToLower()) { case "cfc 10": //added because "CFC " is stripped off in some exports... (FTSS.TSV) case "10": return CFCFilter.Class10; case "cfc 60": case "60": return CFCFilter.Class60; case "cfc 180": case "180": return CFCFilter.Class180; case "cfc 600": case "600": return CFCFilter.Class600; case "cfc 1000": case "1000": return CFCFilter.Class1000; case "unfiltered": return CFCFilter.Unfiltered; case "none": return CFCFilter.None; default: return CFCFilter.Unfiltered; } } //FB 13120 convert filter class to cfc filter string /// /// converts back to a string from IFilterClass [so that the ITestChannel can be updated] /// /// /// public static string FilterClassToString(IFilterClass filter) { if (filter == null) return "Unfiltered"; switch (filter.FClass) { case FilterClassType.CFC10: return "CFC 10"; case FilterClassType.CFC60: return "CFC 60"; case FilterClassType.CFC180: return "CFC 180"; case FilterClassType.CFC600: return "CFC 600"; case FilterClassType.CFC1000: return "CFC 1000"; case FilterClassType.AdHoc: return filter.Frequency.ToString(); case FilterClassType.Unfiltered: return "Unfiltered"; case FilterClassType.None: return "None"; default: return "Unfiltered"; } } //FB 13120 convert filter class to cfc string /// /// converts back to a string from IFilterClass [so that the ITestChannel can be updated] /// /// /// public static string FilterClassToCFC(IFilterClass filter, bool bUseZeroForUnfiltered = false) { switch (filter.FClass) { case FilterClassType.Unfiltered: return bUseZeroForUnfiltered ? "0" : "P"; case FilterClassType.None: return "P"; case FilterClassType.CFC10: return "Q"; case FilterClassType.CFC60: return "D"; case FilterClassType.CFC180: return "C"; case FilterClassType.CFC600: return "B"; case FilterClassType.CFC1000: return "A"; case FilterClassType.AdHoc: return "S"; } return "S"; } public static string CFCFilterToCFC(CFCFilter filter, bool bUseZeroForUnfiltered = false) { switch (filter) { case CFCFilter.Unfiltered: return bUseZeroForUnfiltered ? "0" : "P"; case CFCFilter.None: return "P"; case CFCFilter.Class10: return "Q"; case CFCFilter.Class60: return "D"; case CFCFilter.Class180: return "C"; case CFCFilter.Class600: return "B"; case CFCFilter.Class1000: return "A"; } return "S"; } } }