public static IDuration Create(IDuration.DurationType type, RegularStep parent) { IDuration newDuration; switch (type) { case IDuration.DurationType.LapButton: { newDuration = new LapButtonDuration(parent); break; } case IDuration.DurationType.Time: { newDuration = new TimeDuration(parent); break; } case IDuration.DurationType.Distance: { newDuration = new DistanceDuration(parent); break; } case IDuration.DurationType.HeartRateAbove: { newDuration = new HeartRateAboveDuration(parent); break; } case IDuration.DurationType.HeartRateBelow: { newDuration = new HeartRateBelowDuration(parent); break; } case IDuration.DurationType.Calories: { newDuration = new CaloriesDuration(parent); break; } case IDuration.DurationType.PowerAbove: { newDuration = new PowerAboveDuration(parent); break; } case IDuration.DurationType.PowerBelow: { newDuration = new PowerBelowDuration(parent); break; } default: { Debug.Assert(false); newDuration = null; break; } } parent.Duration = newDuration; return newDuration; }
void OnDurationChanged(RegularStep modifiedStep, IDuration durationChanged, PropertyChangedEventArgs changedProperty) { if (ConcreteWorkout.StepDurationChanged != null) { ConcreteWorkout.StepDurationChanged(this, modifiedStep, durationChanged, changedProperty); } }
void OnWorkoutStepDurationChanged(IWorkout modifiedWorkout, RegularStep modifiedStep, IDuration modifiedDuration, PropertyChangedEventArgs changedProperty) { UpdateWorkoutStepsCopy(); }
public static string FormatDurationDescription(IDuration duration) { string result; string baseString; IDuration.DurationType type = duration.Type; FieldInfo fieldInfo = type.GetType().GetField(Enum.GetName(type.GetType(), type)); StepDescriptionStringProviderAttribute providerAttribute = (StepDescriptionStringProviderAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(StepDescriptionStringProviderAttribute)); baseString = GarminFitnessView.GetLocalizedString(providerAttribute.StringName); switch(type) { case IDuration.DurationType.LapButton: { result = baseString; break; } case IDuration.DurationType.Distance: { DistanceDuration concreteDuration = duration as DistanceDuration; result = String.Format(baseString, concreteDuration.GetDistanceInBaseUnit(), Length.LabelAbbr(concreteDuration.BaseUnit)); break; } case IDuration.DurationType.Time: { TimeDuration concreteDuration = duration as TimeDuration; result = String.Format(baseString, concreteDuration.Hours, concreteDuration.Minutes, concreteDuration.Seconds); break; } case IDuration.DurationType.HeartRateAbove: { HeartRateAboveDuration concreteDuration = duration as HeartRateAboveDuration; string unitsString; if(concreteDuration.IsPercentageMaxHeartRate) { unitsString = CommonResources.Text.LabelPercentOfMax; } else { unitsString = CommonResources.Text.LabelBPM; } result = String.Format(baseString, concreteDuration.MaxHeartRate, unitsString); break; } case IDuration.DurationType.HeartRateBelow: { HeartRateBelowDuration concreteDuration = duration as HeartRateBelowDuration; string unitsString; if(concreteDuration.IsPercentageMaxHeartRate) { unitsString = CommonResources.Text.LabelPercentOfMax; } else { unitsString = CommonResources.Text.LabelBPM; } result = String.Format(baseString, concreteDuration.MinHeartRate, unitsString); break; } case IDuration.DurationType.Calories: { CaloriesDuration concreteDuration = duration as CaloriesDuration; result = String.Format(baseString, concreteDuration.CaloriesToSpend); break; } case IDuration.DurationType.PowerAbove: { PowerAboveDuration concreteDuration = duration as PowerAboveDuration; string unitsString; if (concreteDuration.IsPercentFTP) { unitsString = GarminFitnessView.GetLocalizedString("PercentFTPText"); } else { unitsString = CommonResources.Text.LabelWatts; } result = String.Format(baseString, concreteDuration.MaxPower, unitsString); break; } case IDuration.DurationType.PowerBelow: { PowerBelowDuration concreteDuration = duration as PowerBelowDuration; string unitsString; if (concreteDuration.IsPercentFTP) { unitsString = GarminFitnessView.GetLocalizedString("PercentFTPText"); } else { unitsString = CommonResources.Text.LabelWatts; } result = String.Format(baseString, concreteDuration.MinPower, unitsString); break; } default: { Debug.Assert(false); result = String.Empty; break; } } return result; }
private void OnDurationChanged(IDuration modifiedDuration, PropertyChangedEventArgs changedProperty) { TriggerDurationChangedEvent(modifiedDuration, changedProperty); }
protected void TriggerDurationChangedEvent(IDuration duration, PropertyChangedEventArgs args) { Debug.Assert(Type == StepType.Regular); if (DurationChanged != null) { DurationChanged((RegularStep)this, duration, args); } }
public RegularStep(string name, IDuration duration, ITarget target, Workout parent) : this(duration, target, parent) { Name = name; }
public RegularStep(IDuration duration, ITarget target, Workout parent) : base(StepType.Regular, parent) { Duration = duration; Target = target; }
void OnWorkoutStepDurationChanged(IWorkout modifiedWorkout, RegularStep modifiedStep, IDuration modifiedDuration, PropertyChangedEventArgs changedProperty) { if (InvokeRequired) { Invoke(new WorkoutStepDurationChangedDelegate(OnWorkoutStepDurationChanged), new object[] { modifiedWorkout, modifiedStep, modifiedDuration, changedProperty }); } else { if (SelectedWorkout == modifiedWorkout) { // Refresh the steps list so it updates the name/description StepsList.Invalidate(); if (modifiedStep == SelectedStep) { UpdateUIFromDuration(); } } } }