Ejemplo n.º 1
0
        public void Deserialize_V1(Stream stream, DataVersion version)
        {
            // Call base deserialization
            Deserialize(typeof(BasePowerTarget.IConcretePowerTarget), stream, version);

            IZoneCategory zones = Options.Instance.PowerZoneCategory;

            // RefId
            GarminFitnessString categoryRefID = new GarminFitnessString();
            categoryRefID.Deserialize(stream, version);

            // Zone index
            GarminFitnessInt32Range zoneIndex = new GarminFitnessInt32Range(0);
            zoneIndex.Deserialize(stream, version);

            if (categoryRefID == zones.ReferenceId && zoneIndex < zones.Zones.Count)
            {
                Zone = zones.Zones[zoneIndex];
            }
            else
            {
                Debug.Assert(zones.Zones.Count > 0);
                Zone = zones.Zones[0];

                // We can't find saved zone, force dirty
                IsDirty = true;
            }
        }
Ejemplo n.º 2
0
        public override void Serialize(Stream stream)
        {
            base.Serialize(stream);

            IZoneCategory zones = Options.Instance.PowerZoneCategory;
            String zoneRefID = zones.ReferenceId;

            GarminFitnessString categoryRefID = new GarminFitnessString(zoneRefID);
            categoryRefID.Serialize(stream);

            GarminFitnessInt32Range zoneIndex = new GarminFitnessInt32Range(zones.Zones.IndexOf(Zone));
            zoneIndex.Serialize(stream);

            GarminFitnessBool dirty = new GarminFitnessBool(IsDirty);
            dirty.Serialize(stream);
        }
        public override void Serialize(Stream stream)
        {
            base.Serialize(stream);

            IZoneCategory zones = BaseTarget.ParentStep.ParentConcreteWorkout.Category.HeartRateZone;
            String zoneRefID = zones.ReferenceId;

            GarminFitnessString categoryRefID = new GarminFitnessString(zoneRefID);
            categoryRefID.Serialize(stream);

            GarminFitnessInt32Range zoneIndex = new GarminFitnessInt32Range(zones.Zones.IndexOf(Zone));
            zoneIndex.Serialize(stream);

            GarminFitnessBool dirty = new GarminFitnessBool(IsDirty);
            dirty.Serialize(stream);
        }
        public void Deserialize_V3(Stream stream, DataVersion version)
        {
            // Call base deserialization
            Deserialize(typeof(BaseHeartRateTarget.IConcreteHeartRateTarget), stream, version);

            IZoneCategory zones = BaseTarget.ParentStep.ParentConcreteWorkout.Category.HeartRateZone;

            GarminFitnessString categoryRefID = new GarminFitnessString();
            categoryRefID.Deserialize(stream, version);

            GarminFitnessInt32Range zoneIndex = new GarminFitnessInt32Range(0);
            zoneIndex.Deserialize(stream, version);

            GarminFitnessBool dirty = new GarminFitnessBool(IsDirty);
            dirty.Deserialize(stream, version);

            if (categoryRefID == zones.ReferenceId && zoneIndex < zones.Zones.Count)
            {
                Zone = zones.Zones[zoneIndex];

                // Was the step dirty on last save?
                IsDirty = dirty;
            }
            else
            {
                Debug.Assert(zones.Zones.Count > 0);
                Zone = zones.Zones[0];

                // We can't find saved zone, force dirty
                IsDirty = true;
            }
        }
Ejemplo n.º 5
0
        public static void SerializeSTZoneInfoXML(IStep step, IZoneCategory categoryZones, INamedLowHighZone zone, XmlDocument document)
        {
            int index = categoryZones.Zones.IndexOf(zone);

            if (index != -1)
            {
                XmlNode extensionNode;
                XmlNode categoryNode;
                XmlNode valueNode;

                extensionNode = document.CreateElement("TargetOverride");

                // Step Id node
                valueNode = document.CreateElement("StepId");
                extensionNode.AppendChild(valueNode);
                valueNode.AppendChild(document.CreateTextNode(step.ParentWorkout.GetStepExportId(step).ToString()));

                // Category node
                categoryNode = document.CreateElement("Category");
                extensionNode.AppendChild(categoryNode);

                // RefId
                GarminFitnessString categoryRefID = new GarminFitnessString(categoryZones.ReferenceId);
                categoryRefID.Serialize(categoryNode, "Id", document);

                // Zone index
                GarminFitnessInt32Range zoneIndex = new GarminFitnessInt32Range(index);
                zoneIndex.Serialize(categoryNode, "Index", document);

                step.ParentWorkout.AddSportTracksExtension(extensionNode);
            }
        }
        public override void Serialize(XmlNode parentNode, String nodeName, XmlDocument document)
        {
            base.Serialize(parentNode, nodeName, document);

            // Get the right parent, which was created in the base class
            parentNode = parentNode.LastChild;

            // Change the xsi:type to "BikeProfileActivity_t"
            if (parentNode.Attributes.GetNamedItem(Constants.XsiTypeTCXString) != null)
            {
                parentNode.Attributes.GetNamedItem(Constants.XsiTypeTCXString).Value = "BikeProfileActivity_t";
            }

            XmlAttribute attributeNode;
            XmlNode currentChild;

            currentChild = document.CreateElement(Constants.ExtensionsTCXString);

            // Power zones
            XmlNode powerZonesChild = document.CreateElement(Constants.PowerZonesTCXString);
            attributeNode = document.CreateAttribute("xmlns");
            attributeNode.Value = "http://www.garmin.com/xmlschemas/ProfileExtension/v1";
            powerZonesChild.Attributes.Append(attributeNode);

            m_FTP.Serialize(powerZonesChild, Constants.FTPTCXString, document);

            for (int i = 0; i < Constants.GarminPowerZoneCount; ++i)
            {
                XmlNode currentZoneNode = document.CreateElement(Constants.PowerZoneTCXString);

                // Number
                XmlNode numberNode = document.CreateElement("Number");
                numberNode.AppendChild(document.CreateTextNode((i + 1).ToString()));
                currentZoneNode.AppendChild(numberNode);

                // Low
                XmlNode low = document.CreateElement(Constants.LowTCXString);
                low.AppendChild(document.CreateTextNode((m_PowerZones[i].Lower * FTP).ToString("0")));
                currentZoneNode.AppendChild(low);

                // High
                XmlNode high = document.CreateElement(Constants.HighTCXString);
                high.AppendChild(document.CreateTextNode((m_PowerZones[i].Upper * FTP).ToString("0")));
                currentZoneNode.AppendChild(high);

                powerZonesChild.AppendChild(currentZoneNode);
            }

            // Power extension
            XmlNode powerExtensionChild = document.CreateElement(Constants.PowerExtensionTCXString);
            attributeNode = document.CreateAttribute("xmlns");
            attributeNode.Value = "http://www.garmin.com/xmlschemas/ProfileExtension/v2";
            powerExtensionChild.Attributes.Append(attributeNode);

            GarminFitnessString wattsType = new GarminFitnessString("Watts");
            wattsType.Serialize(powerExtensionChild, "Type", document);

            currentChild.AppendChild(powerZonesChild);
            currentChild.AppendChild(powerExtensionChild);
            parentNode.AppendChild(currentChild);

            // Bike profiles
            for (int i = 0; i < Constants.GarminBikeProfileCount; ++i)
            {
                m_Bikes[i].Serialize(parentNode, Constants.BikeTCXString, document);
            }
        }