mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-06-27 03:29:16 +02:00
Show track/route source file info when multiple files are opened
Closes #559
This commit is contained in:
@ -86,7 +86,7 @@ bool CUPParser::waypoint(const QByteArrayList &entry,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CUPParser::task(const QByteArrayList &entry,
|
||||
bool CUPParser::task(const QString &fileName, const QByteArrayList &entry,
|
||||
const QVector<Waypoint> &waypoints, QList<RouteData> &routes)
|
||||
{
|
||||
if (entry.size() < 3) {
|
||||
@ -96,6 +96,7 @@ bool CUPParser::task(const QByteArrayList &entry,
|
||||
|
||||
RouteData r;
|
||||
r.setName(entry.at(0));
|
||||
r.setFile(fileName);
|
||||
for (int i = 1; i < entry.size(); i++) {
|
||||
if (entry.at(i) == "???")
|
||||
continue;
|
||||
@ -155,7 +156,7 @@ bool CUPParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
return false;
|
||||
} else if (segment == Tasks) {
|
||||
if (entry.at(0) != "Options" && !entry.at(0).startsWith("ObsZone=")
|
||||
&& !task(entry, waypoints, routes))
|
||||
&& !task(file->fileName(), entry, waypoints, routes))
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -15,8 +15,8 @@ public:
|
||||
|
||||
private:
|
||||
bool waypoint(const QByteArrayList &entry, QVector<Waypoint> &waypoints);
|
||||
bool task(const QByteArrayList &entry, const QVector<Waypoint> &waypoints,
|
||||
QList<RouteData> &routes);
|
||||
bool task(const QString &fileName, const QByteArrayList &entry,
|
||||
const QVector<Waypoint> &waypoints, QList<RouteData> &routes);
|
||||
|
||||
QString _errorString;
|
||||
int _errorLine;
|
||||
|
@ -481,6 +481,7 @@ bool FITParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
return false;
|
||||
|
||||
tracks.append(ctx.segment);
|
||||
tracks.last().setFile(file->fileName());
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -330,7 +330,7 @@ bool GeoJSONParser::multiPoint(const QJsonObject &object,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GeoJSONParser::lineString(const QJsonObject &object,
|
||||
bool GeoJSONParser::lineString(const QJsonObject &object, const QString &file,
|
||||
const Projection &parent, const QJsonValue &properties,
|
||||
QList<TrackData> &tracks)
|
||||
{
|
||||
@ -367,6 +367,7 @@ bool GeoJSONParser::lineString(const QJsonObject &object,
|
||||
|
||||
setSegmentProperties(segment, -1, properties);
|
||||
TrackData track(segment);
|
||||
track.setFile(file);
|
||||
setTrackProperties(track, properties);
|
||||
tracks.append(track);
|
||||
|
||||
@ -374,7 +375,7 @@ bool GeoJSONParser::lineString(const QJsonObject &object,
|
||||
}
|
||||
|
||||
bool GeoJSONParser::multiLineString(const QJsonObject &object,
|
||||
const Projection &parent, const QJsonValue &properties,
|
||||
const QString &file, const Projection &parent, const QJsonValue &properties,
|
||||
QList<TrackData> &tracks)
|
||||
{
|
||||
if (!object.contains("coordinates")) {
|
||||
@ -421,6 +422,7 @@ bool GeoJSONParser::multiLineString(const QJsonObject &object,
|
||||
}
|
||||
}
|
||||
|
||||
track.setFile(file);
|
||||
setTrackProperties(track, properties);
|
||||
tracks.append(track);
|
||||
|
||||
@ -539,7 +541,7 @@ bool GeoJSONParser::multiPolygon(const QJsonObject &object,
|
||||
}
|
||||
|
||||
bool GeoJSONParser::geometryCollection(const QJsonObject &object,
|
||||
const Projection &parent, const QJsonValue &properties,
|
||||
const QString &file, const Projection &parent, const QJsonValue &properties,
|
||||
QList<TrackData> &tracks, QList<Area> &areas, QVector<Waypoint> &waypoints)
|
||||
{
|
||||
if (!object["geometries"].isArray()) {
|
||||
@ -567,13 +569,13 @@ bool GeoJSONParser::geometryCollection(const QJsonObject &object,
|
||||
return false;
|
||||
break;
|
||||
case LineString:
|
||||
if (!lineString(geometry, PROJ(proj, parent), properties,
|
||||
if (!lineString(geometry, file, PROJ(proj, parent), properties,
|
||||
tracks))
|
||||
return false;
|
||||
break;
|
||||
case MultiLineString:
|
||||
if (!multiLineString(geometry, PROJ(proj, parent), properties,
|
||||
tracks))
|
||||
if (!multiLineString(geometry, file, PROJ(proj, parent),
|
||||
properties, tracks))
|
||||
return false;
|
||||
break;
|
||||
case Polygon:
|
||||
@ -586,7 +588,7 @@ bool GeoJSONParser::geometryCollection(const QJsonObject &object,
|
||||
return false;
|
||||
break;
|
||||
case GeometryCollection:
|
||||
if (!geometryCollection(geometry, PROJ(proj, parent),
|
||||
if (!geometryCollection(geometry, file, PROJ(proj, parent),
|
||||
properties, tracks, areas, waypoints))
|
||||
return false;
|
||||
break;
|
||||
@ -600,8 +602,9 @@ bool GeoJSONParser::geometryCollection(const QJsonObject &object,
|
||||
return true;
|
||||
}
|
||||
|
||||
bool GeoJSONParser::feature(const QJsonObject &object, const Projection &parent,
|
||||
QList<TrackData> &tracks, QList<Area> &areas, QVector<Waypoint> &waypoints)
|
||||
bool GeoJSONParser::feature(const QJsonObject &object, const QString &file,
|
||||
const Projection &parent, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints)
|
||||
{
|
||||
if (object["geometry"].isNull())
|
||||
return true;
|
||||
@ -623,13 +626,14 @@ bool GeoJSONParser::feature(const QJsonObject &object, const Projection &parent,
|
||||
return multiPoint(geometry, PROJ(proj, parent), properties,
|
||||
waypoints);
|
||||
case LineString:
|
||||
return lineString(geometry, PROJ(proj, parent), properties, tracks);
|
||||
case MultiLineString:
|
||||
return multiLineString(geometry, PROJ(proj, parent), properties,
|
||||
return lineString(geometry, file, PROJ(proj, parent), properties,
|
||||
tracks);
|
||||
case MultiLineString:
|
||||
return multiLineString(geometry, file, PROJ(proj, parent),
|
||||
properties, tracks);
|
||||
case GeometryCollection:
|
||||
return geometryCollection(geometry, PROJ(proj, parent), properties,
|
||||
tracks, areas, waypoints);
|
||||
return geometryCollection(geometry, file, PROJ(proj, parent),
|
||||
properties, tracks, areas, waypoints);
|
||||
case Polygon:
|
||||
return polygon(geometry, PROJ(proj, parent), properties, areas);
|
||||
case MultiPolygon:
|
||||
@ -642,8 +646,8 @@ bool GeoJSONParser::feature(const QJsonObject &object, const Projection &parent,
|
||||
}
|
||||
|
||||
bool GeoJSONParser::featureCollection(const QJsonObject &object,
|
||||
const Projection &parent, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints)
|
||||
const QString &file, const Projection &parent, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints)
|
||||
{
|
||||
if (!object["features"].isArray()) {
|
||||
_errorString = "Invalid/missing FeatureCollection features array";
|
||||
@ -656,8 +660,8 @@ bool GeoJSONParser::featureCollection(const QJsonObject &object,
|
||||
return false;
|
||||
|
||||
for (int i = 0; i < features.size(); i++)
|
||||
if (!feature(features.at(i).toObject(), PROJ(proj, parent), tracks,
|
||||
areas, waypoints))
|
||||
if (!feature(features.at(i).toObject(), file, PROJ(proj, parent),
|
||||
tracks, areas, waypoints))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
@ -686,6 +690,7 @@ bool GeoJSONParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
|
||||
QJsonObject object(doc.object());
|
||||
Projection proj(GCS::WGS84());
|
||||
QString fileName(file->fileName());
|
||||
|
||||
switch (type(object)) {
|
||||
case Point:
|
||||
@ -693,16 +698,17 @@ bool GeoJSONParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
case MultiPoint:
|
||||
return multiPoint(object, proj, QJsonValue(), waypoints);
|
||||
case LineString:
|
||||
return lineString(object, proj, QJsonValue(), tracks);
|
||||
return lineString(object, fileName, proj, QJsonValue(), tracks);
|
||||
case MultiLineString:
|
||||
return multiLineString(object, proj, QJsonValue(), tracks);
|
||||
return multiLineString(object, fileName, proj, QJsonValue(), tracks);
|
||||
case GeometryCollection:
|
||||
return geometryCollection(object, proj, QJsonValue(), tracks, areas,
|
||||
waypoints);
|
||||
return geometryCollection(object, fileName, proj, QJsonValue(),
|
||||
tracks, areas, waypoints);
|
||||
case Feature:
|
||||
return feature(object, proj, tracks, areas, waypoints);
|
||||
return feature(object, fileName, proj, tracks, areas, waypoints);
|
||||
case FeatureCollection:
|
||||
return featureCollection(object, proj, tracks, areas, waypoints);
|
||||
return featureCollection(object, fileName, proj, tracks, areas,
|
||||
waypoints);
|
||||
case Polygon:
|
||||
return polygon(object, proj, QJsonValue(), areas);
|
||||
case MultiPolygon:
|
||||
|
@ -37,22 +37,25 @@ private:
|
||||
const QJsonValue &properties, QVector<Waypoint> &waypoints);
|
||||
bool multiPoint(const QJsonObject &object, const Projection &parent,
|
||||
const QJsonValue &properties, QVector<Waypoint> &waypoints);
|
||||
bool lineString(const QJsonObject &coordinates, const Projection &parent,
|
||||
const QJsonValue &properties, QList<TrackData> &tracks);
|
||||
bool multiLineString(const QJsonObject &object, const Projection &proj,
|
||||
const QJsonValue &properties, QList<TrackData> &tracks);
|
||||
bool lineString(const QJsonObject &coordinates, const QString &file,
|
||||
const Projection &parent, const QJsonValue &properties,
|
||||
QList<TrackData> &tracks);
|
||||
bool multiLineString(const QJsonObject &object, const QString &file,
|
||||
const Projection &proj, const QJsonValue &properties,
|
||||
QList<TrackData> &tracks);
|
||||
bool polygon(const QJsonObject &object, const Projection &parent,
|
||||
const QJsonValue &properties, QList<Area> &areas);
|
||||
bool multiPolygon(const QJsonObject &object, const Projection &proj,
|
||||
const QJsonValue &properties, QList<Area> &areas);
|
||||
bool geometryCollection(const QJsonObject &json, const Projection &parent,
|
||||
const QJsonValue &properties, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints);
|
||||
bool feature(const QJsonObject &json, const Projection &parent,
|
||||
QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
bool featureCollection(const QJsonObject &object, const Projection &parent,
|
||||
bool geometryCollection(const QJsonObject &json, const QString &file,
|
||||
const Projection &parent, const QJsonValue &properties,
|
||||
QList<TrackData> &tracks, QList<Area> &areas, QVector<Waypoint> &waypoints);
|
||||
bool feature(const QJsonObject &json, const QString &file,
|
||||
const Projection &parent, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
bool featureCollection(const QJsonObject &object, const QString &file,
|
||||
const Projection &parent, QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
|
||||
QString _errorString;
|
||||
};
|
||||
|
@ -343,6 +343,10 @@ void GPXParser::track(TrackData &track)
|
||||
|
||||
if (!link10.URL().isEmpty())
|
||||
track.addLink(link10);
|
||||
|
||||
QFile *file = qobject_cast<QFile *>(_reader.device());
|
||||
if (file)
|
||||
track.setFile(file->fileName());
|
||||
}
|
||||
|
||||
void GPXParser::area(Area &area)
|
||||
@ -388,6 +392,9 @@ void GPXParser::gpx(QList<TrackData> &tracks, QList<RouteData> &routes,
|
||||
track(tracks.back());
|
||||
} else if (_reader.name() == QLatin1String("rte")) {
|
||||
routes.append(RouteData());
|
||||
QFile *file = qobject_cast<QFile *>(_reader.device());
|
||||
if (file)
|
||||
routes.back().setFile(file->fileName());
|
||||
routepoints(routes.back(), tracks);
|
||||
} else if (_reader.name() == QLatin1String("wpt")) {
|
||||
waypoints.append(Waypoint(coordinates()));
|
||||
|
@ -237,6 +237,7 @@ bool IGCParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
} else {
|
||||
route = true;
|
||||
routes.append(RouteData());
|
||||
routes.last().setFile(file->fileName());
|
||||
}
|
||||
} else if (line[0] == 'B') {
|
||||
if (ctx.date.isNull()) {
|
||||
@ -248,6 +249,7 @@ bool IGCParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
}
|
||||
if (!track) {
|
||||
tracks.append(SegmentData());
|
||||
tracks.last().setFile(file->fileName());
|
||||
ctx.time = QTime(0, 0);
|
||||
track = true;
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ bool ITNParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
_errorLine++;
|
||||
}
|
||||
|
||||
rd.setFile(file->fileName());
|
||||
routes.append(rd);
|
||||
|
||||
return true;
|
||||
|
@ -594,8 +594,8 @@ void KMLParser::photoOverlay(const Ctx &ctx, QVector<Waypoint> &waypoints,
|
||||
}
|
||||
}
|
||||
|
||||
void KMLParser::multiGeometry(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints)
|
||||
void KMLParser::multiGeometry(const Ctx &ctx, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints)
|
||||
{
|
||||
TrackData *tp = 0;
|
||||
Area *ap = 0;
|
||||
@ -608,6 +608,7 @@ void KMLParser::multiGeometry(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
} else if (_reader.name() == QLatin1String("LineString")) {
|
||||
if (!tp) {
|
||||
tracks.append(TrackData());
|
||||
tracks.last().setFile(ctx.path);
|
||||
tp = &tracks.last();
|
||||
}
|
||||
tp->append(SegmentData());
|
||||
@ -651,21 +652,24 @@ void KMLParser::placemark(const Ctx &ctx, QList<TrackData> &tracks,
|
||||
} else if (_reader.name() == QLatin1String("StyleMap"))
|
||||
styleMap(map);
|
||||
else if (_reader.name() == QLatin1String("MultiGeometry"))
|
||||
multiGeometry(tracks, areas, waypoints);
|
||||
multiGeometry(ctx, tracks, areas, waypoints);
|
||||
else if (_reader.name() == QLatin1String("Point")) {
|
||||
waypoints.append(Waypoint());
|
||||
point(waypoints.last());
|
||||
} else if (_reader.name() == QLatin1String("LineString")
|
||||
|| _reader.name() == QLatin1String("LinearRing")) {
|
||||
tracks.append(TrackData());
|
||||
tracks.last().setFile(ctx.path);
|
||||
tracks.last().append(SegmentData());
|
||||
lineString(tracks.last().last());
|
||||
} else if (_reader.name() == QLatin1String("Track")) {
|
||||
tracks.append(TrackData());
|
||||
tracks.last().setFile(ctx.path);
|
||||
tracks.last().append(SegmentData());
|
||||
track(tracks.last().last());
|
||||
} else if (_reader.name() == QLatin1String("MultiTrack")) {
|
||||
tracks.append(TrackData());
|
||||
tracks.last().setFile(ctx.path);
|
||||
multiTrack(tracks.last());
|
||||
} else if (_reader.name() == QLatin1String("Polygon")) {
|
||||
areas.append(Area());
|
||||
|
@ -40,8 +40,8 @@ private:
|
||||
QVector<Waypoint> &waypoints, PointStyleMap &pointStyles,
|
||||
PolygonStyleMap &polyStyles, LineStyleMap &lineStyles,
|
||||
QMap<QString, QString> &map);
|
||||
void multiGeometry(QList<TrackData> &tracks, QList<Area> &areas,
|
||||
QVector<Waypoint> &waypoints);
|
||||
void multiGeometry(const Ctx &ctx, QList<TrackData> &tracks,
|
||||
QList<Area> &areas, QVector<Waypoint> &waypoints);
|
||||
void photoOverlay(const Ctx &ctx, QVector<Waypoint> &waypoints,
|
||||
PointStyleMap &pointStyles, QMap<QString, QString> &map);
|
||||
void track(SegmentData &segment);
|
||||
|
@ -531,6 +531,7 @@ bool NMEAParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
|
||||
if (segment.size()) {
|
||||
tracks.append(TrackData());
|
||||
tracks.last().setFile(file->fileName());
|
||||
tracks.last().append(segment);
|
||||
}
|
||||
|
||||
|
@ -276,6 +276,7 @@ bool GHPParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
}
|
||||
|
||||
tracks.append(TrackData());
|
||||
tracks.last().setFile(file->fileName());
|
||||
tracks.last().append(segment);
|
||||
|
||||
return true;
|
||||
|
@ -41,6 +41,7 @@ bool PLTParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
|
||||
tracks.append(TrackData());
|
||||
TrackData &track = tracks.last();
|
||||
track.setFile(file->fileName());
|
||||
track.append(SegmentData());
|
||||
SegmentData &segment = track.last();
|
||||
|
||||
@ -159,6 +160,7 @@ bool RTEParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
|
||||
if (list.at(0).trimmed() == "R") {
|
||||
routes.append(RouteData());
|
||||
routes.last().setFile(file->fileName());
|
||||
record = true;
|
||||
|
||||
if (list.size() >= 3) {
|
||||
|
@ -23,6 +23,7 @@ public:
|
||||
const QString &comment() const {return _data.comment();}
|
||||
const QVector<Link> &links() const {return _data.links();}
|
||||
const LineStyle &style() const {return _data.style();}
|
||||
const QString &file() const {return _data.file();}
|
||||
|
||||
bool isValid() const {return _data.size() >= 2;}
|
||||
|
||||
|
@ -15,17 +15,20 @@ public:
|
||||
const QString &comment() const {return _comment;}
|
||||
const QVector<Link> &links() const {return _links;}
|
||||
const LineStyle &style() const {return _style;}
|
||||
const QString &file() const {return _file;}
|
||||
|
||||
void setName(const QString &name) {_name = name;}
|
||||
void setDescription(const QString &desc) {_desc = desc;}
|
||||
void setComment(const QString &comment) {_comment = comment;}
|
||||
void addLink(const Link &link) {_links.append(link);}
|
||||
void setStyle(const LineStyle &style) {_style = style;}
|
||||
void setFile(const QString &file) {_file = file;}
|
||||
|
||||
private:
|
||||
QString _name;
|
||||
QString _desc;
|
||||
QString _comment;
|
||||
QString _file;
|
||||
QVector<Link> _links;
|
||||
LineStyle _style;
|
||||
};
|
||||
|
@ -109,6 +109,7 @@ bool SLFParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
if (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Activity")) {
|
||||
tracks.append(TrackData());
|
||||
tracks.last().setFile(file->fileName());
|
||||
activity(tracks.last());
|
||||
} else
|
||||
_reader.raiseError("Not a SLF file");
|
||||
|
@ -136,6 +136,9 @@ void SMLParser::sml(QList<TrackData> &tracks)
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("DeviceLog")) {
|
||||
tracks.append(TrackData());
|
||||
QFile *file = qobject_cast<QFile*>(_reader.device());
|
||||
if (file)
|
||||
tracks.last().setFile(file->fileName());
|
||||
deviceLog(tracks.last());
|
||||
} else
|
||||
_reader.skipCurrentElement();
|
||||
|
@ -196,7 +196,10 @@ void TCXParser::courses(QList<TrackData> &tracks, QVector<Waypoint> &waypoints)
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Course")) {
|
||||
tracks.append(TrackData());
|
||||
course(waypoints, tracks.back());
|
||||
QFile *file = qobject_cast<QFile*>(_reader.device());
|
||||
if (file)
|
||||
tracks.last().setFile(file->fileName());
|
||||
course(waypoints, tracks.last());
|
||||
} else
|
||||
_reader.skipCurrentElement();
|
||||
}
|
||||
@ -207,6 +210,9 @@ void TCXParser::sport(QList<TrackData> &tracks)
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Activity")) {
|
||||
tracks.append(TrackData());
|
||||
QFile *file = qobject_cast<QFile*>(_reader.device());
|
||||
if (file)
|
||||
tracks.last().setFile(file->fileName());
|
||||
activity(tracks.last());
|
||||
} else
|
||||
_reader.skipCurrentElement();
|
||||
@ -229,6 +235,9 @@ void TCXParser::activities(QList<TrackData> &tracks)
|
||||
while (_reader.readNextStartElement()) {
|
||||
if (_reader.name() == QLatin1String("Activity")) {
|
||||
tracks.append(TrackData());
|
||||
QFile *file = qobject_cast<QFile*>(_reader.device());
|
||||
if (file)
|
||||
tracks.last().setFile(file->fileName());
|
||||
activity(tracks.last());
|
||||
} else if (_reader.name() == QLatin1String("MultiSportSession"))
|
||||
multiSportSession(tracks);
|
||||
|
@ -36,6 +36,7 @@ public:
|
||||
const QString &comment() const {return _data.comment();}
|
||||
const QVector<Link> &links() const {return _data.links();}
|
||||
const LineStyle &style() const {return _data.style();}
|
||||
const QString &file() const {return _data.file();}
|
||||
|
||||
bool isValid() const;
|
||||
|
||||
|
@ -25,17 +25,20 @@ public:
|
||||
const QString &comment() const {return _comment;}
|
||||
const QVector<Link> &links() const {return _links;}
|
||||
const LineStyle &style() const {return _style;}
|
||||
const QString &file() const {return _file;}
|
||||
|
||||
void setName(const QString &name) {_name = name;}
|
||||
void setDescription(const QString &desc) {_desc = desc;}
|
||||
void setComment(const QString &comment) {_comment = comment;}
|
||||
void addLink(const Link &link) {_links.append(link);}
|
||||
void setStyle(const LineStyle &style) {_style = style;}
|
||||
void setFile(const QString &path) {_file = path;}
|
||||
|
||||
private:
|
||||
QString _name;
|
||||
QString _desc;
|
||||
QString _comment;
|
||||
QString _file;
|
||||
QVector<Link> _links;
|
||||
LineStyle _style;
|
||||
};
|
||||
|
@ -152,6 +152,7 @@ bool TwoNavParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
|
||||
if (!track) {
|
||||
tracks.append(SegmentData());
|
||||
tracks.last().setFile(file->fileName());
|
||||
track = true;
|
||||
}
|
||||
|
||||
@ -205,6 +206,7 @@ bool TwoNavParser::parse(QFile *file, QList<TrackData> &tracks,
|
||||
case 'R':
|
||||
{QStringList list(codec.toString(line).split(','));
|
||||
routes.append(RouteData());
|
||||
routes.last().setFile(file->fileName());
|
||||
if (list.size() > 1)
|
||||
routes.last().setName(list.at(1));
|
||||
route = true;}
|
||||
|
Reference in New Issue
Block a user