58 lines
2.8 KiB
C#
58 lines
2.8 KiB
C#
using DTS.Common.Classes.DSP;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System;
|
|
using System.ComponentModel;
|
|
|
|
namespace DTS.Common.Classes.ClockSync
|
|
{
|
|
public class ClockSyncProfile : IClockSyncProfile
|
|
{
|
|
public int ProfileId { get; set; }
|
|
public string ProfileName { get; set; }
|
|
public string ProfileDesc { get; set; }
|
|
public int DisplayOrder { get; set; }
|
|
public bool Visible { get; set; }
|
|
public DASRestriction[] FilterRestrictions { get; set; }
|
|
public ClockSyncProfile() { }
|
|
public ClockSyncProfile(int profileId, string profileName, string profileDesc, int displayOrder, bool visible, DASRestriction[] filterRestrictions)
|
|
{
|
|
Initialize(profileId, profileName, profileDesc, displayOrder, visible, filterRestrictions);
|
|
}
|
|
public ClockSyncProfile(ClockSyncProfileCollection.ClockSyncProfileDefaults defaults, DASRestriction[] restrictions)
|
|
{
|
|
GetProfileInfo(defaults, out var displayName, out var description, out var profileId, out var displayOrder, out var visible);
|
|
Initialize(profileId, displayName, description, displayOrder, visible, restrictions);
|
|
}
|
|
private void Initialize(int profileId, string profileName, string profileDesc, int displayOrder, bool visible, DASRestriction[] filterRestrictions)
|
|
{
|
|
ProfileId = profileId;
|
|
ProfileName = profileName;
|
|
ProfileDesc = profileDesc;
|
|
DisplayOrder = displayOrder;
|
|
Visible = visible;
|
|
FilterRestrictions = filterRestrictions;
|
|
}
|
|
private static void GetProfileInfo(ClockSyncProfileCollection.ClockSyncProfileDefaults profile, out string displayName, out string description, out int profileId,
|
|
out int displayOrder, out bool visible)
|
|
{
|
|
profileId = (int)profile;
|
|
|
|
var enumType = typeof(ClockSyncProfileCollection.ClockSyncProfileDefaults);
|
|
var memberInfos = enumType.GetMember(profile.ToString());
|
|
var enumValueMemberInfo = Array.Find(memberInfos, m => m.DeclaringType == enumType);
|
|
var valueAttributes = enumValueMemberInfo.GetCustomAttributes(typeof(DisplayAttribute), false);
|
|
|
|
description = ((DisplayAttribute)valueAttributes[0]).GetDescription();
|
|
displayName = ((DisplayAttribute)valueAttributes[0]).GetName();
|
|
displayOrder = ((DisplayAttribute)valueAttributes[0]).GetOrder() ?? int.MaxValue;
|
|
|
|
valueAttributes = enumValueMemberInfo.GetCustomAttributes(typeof(BrowsableAttribute), false);
|
|
visible = ((BrowsableAttribute)valueAttributes[0]).Browsable;
|
|
}
|
|
public override string ToString()
|
|
{
|
|
return ProfileName;
|
|
}
|
|
}
|
|
}
|