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; } }
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; } }
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); } }