mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-10-07 07:13:21 +02:00
63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
|
#include <QFile>
|
|||
|
#include <QLineF>
|
|||
|
#include "ll.h"
|
|||
|
#include "gpxparser.h"
|
|||
|
#include "tcxparser.h"
|
|||
|
#include "csvparser.h"
|
|||
|
#include "data.h"
|
|||
|
|
|||
|
|
|||
|
Data::Data() : _errorLine(0)
|
|||
|
{
|
|||
|
_parsers << new GPXParser(_track_data, _route_data, _waypoint_data);
|
|||
|
_parsers << new TCXParser(_track_data, _route_data, _waypoint_data);
|
|||
|
_parsers << new CSVParser(_track_data, _route_data, _waypoint_data);
|
|||
|
}
|
|||
|
|
|||
|
Data::~Data()
|
|||
|
{
|
|||
|
for(int i = 0; i < _parsers.count(); i++)
|
|||
|
delete _parsers.at(i);
|
|||
|
|
|||
|
for (int i = 0; i < _tracks.count(); i++)
|
|||
|
delete _tracks.at(i);
|
|||
|
for (int i = 0; i < _routes.count(); i++)
|
|||
|
delete _routes.at(i);
|
|||
|
}
|
|||
|
|
|||
|
bool Data::loadFile(const QString &fileName)
|
|||
|
{
|
|||
|
QFile file(fileName);
|
|||
|
|
|||
|
_errorString.clear();
|
|||
|
_errorLine = 0;
|
|||
|
|
|||
|
if (!file.open(QFile::ReadOnly | QFile::Text)) {
|
|||
|
_errorString = qPrintable(file.errorString());
|
|||
|
return false;
|
|||
|
}
|
|||
|
|
|||
|
for (int i = 0; i < _parsers.size(); i++) {
|
|||
|
if (_parsers.at(i)->loadFile(&file)) {
|
|||
|
for (int i = 0; i < _track_data.count(); i++)
|
|||
|
_tracks.append(new Track(_track_data.at(i)));
|
|||
|
for (int i = 0; i < _route_data.count(); i++)
|
|||
|
_routes.append(new Route(_route_data.at(i)));
|
|||
|
return true;
|
|||
|
}
|
|||
|
file.reset();
|
|||
|
}
|
|||
|
|
|||
|
fprintf(stderr, "Error loading data file: %s:\n", qPrintable(fileName));
|
|||
|
for (int i = 0; i < _parsers.size(); i++) {
|
|||
|
fprintf(stderr, "%s: line %d: %s\n", _parsers.at(i)->name(),
|
|||
|
_parsers.at(i)->errorLine(), qPrintable(_parsers.at(i)->errorString()));
|
|||
|
if (_parsers.at(i)->errorLine() > _errorLine) {
|
|||
|
_errorLine = _parsers.at(i)->errorLine();
|
|||
|
_errorString = _parsers.at(i)->errorString();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
return false;
|
|||
|
}
|