Files
DP44/Common/DTS.Common/Classes/ClockSync/ClockSyncProfile.cs

58 lines
2.8 KiB
C#
Raw Normal View History

2026-04-17 14:55:32 -04:00
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;
}
}
}