1 /****************************************************************************
3 ** Copyright (C) 2011 Tito Eritja Real <jtitoo@gmail.com>
5 ** This program is free software: you can redistribute it and/or modify
6 ** it under the terms of the GNU General Public License as published by
7 ** the Free Software Foundation, either version 3 of the License, or
8 ** (at your option) any later version.
10 ** This program is distributed in the hope that it will be useful,
11 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
12 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 ** GNU General Public License for more details.
15 ** You should have received a copy of the GNU General Public License
16 ** along with this program. If not, see <http://www.gnu.org/licenses/>.
18 ****************************************************************************/
26 #include "constants.h"
28 class QXmlStreamWriter;
30 class QXmlStreamReader;
58 explicit Summarized();
59 //virtual ~Summarized();
62 inline double getDuration(){return duration;}
63 inline double getDistance(){return distance;}
64 inline qreal getAvgSpeed(){return avgSpeed;}
65 inline qreal getMaxSpeed(){return maxSpeed;}
66 inline qreal getElevationGain(){return elevationGain;}
67 inline qreal getElevationLoss(){return elevationLoss;}
68 inline qreal getMinElevation(){return minElevation;}
69 inline qreal getMaxElevation(){return maxelevation;}
70 inline qreal getAvgPace(){return avgPace;}
71 inline qreal getBestPace(){return bestPace;}
74 void addSummary(Summarized summary);
75 Summarized& account(GpsPoint point);
76 Summarized& account(GpsPoint first, GpsPoint last);
78 inline int getNumPoints(){return numPoints;}
79 inline void setNumPoints(int p){numPoints=p;}
81 inline double getMinLatitude(){return minLatitude;}
82 inline void setMinLatitude(double latitude){minLatitude=latitude;}
84 inline double getMaxLatitude(){return maxLatitude;}
85 inline void setMaxLatitude(double latitude){maxLatitude=latitude;}
87 inline double getMinLongitude(){return minLongitude;}
88 inline void setMinLongitude(double longitude){minLongitude=longitude;}
90 inline double getMaxLongitude(){return maxLongitude;}
91 inline void setMaxLongitude(double longitude){maxLongitude=longitude;}
93 inline int getGpsInterval(){return gpsInterval;}
94 inline void setGpsInterval(int interval){gpsInterval=interval;}
96 inline QDateTime getStartTime(){return startTime;}
97 inline void setStartTime(QDateTime time){startTime=time;}
99 inline QDateTime getEndTime(){return endTime;}
100 inline void setEndTime(QDateTime time){endTime=time;}
102 inline double getDuration(){return duration;}
103 inline void setDuration(double duration_p){duration=duration_p;}
105 inline double getDistance(){return distance;}
106 inline void setDistance(double distance_p){distance=distance_p;}
108 inline int getAvgSpeed(){return avgSpeed;}
109 inline void setAvgSpeed(int speed){avgSpeed=speed;}
111 inline int getMaxSpeed(){return maxSpeed;}
112 inline void setMaxSpeed(int speed){maxSpeed=speed;}
114 inline int getElevationGain(){return elevationGain;}
115 inline void setElevationGain(int elevation){elevationGain=elevation;}
117 inline int getElevationLoss(){return elevationLoss;}
118 inline void setElevationLoss(int elevation){elevationLoss=elevation;}
120 inline int getMinElevation(){return minElevation;}
121 inline void setMinElevation(int elevation){minElevation=elevation;}
123 inline int getMaxElevation(){return maxElevation;}
124 inline void setMaxElevation(int elevation){maxElevation=elevation;}
126 inline int getAvgPace(){return avgPace;}
127 inline void setAvgPace(int time){avgPace=time;}
129 inline int getBestPace(){return bestPace;}
130 inline void setBestPace(int time){bestPace=time;}
131 QString toSumString();
145 qreal magneticVariation;
146 qreal horizontalAccuracy;
147 qreal verticalAccuracy;
151 explicit GpsPoint(double latitude, double longitude, int elevation);
152 explicit GpsPoint(double latitude, double longitude, int elevation,QDateTime time, qreal speed,
153 qreal direction, qreal magneticVariation,qreal horizontalAccuracy, qreal verticalAccuracy);
154 explicit GpsPoint(double latitude, double longitude, int elevation,QDateTime time, qreal speed,
155 qreal direction, qreal magneticVariation,qreal horizontalAccuracy, qreal verticalAccuracy, qreal distancePrev, QTime timeToPrev);
157 //virtual ~GpsPoint();
159 inline double getLatitude(){return latitude;}
160 inline void setLatitude(double lat){latitude=lat;}
162 inline double getLongitude(){return longitude;}
163 inline void setLongitude(double longitude_p){longitude=longitude_p;}
165 inline double getElevation(){return elevation;}
166 inline void setElevation(double elevation_p){elevation=elevation_p;}
168 inline QDateTime getTime(){return time;}
169 inline void setTime(QDateTime time_p){time=time_p;}
171 inline qreal getSpeed(){return speed;}
172 inline void setSpeed(qreal speed_p){speed=speed_p;}
174 inline qreal getDirection(){return direction;}
175 inline void setDirection(qreal direction_p){direction=direction_p;}
177 inline qreal getMagneticVariation(){return magneticVariation;}
178 inline void setMagneticVariation(qreal magneticVariation_p){magneticVariation=magneticVariation_p;}
180 inline qreal getHorizontalAccuracy(){return horizontalAccuracy;}
181 inline void setHorizontalAccuracy(qreal horizontalAccuracy_p){horizontalAccuracy=horizontalAccuracy_p;}
183 inline qreal getVerticalAccuracy(){return verticalAccuracy;}
184 inline void setVerticalAccuracy(qreal verticalAccuracy_p){verticalAccuracy=verticalAccuracy_p;}
186 inline double getDistancePrev(){return distancePrev;}
187 inline void setDistancePrev(double distance){distancePrev=distance;}
191 GpsPoint& operator= (const GpsPoint&);
193 friend int operator== (const GpsPoint&, const GpsPoint&);
194 friend int operator!= (const GpsPoint&, const GpsPoint&);
195 friend QDataStream& operator<< (QDataStream&, const GpsPoint&);
197 double distance(GpsPoint p);
201 class Lap: public Summarized{
205 QList<GpsPoint*> points;
209 explicit Lap(int number);
212 inline int getNumber(){return number;}
213 inline void setNumber(int number_p){number=number_p;}
215 Summarized* addPoint(GpsPoint* point);
216 inline QList<GpsPoint*> getPoints(){return points;}
221 class Activity: public Summarized{
231 explicit Activity(QString sport);
234 inline QDateTime getId(){return id;}
235 inline void setId(QDateTime time){id=time;}
237 inline QString getSport(){return sport;}
238 inline void setSport(QString sport_p){sport=sport_p;}
240 inline int getNumLaps(){return numLaps;}
241 inline void setNumLaps(int laps){numLaps=laps;}
244 Summarized* addPoint(GpsPoint* point);
246 inline QList<Lap*> getLaps(){return laps;}
251 class Track:public Summarized
259 QList<Activity*> activities;
267 void writeTCXCourses(QXmlStreamWriter* xmlWriter);
268 void writeTCXCourse(QXmlStreamWriter* xmlWriter, Activity* act);
269 void writeTCXLap(QXmlStreamWriter* xmlWriter, Lap* lap);
270 void writeTCXPoint(QXmlStreamWriter* xmlWriter, GpsPoint* point);
271 void writeGPXTracks(QXmlStreamWriter* xmlWriter);
272 void writeGPXTrack(QXmlStreamWriter* xmlWriter, Activity* act);
273 void writeGPXPoint(QXmlStreamWriter* xmlWriter, GpsPoint* point);
274 void writeGPXTrkseg(QXmlStreamWriter* xmlWriter, Lap* lap);
279 explicit Track(QString fileName,QString name);
280 explicit Track(QString fname);
284 bool readFromXML(QString fileName);
285 GpsPoint* parseGpsPoint(QXmlStreamReader& xml);
286 QList<GpsPoint*> getGpsPoints();
287 inline QString getFileName(){return fileName;}
288 inline void setFileName(QString file){fileName=file;}
290 inline QString getName(){return name;}
291 inline void setName(QString n){name=n;}
292 inline void setName(const char* n){name=n;}
293 inline int getNumActivities(){return numActivities;}
294 inline void setNumActivites(int activities){numActivities=activities;}
296 void addActivity(QString sport);
298 Summarized* addPoint(GpsPoint* point);