Пример #1
0
        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;
        }
Пример #2
0
        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);
            }
        }
Пример #3
0
 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;
        }
Пример #5
0
        protected void TriggerTargetChangedEvent(ITarget target, PropertyChangedEventArgs args)
        {
            Debug.Assert(Type == StepType.Regular);

            if (TargetChanged != null)
            {
                TargetChanged((RegularStep)this, target, args);
            }
        }
Пример #6
0
 private void OnTargetChanged(ITarget modifiedTarget, PropertyChangedEventArgs changedProperty)
 {
     TriggerTargetChangedEvent(modifiedTarget, changedProperty);
 }
Пример #7
0
 public RegularStep(string name, IDuration duration, ITarget target, Workout parent)
     : this(duration, target, parent)
 {
     Name = name;
 }
Пример #8
0
 public RegularStep(IDuration duration, ITarget target, Workout parent)
     : base(StepType.Regular, parent)
 {
     Duration = duration;
     Target = target;
 }
Пример #9
0
        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);
            }
        }
Пример #10
0
        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();
                    }
                }
            }
        }