/// <summary> /// Возвращает строковое представления таймера используя переданные атрибуты. /// </summary> /// <param name="attributes">Атрибуты таймера.</param> public string ToString(TimerAttributes attributes) { if (attributes == null) { return(ToString()); } if (attributes.IsSecondaryTimer && Minutes == 0 && Seconds == 0 && Fractions == 0) { return(String.Empty); } if (attributes.IsLongTimeFormat) { if (!IsFinishedOrStarted(attributes) && (attributes.HasFractionAlways || attributes.HasFractionOnLastMinute && IsLastMinute(attributes) || attributes.HasFractionWhenPaused && !IsActive)) { var format = IsTenthOnly ? "{0:D2}:{1:D2}.{2}" : "{0:D2}:{1:D2}.{2:D2}"; return(String.Format(format, Minutes, Seconds, Fractions)); } return(String.Format("{0:D2}:{1:D2}", Minutes, Seconds)); } if (!attributes.Increase && attributes.HasFractionOnLastMinute && IsLastMinute(attributes)) { return(String.Format(IsTenthOnly ? "{0:D2}.{1}" : "{0:D2}.{1:D2}", Seconds, Fractions)); } return(ToString()); }
private bool IsLastMinute(TimerAttributes attributes) { if (attributes.Increase && attributes.Duration == 0) { return(false); } return(attributes.Increase && (attributes.Duration - (Minutes * 60 + Seconds)) < 60 || !attributes.Increase && Minutes == 0 && Seconds < 60); }
private bool IsFinishedOrStarted(TimerAttributes attributes) { if (Minutes == 0 && Seconds == 0 && Fractions == 0) { return(true); } if (attributes.Increase && attributes.Duration == 0) { return(false); } return(attributes.Increase && (attributes.Duration - (Minutes * 60 + Seconds)) == 0 && Fractions == 0 || !attributes.Increase && (Minutes * 60 + Seconds) == attributes.Duration && Fractions == 0); }
internal ProviderInfo(byte[] data) { Contract.Requires(data != null); Contract.Requires(data.Length >= TimersOfs); Id = BitConverter.ToUInt16(data, IdOfs); var timerCount = data[TimerCountOfs]; var timers = new List <TimerAttributes>(timerCount); for (var i = TimersOfs; i < data.Length; i += TimerAttributes.Length) { var timer = new TimerAttributes(data, i); timers.Add(timer); } _timers = timers.ToArray(); }