TiXmlElement * TcxActivity::getTiXml(bool readTrackData) { TiXmlElement * xmlActivity = new TiXmlElement("Activity"); switch (this->sportType) { case TrainingCenterDatabase::Running: xmlActivity->SetAttribute("Sport","Running"); break; case TrainingCenterDatabase::Biking: xmlActivity->SetAttribute("Sport","Biking"); break; default: xmlActivity->SetAttribute("Sport","Other"); break; } TiXmlElement * xmlId = new TiXmlElement("Id"); xmlActivity->LinkEndChild(xmlId); xmlId->LinkEndChild(new TiXmlText(this->id)); vector<TcxLap*>::iterator it; TcxLap* previousLap=NULL; for ( it=lapList.begin() ; it < lapList.end(); ++it ) { TcxLap* lap = *it; lap->correctMissingStartTime(previousLap); xmlActivity->LinkEndChild( lap->getTiXml(readTrackData) ); previousLap = lap; } if (this->creator != NULL) { xmlActivity->LinkEndChild(this->creator->getTiXml()); } return xmlActivity; }
bool TcxActivity::isEmpty() { vector<TcxLap*>::iterator it; for ( it=lapList.begin() ; it < lapList.end(); ++it ) { TcxLap* lap = *it; if (!lap->isEmpty()) { return false; } } return true; }
TiXmlElement * TcxActivity::getGpxTiXml() { TiXmlElement* trk = new TiXmlElement("trk"); TiXmlElement * gpxname = new TiXmlElement("name"); trk->LinkEndChild(gpxname); gpxname->LinkEndChild(new TiXmlText(this->id)); vector<TcxLap*>::iterator it; for ( it=lapList.begin() ; it < lapList.end(); it++ ) { TcxLap* lap = *it; trk->LinkEndChild( lap->getGpxTiXml() ); } return trk; }
TiXmlElement * TcxActivity::getGpxTiXml() { TiXmlElement* trk = new TiXmlElement("trk"); TiXmlElement * gpxname = new TiXmlElement("name"); trk->LinkEndChild(gpxname); gpxname->LinkEndChild(new TiXmlText(this->id)); vector<TcxLap*>::iterator it; TcxLap* previousLap=NULL; for ( it=lapList.begin() ; it < lapList.end(); ++it ) { TcxLap* lap = *it; lap->correctMissingStartTime(previousLap); trk->LinkEndChild( lap->getGpxTiXml() ); previousLap=lap; } return trk; }
string TcxActivity::getOverview() { stringstream ss; ss << this->id; ss << " Laps: " << lapList.size() << "("; vector<TcxLap*>::iterator it; for ( it=lapList.begin() ; it < lapList.end(); ++it ) { TcxLap* lap = *it; ss << lap->getDistance(); if ((it+1) < lapList.end()) { ss << ","; } } ss << ")"; return ss.str(); }
TcxLap * Edge305Device::getLapHeader(D1001 * lapData) { TcxLap * singleLap = new TcxLap(); //TODO: Think about letting TcxLap calculate that itself uint32 dur = lapData->total_time; stringstream ss; int hun = dur % 100; dur -= hun; dur /= 100; ss << dur << "." << hun ; singleLap->setTotalTimeSeconds(ss.str()); ss.str(""); ss << lapData->total_dist; singleLap->setDistanceMeters(ss.str()); ss.str(""); ss << lapData->max_speed; singleLap->setMaximumSpeed(ss.str()); ss.str(""); ss << lapData->calories; singleLap->setCalories(ss.str()); if ( lapData->avg_heart_rate != 0 ) { ss.str(""); ss << (unsigned int)(lapData->avg_heart_rate); singleLap->setAverageHeartRateBpm(ss.str()); } if ( lapData->max_heart_rate != 0 ) { ss.str(""); ss << (unsigned int)(lapData->max_heart_rate); singleLap->setMaximumHeartRateBpm(ss.str()); } if (lapData->intensity == D1001_active) { singleLap->setIntensity(TrainingCenterDatabase::Active); } else { singleLap->setIntensity(TrainingCenterDatabase::Resting); } if (this->runType == 1) { singleLap->setCadenceSensorType(TrainingCenterDatabase::Footpod); } else { singleLap->setCadenceSensorType(TrainingCenterDatabase::Bike); } return singleLap; }