Files
DP44/Common/DTS.CommonCore/.svn/pristine/79/79be618b6c09d4e3a116a94987df34566146c8a6.svn-base

166 lines
5.9 KiB
Plaintext
Raw Normal View History

2026-04-17 14:55:32 -04:00
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<CFCFilter>();
}
}
/// <summary>
/// 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.
/// </summary>
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);
}
/// <summary>
/// converts from a string (like in ITestChannel) to the CFC enum
/// </summary>
/// <param name="s"></param>
/// <returns></returns>
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
/// <summary>
/// converts back to a string from IFilterClass [so that the ITestChannel can be updated]
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
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
/// <summary>
/// converts back to a string from IFilterClass [so that the ITestChannel can be updated]
/// </summary>
/// <param name="filter"></param>
/// <returns></returns>
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";
}
}
}