public static ITarget Create(ITarget.TargetType type, Stream stream, DataVersion version, RegularStep parent) { ITarget newTarget; switch (type) { case ITarget.TargetType.Null: { newTarget = new NullTarget(stream, version, parent); break; } case ITarget.TargetType.Speed: { newTarget = new BaseSpeedTarget(stream, version, parent); break; } case ITarget.TargetType.HeartRate: { newTarget = new BaseHeartRateTarget(stream, version, parent); break; } case ITarget.TargetType.Cadence: { newTarget = new BaseCadenceTarget(stream, version, parent); break; } case ITarget.TargetType.Power: { newTarget = new BasePowerTarget(stream, version, parent); break; } default: { Debug.Assert(false); newTarget = null; break; } } parent.Target = newTarget; return newTarget; }
void OnTargetChanged(IStep modifiedStep, ITarget targetChanged, PropertyChangedEventArgs changedProperty) { Debug.Assert(modifiedStep.Type == IStep.StepType.Regular); if (ConcreteWorkout.StepTargetChanged != null) { ConcreteWorkout.StepTargetChanged(this, (RegularStep)modifiedStep, targetChanged, changedProperty); } }
void OnWorkoutStepTargetChanged(IWorkout modifiedWorkout, RegularStep modifiedStep, ITarget modifiedTarget, PropertyChangedEventArgs changedProperty) { UpdateWorkoutStepsCopy(); }
public static string FormatTargetDescription(ITarget target) { string result; string baseString = string.Empty; ITarget.TargetType type = target.Type; FieldInfo fieldInfo = type.GetType().GetField(Enum.GetName(type.GetType(), type)); StepDescriptionStringProviderAttribute providerAttribute = (StepDescriptionStringProviderAttribute)Attribute.GetCustomAttribute(fieldInfo, typeof(StepDescriptionStringProviderAttribute)); if (providerAttribute != null) { baseString = GarminFitnessView.GetLocalizedString(providerAttribute.StringName); } switch(type) { case ITarget.TargetType.Null: { result = ""; break; } case ITarget.TargetType.Speed: { BaseSpeedTarget baseTarget = (BaseSpeedTarget)target; result = FormatSpeedTarget(baseTarget.ConcreteTarget); break; } case ITarget.TargetType.Cadence: { BaseCadenceTarget baseTarget = (BaseCadenceTarget)target; result = FormatCadenceTarget(baseTarget.ConcreteTarget); break; } case ITarget.TargetType.HeartRate: { BaseHeartRateTarget baseTarget = (BaseHeartRateTarget)target; result = FormatHeartRateTarget(baseTarget.ConcreteTarget); break; } case ITarget.TargetType.Power: { BasePowerTarget baseTarget = (BasePowerTarget)target; result = FormatPowerTarget(baseTarget.ConcreteTarget); break; } default: { Debug.Assert(false); result = String.Empty; break; } } return result; }
protected void TriggerTargetChangedEvent(ITarget target, PropertyChangedEventArgs args) { Debug.Assert(Type == StepType.Regular); if (TargetChanged != null) { TargetChanged((RegularStep)this, target, args); } }
private void OnTargetChanged(ITarget modifiedTarget, PropertyChangedEventArgs changedProperty) { TriggerTargetChangedEvent(modifiedTarget, changedProperty); }
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; }
public override void Serialize(XmlNode parentNode, String nodeName, XmlDocument document) { bool addNodeToExtensions = false; if (Target.Type == ITarget.TargetType.Power) { // Power was added to the format as an extension which gives me a headache // So we need to serialize this target as having a NullTarget and then // add a step extension that uses the real target with power info ITarget realTarget = Target; // Create the fake target TargetFactory.Create(ITarget.TargetType.Null, this); Serialize(parentNode, nodeName, document); // Remove the step extension that was added so there's no duplicate ParentWorkout.STExtensions.RemoveAt(ParentWorkout.STExtensions.Count - 1); // Restore old target Target = realTarget; // Create new parent node and add it to the extensions nodeName = "Step"; addNodeToExtensions = true; } // Ok now this the real stuff but the target can either be the fake one or the real one base.Serialize(parentNode, nodeName, document); if (Name != String.Empty && Name != null) { m_Name.Serialize(parentNode.LastChild, "Name", document); } // Duration Duration.Serialize(parentNode.LastChild, "Duration", document); // Intensity GarminFitnessBool isRestingStep = new GarminFitnessBool(Intensity == StepIntensity.Active || (Intensity == StepIntensity.Warmup && Options.Instance.TCXExportWarmupAs == StepIntensity.Active) || (Intensity == StepIntensity.Cooldown && Options.Instance.TCXExportCooldownAs == StepIntensity.Active), Constants.StepIntensityZoneTCXString[0], Constants.StepIntensityZoneTCXString[1]); isRestingStep.Serialize(parentNode.LastChild, "Intensity", document); // Target Target.Serialize(parentNode.LastChild, "Target", document); if (addNodeToExtensions) { XmlNode extensionNode = parentNode.LastChild; parentNode.RemoveChild(extensionNode); ParentWorkout.AddStepExtension(extensionNode); } }
public override void DeserializeFromFIT(FITMessage stepMessage) { FITMessageField nameField = stepMessage.GetField((Byte)FITWorkoutStepFieldIds.StepName); FITMessageField intensityField = stepMessage.GetField((Byte)FITWorkoutStepFieldIds.Intensity); if (nameField != null) { Name = nameField.GetString(); } if (intensityField != null) { Intensity = (StepIntensity)intensityField.GetEnum(); } Duration = DurationFactory.Create(stepMessage, this); Target = TargetFactory.Create(stepMessage, this); }
void OnWorkoutStepTargetChanged(IWorkout modifiedWorkout, RegularStep modifiedStep, ITarget modifiedTarget, PropertyChangedEventArgs changedProperty) { if (InvokeRequired) { Invoke(new WorkoutStepTargetChangedDelegate(OnWorkoutStepTargetChanged), new object[] {modifiedWorkout, modifiedStep, modifiedTarget, changedProperty}); } else { if (SelectedWorkout == modifiedWorkout) { // Refresh the steps list so it updates the name/description StepsList.Invalidate(); if (changedProperty.PropertyName == "ConcreteTarget") { UpdateTargetPanelVisibility(); } if (modifiedStep == SelectedStep) { UpdateUIFromTarget(); } } } }