#ifndef PARSER_H #define PARSER_H #include #include #include #include "trackpoint.h" #include "waypoint.h" class Parser { public: Parser(QList > &tracks, QList &waypoints) : _tracks(tracks), _waypoints(waypoints) {_track = 0;} bool loadFile(QIODevice *device); QString errorString() const {return _reader.errorString();} int errorLine() const {return _reader.lineNumber();} private: enum TrackpointElement { Elevation, Time, Geoidheight, Speed, HeartRate, Temperature }; enum WaypointElement { Name, Description }; bool parse(); void gpx(); void track(); void trackpoints(); void tpExtension(); void extensions(); void trackpointData(); void waypointData(); void handleWaypointAttributes(const QXmlStreamAttributes &attr); void handleWaypointData(WaypointElement element, const QString &value); void handleTrackpointAttributes(const QXmlStreamAttributes &attr); void handleTrackpointData(TrackpointElement element, const QString &value); QXmlStreamReader _reader; QList > &_tracks; QList &_waypoints; QVector *_track; }; #endif // PARSER_H