mirror of
https://github.com/tumic0/GPXSee.git
synced 2025-06-27 03:29:16 +02:00
Added missing routes related stuff
Refactoring/optimization/cleanup
This commit is contained in:
@ -56,17 +56,10 @@ void ElevationGraph::loadPath(const QVector<QPointF> &data)
|
||||
|
||||
void ElevationGraph::loadGPX(const GPX &gpx)
|
||||
{
|
||||
for (int i = 0; i < gpx.trackCount(); i++) {
|
||||
QVector<QPointF> data;
|
||||
gpx.track(i).elevationGraph(data);
|
||||
loadPath(data);
|
||||
}
|
||||
|
||||
for (int i = 0; i < gpx.routeCount(); i++) {
|
||||
QVector<QPointF> data;
|
||||
gpx.route(i).elevationGraph(data);
|
||||
loadPath(data);
|
||||
}
|
||||
for (int i = 0; i < gpx.tracks().count(); i++)
|
||||
loadPath(gpx.tracks().at(i)->elevation());
|
||||
for (int i = 0; i < gpx.routes().count(); i++)
|
||||
loadPath(gpx.routes().at(i)->elevation());
|
||||
|
||||
setXUnits();
|
||||
setInfo();
|
||||
|
29
src/gpx.cpp
29
src/gpx.cpp
@ -4,12 +4,24 @@
|
||||
#include "gpx.h"
|
||||
|
||||
|
||||
GPX::GPX() : _parser(_track_data, _route_data, _waypoint_data), _errorLine(0)
|
||||
{
|
||||
}
|
||||
|
||||
GPX::~GPX()
|
||||
{
|
||||
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 GPX::loadFile(const QString &fileName)
|
||||
{
|
||||
QFile file(fileName);
|
||||
bool ret;
|
||||
QFile file(fileName);
|
||||
|
||||
|
||||
_tracks.clear();
|
||||
_error.clear();
|
||||
_errorLine = 0;
|
||||
|
||||
@ -18,11 +30,18 @@ bool GPX::loadFile(const QString &fileName)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(ret = _parser.loadFile(&file))) {
|
||||
ret = _parser.loadFile(&file);
|
||||
file.close();
|
||||
if (ret == false) {
|
||||
_error = _parser.errorString();
|
||||
_errorLine = _parser.errorLine();
|
||||
return false;
|
||||
}
|
||||
file.close();
|
||||
|
||||
return ret;
|
||||
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;
|
||||
}
|
||||
|
21
src/gpx.h
21
src/gpx.h
@ -13,25 +13,28 @@
|
||||
class GPX
|
||||
{
|
||||
public:
|
||||
GPX() : _parser(_tracks, _routes, _waypoints), _errorLine(0) {}
|
||||
GPX();
|
||||
~GPX();
|
||||
|
||||
bool loadFile(const QString &fileName);
|
||||
const QString &errorString() const {return _error;}
|
||||
int errorLine() const {return _errorLine;}
|
||||
|
||||
int trackCount() const {return _tracks.count();}
|
||||
Track track(int i) const {return Track(_tracks.at(i));}
|
||||
int routeCount() const {return _routes.count();}
|
||||
Route route(int i) const {return Route(_routes.at(i));}
|
||||
const QList<Waypoint> &waypoints() const {return _waypoints;}
|
||||
const QList<Track*> &tracks() const {return _tracks;}
|
||||
const QList<Route*> &routes() const {return _routes;}
|
||||
const QList<Waypoint> &waypoints() const {return _waypoint_data;}
|
||||
|
||||
private:
|
||||
Parser _parser;
|
||||
QString _error;
|
||||
int _errorLine;
|
||||
|
||||
QList<QVector<Trackpoint> > _tracks;
|
||||
QList<QVector<Waypoint> > _routes;
|
||||
QList<Waypoint> _waypoints;
|
||||
QList<Track*> _tracks;
|
||||
QList<Route*> _routes;
|
||||
|
||||
QList<QVector<Trackpoint> > _track_data;
|
||||
QList<QVector<Waypoint> > _route_data;
|
||||
QList<Waypoint> _waypoint_data;
|
||||
};
|
||||
|
||||
#endif // GPX_H
|
||||
|
52
src/gui.cpp
52
src/gui.cpp
@ -39,6 +39,8 @@
|
||||
#include "gui.h"
|
||||
|
||||
|
||||
#include <QElapsedTimer>
|
||||
|
||||
GUI::GUI(QWidget *parent) : QMainWindow(parent)
|
||||
{
|
||||
loadMaps();
|
||||
@ -73,6 +75,8 @@ GUI::GUI(QWidget *parent) : QMainWindow(parent)
|
||||
_distance = 0;
|
||||
_time = 0;
|
||||
_trackCount = 0;
|
||||
_routeCount = 0;
|
||||
_waypointCount = 0;
|
||||
|
||||
_sliderPos = 0;
|
||||
|
||||
@ -269,15 +273,15 @@ void GUI::createActions()
|
||||
}
|
||||
|
||||
// Data actions
|
||||
_showTracksAction = new QAction(tr("Show tracks"), this);
|
||||
_showTracksAction = new QAction(tr("Tracks"), this);
|
||||
_showTracksAction->setCheckable(true);
|
||||
connect(_showTracksAction, SIGNAL(triggered(bool)), _track,
|
||||
SLOT(showTracks(bool)));
|
||||
_showRoutesAction = new QAction(tr("Show routes"), this);
|
||||
_showRoutesAction = new QAction(tr("Routes"), this);
|
||||
_showRoutesAction->setCheckable(true);
|
||||
connect(_showRoutesAction, SIGNAL(triggered(bool)), _track,
|
||||
SLOT(showRoutes(bool)));
|
||||
_showWaypointsAction = new QAction(tr("Show waypoints"), this);
|
||||
_showWaypointsAction = new QAction(tr("Waypoints"), this);
|
||||
_showWaypointsAction->setCheckable(true);
|
||||
connect(_showWaypointsAction, SIGNAL(triggered(bool)), _track,
|
||||
SLOT(showWaypoints(bool)));
|
||||
@ -592,17 +596,22 @@ bool GUI::loadFile(const QString &fileName)
|
||||
_track->loadPOI(_poi);
|
||||
_track->movePositionMarker(_sliderPos);
|
||||
|
||||
for (int i = 0; i < gpx.trackCount(); i++) {
|
||||
_distance += gpx.track(i).distance();
|
||||
_time += gpx.track(i).time();
|
||||
const QDate &date = gpx.track(i).date().date();
|
||||
for (int i = 0; i < gpx.tracks().count(); i++) {
|
||||
_distance += gpx.tracks().at(i)->distance();
|
||||
_time += gpx.tracks().at(i)->time();
|
||||
const QDate &date = gpx.tracks().at(i)->date().date();
|
||||
if (_dateRange.first.isNull() || _dateRange.first > date)
|
||||
_dateRange.first = date;
|
||||
if (_dateRange.second.isNull() || _dateRange.second < date)
|
||||
_dateRange.second = date;
|
||||
}
|
||||
_trackCount += gpx.tracks().count();
|
||||
|
||||
_trackCount += gpx.trackCount();
|
||||
for (int i = 0; i < gpx.routes().count(); i++)
|
||||
_distance += gpx.routes().at(i)->distance();
|
||||
_routeCount += gpx.routes().count();
|
||||
|
||||
_waypointCount += gpx.waypoints().count();
|
||||
|
||||
return true;
|
||||
} else {
|
||||
@ -700,6 +709,7 @@ void GUI::plot(QPrinter *printer)
|
||||
QPainter p(printer);
|
||||
TrackInfo info;
|
||||
qreal ih, gh, mh, ratio;
|
||||
Units units = _imperialUnitsAction->isChecked() ? Imperial : Metric;
|
||||
|
||||
|
||||
if (_dateRange.first.isValid()) {
|
||||
@ -711,18 +721,18 @@ void GUI::plot(QPrinter *printer)
|
||||
info.insert(tr("Date"), QString("%1 - %2")
|
||||
.arg(_dateRange.first.toString(format),
|
||||
_dateRange.second.toString(format)));
|
||||
info.insert(tr("Tracks"), QString::number(_trackCount));
|
||||
}
|
||||
}
|
||||
if (_distance > 0) {
|
||||
if (_imperialUnitsAction->isChecked()) {
|
||||
info.insert(tr("Distance"), QString::number(_distance * M2MI, 'f',
|
||||
1) + UNIT_SPACE + tr("mi"));
|
||||
} else {
|
||||
info.insert(tr("Distance"), QString::number(_distance * M2KM, 'f',
|
||||
1) + UNIT_SPACE + tr("km"));
|
||||
}
|
||||
}
|
||||
|
||||
if (_trackCount)
|
||||
info.insert(tr("Tracks"), QString::number(_trackCount));
|
||||
if (_routeCount)
|
||||
info.insert(tr("Routes"), QString::number(_routeCount));
|
||||
if (_waypointCount)
|
||||
info.insert(tr("Waypoints"), QString::number(_waypointCount));
|
||||
|
||||
if (_distance > 0)
|
||||
info.insert(tr("Distance"), ::distance(_distance, units));
|
||||
if (_time > 0)
|
||||
info.insert(tr("Time"), timeSpan(_time));
|
||||
|
||||
@ -756,6 +766,8 @@ void GUI::reloadFile()
|
||||
_time = 0;
|
||||
_dateRange = DateRange(QDate(), QDate());
|
||||
_trackCount = 0;
|
||||
_routeCount = 0;
|
||||
_waypointCount = 0;
|
||||
|
||||
for (int i = 0; i < _tabs.count(); i++)
|
||||
_tabs.at(i)->clear();
|
||||
@ -786,6 +798,8 @@ void GUI::closeFiles()
|
||||
_time = 0;
|
||||
_dateRange = DateRange(QDate(), QDate());
|
||||
_trackCount = 0;
|
||||
_routeCount = 0;
|
||||
_waypointCount = 0;
|
||||
|
||||
_sliderPos = 0;
|
||||
|
||||
@ -893,7 +907,7 @@ void GUI::updateStatusBarInfo()
|
||||
} else if (_files.count() == 1)
|
||||
_fileNameLabel->setText(_files.at(0));
|
||||
else
|
||||
_fileNameLabel->setText(tr("%1 tracks").arg(_trackCount));
|
||||
_fileNameLabel->setText(tr("%1 files").arg(_files.count()));
|
||||
|
||||
Units units = _imperialUnitsAction->isChecked() ? Imperial : Metric;
|
||||
_distanceLabel->setText(distance(_distance, units));
|
||||
|
@ -162,6 +162,8 @@ private:
|
||||
Map *_currentMap;
|
||||
|
||||
int _trackCount;
|
||||
int _routeCount;
|
||||
int _waypointCount;
|
||||
qreal _distance;
|
||||
qreal _time;
|
||||
DateRange _dateRange;
|
||||
|
@ -23,11 +23,10 @@ void HeartRateGraph::setInfo()
|
||||
|
||||
void HeartRateGraph::loadGPX(const GPX &gpx)
|
||||
{
|
||||
for (int i = 0; i < gpx.trackCount(); i++) {
|
||||
QVector<QPointF> data;
|
||||
for (int i = 0; i < gpx.tracks().count(); i++) {
|
||||
QVector<QPointF> data = gpx.tracks().at(i)->heartRate();
|
||||
qreal sum = 0, w = 0;
|
||||
|
||||
gpx.track(i).heartRateGraph(data);
|
||||
if (data.count() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
@ -37,12 +36,12 @@ void HeartRateGraph::loadGPX(const GPX &gpx)
|
||||
sum += data.at(j).y() * (data.at(j).x() - data.at(j-1).x());
|
||||
w += data.at(j).x() - data.at(j-1).x();
|
||||
}
|
||||
_avg.append(QPointF(gpx.track(i).distance(), sum/w));
|
||||
_avg.append(QPointF(gpx.tracks().at(i)->distance(), sum/w));
|
||||
|
||||
loadData(data);
|
||||
}
|
||||
|
||||
for (int i = 0; i < gpx.routeCount(); i++)
|
||||
for (int i = 0; i < gpx.routes().count(); i++)
|
||||
skipColor();
|
||||
|
||||
setXUnits();
|
||||
|
@ -6,20 +6,25 @@ Route::Route(const QVector<Waypoint> &data) : _data(data)
|
||||
qreal dist = 0;
|
||||
|
||||
_dd.append(dist);
|
||||
for (int i = 1; i < _data.count(); i++) {
|
||||
dist += llDistance(_data.at(i).coordinates(),
|
||||
_data.at(i-1).coordinates());
|
||||
for (int i = 1; i < data.count(); i++) {
|
||||
dist += llDistance(data.at(i).coordinates(), data.at(i-1).coordinates());
|
||||
_dd.append(dist);
|
||||
}
|
||||
}
|
||||
|
||||
void Route::elevationGraph(QVector<QPointF> &graph) const
|
||||
QVector<QPointF> Route::elevation() const
|
||||
{
|
||||
if (!_data.size())
|
||||
return;
|
||||
QVector<QPointF> graph;
|
||||
|
||||
for (int i = 0; i < _data.size(); i++)
|
||||
if (_data.at(i).hasElevation())
|
||||
graph.append(QPointF(_dd.at(i), _data.at(i).elevation()
|
||||
- _data.at(i).geoidHeight()));
|
||||
|
||||
return graph;
|
||||
}
|
||||
|
||||
qreal Route::distance() const
|
||||
{
|
||||
return (_dd.isEmpty()) ? 0 : _dd.last();
|
||||
}
|
||||
|
@ -10,10 +10,11 @@ public:
|
||||
Route(const QVector<Waypoint> &data);
|
||||
|
||||
const QVector<Waypoint> &route() const {return _data;}
|
||||
void elevationGraph(QVector<QPointF> &graph) const;
|
||||
qreal distance() const {return _dd.last();}
|
||||
QVector<QPointF> elevation() const;
|
||||
|
||||
bool isNull() const {return (_data.count() < 2) ? true : false;}
|
||||
qreal distance() const;
|
||||
|
||||
bool isNull() const {return _dd.isEmpty();}
|
||||
|
||||
private:
|
||||
const QVector<Waypoint> &_data;
|
||||
|
@ -79,3 +79,14 @@ void RouteItem::showWaypoints(bool show)
|
||||
if (childs.at(i) != _marker)
|
||||
childs.at(i)->setVisible(show);
|
||||
}
|
||||
|
||||
void RouteItem::showWaypointLabels(bool show)
|
||||
{
|
||||
QList<QGraphicsItem *> childs = childItems();
|
||||
for (int i = 0; i < childs.count(); i++) {
|
||||
if (childs.at(i) != _marker) {
|
||||
WaypointItem *wi = static_cast<WaypointItem*>(childs.at(i));
|
||||
wi->showLabel(show);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -23,6 +23,7 @@ public:
|
||||
void moveMarker(qreal t);
|
||||
|
||||
void showWaypoints(bool show);
|
||||
void showWaypointLabels(bool show);
|
||||
|
||||
private:
|
||||
QPainterPath _path;
|
||||
|
@ -24,22 +24,20 @@ void SpeedGraph::setInfo()
|
||||
|
||||
void SpeedGraph::loadGPX(const GPX &gpx)
|
||||
{
|
||||
for (int i = 0; i < gpx.trackCount(); i++) {
|
||||
QVector<QPointF> data;
|
||||
|
||||
gpx.track(i).speedGraph(data);
|
||||
for (int i = 0; i < gpx.tracks().count(); i++) {
|
||||
QVector<QPointF> data = gpx.tracks().at(i)->speed();
|
||||
if (data.count() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
}
|
||||
|
||||
_avg.append(QPointF(gpx.track(i).distance(), gpx.track(i).distance()
|
||||
/ gpx.track(i).time()));
|
||||
_avg.append(QPointF(gpx.tracks().at(i)->distance(),
|
||||
gpx.tracks().at(i)->distance() / gpx.tracks().at(i)->time()));
|
||||
|
||||
loadData(data);
|
||||
}
|
||||
|
||||
for (int i = 0; i < gpx.routeCount(); i++)
|
||||
for (int i = 0; i < gpx.routes().count(); i++)
|
||||
skipColor();
|
||||
|
||||
setXUnits();
|
||||
|
@ -25,11 +25,10 @@ void TemperatureGraph::setInfo()
|
||||
|
||||
void TemperatureGraph::loadGPX(const GPX &gpx)
|
||||
{
|
||||
for (int i = 0; i < gpx.trackCount(); i++) {
|
||||
QVector<QPointF> data;
|
||||
for (int i = 0; i < gpx.tracks().count(); i++) {
|
||||
QVector<QPointF> data = gpx.tracks().at(i)->temperature();
|
||||
qreal sum = 0, w = 0;
|
||||
|
||||
gpx.track(i).temperatureGraph(data);
|
||||
if (data.count() < 2) {
|
||||
skipColor();
|
||||
continue;
|
||||
@ -39,12 +38,12 @@ void TemperatureGraph::loadGPX(const GPX &gpx)
|
||||
sum += data.at(j).y() * (data.at(j).x() - data.at(j-1).x());
|
||||
w += data.at(j).x() - data.at(j-1).x();
|
||||
}
|
||||
_avg.append(QPointF(gpx.track(i).distance(), sum/w));
|
||||
_avg.append(QPointF(gpx.tracks().at(i)->distance(), sum/w));
|
||||
|
||||
loadData(data);
|
||||
}
|
||||
|
||||
for (int i = 0; i < gpx.routeCount(); i++)
|
||||
for (int i = 0; i < gpx.routes().count(); i++)
|
||||
skipColor();
|
||||
|
||||
setXUnits();
|
||||
|
@ -84,36 +84,35 @@ Track::Track(const QVector<Trackpoint> &data) : _data(data)
|
||||
qreal dist = 0;
|
||||
|
||||
_dd.append(dist);
|
||||
for (int i = 1; i < _data.count(); i++) {
|
||||
dist += llDistance(_data.at(i).coordinates(),
|
||||
_data.at(i-1).coordinates());
|
||||
for (int i = 1; i < data.count(); i++) {
|
||||
dist += llDistance(data.at(i).coordinates(), data.at(i-1).coordinates());
|
||||
_dd.append(dist);
|
||||
}
|
||||
}
|
||||
|
||||
void Track::elevationGraph(QVector<QPointF> &graph) const
|
||||
QVector<QPointF> Track::elevation() const
|
||||
{
|
||||
QVector<QPointF> raw;
|
||||
|
||||
if (!_data.size())
|
||||
return;
|
||||
return raw;
|
||||
|
||||
for (int i = 0; i < _data.size(); i++)
|
||||
if (_data.at(i).hasElevation())
|
||||
raw.append(QPointF(_dd.at(i), _data.at(i).elevation()
|
||||
- _data.at(i).geoidHeight()));
|
||||
|
||||
graph = filter(raw, WINDOW_EF);
|
||||
return filter(raw, WINDOW_EF);
|
||||
}
|
||||
|
||||
void Track::speedGraph(QVector<QPointF> &graph) const
|
||||
QVector<QPointF> Track::speed() const
|
||||
{
|
||||
qreal v, ds;
|
||||
qint64 dt;
|
||||
QVector<QPointF> raw;
|
||||
|
||||
if (!_data.size())
|
||||
return;
|
||||
return raw;
|
||||
|
||||
raw.append(QPointF(0, 0));
|
||||
for (int i = 1; i < _data.size(); i++) {
|
||||
@ -131,52 +130,56 @@ void Track::speedGraph(QVector<QPointF> &graph) const
|
||||
raw.append(QPointF(_dd.at(i), v));
|
||||
}
|
||||
|
||||
graph = filter(eliminate(raw, WINDOW_SE), WINDOW_SF);
|
||||
return filter(eliminate(raw, WINDOW_SE), WINDOW_SF);
|
||||
}
|
||||
|
||||
void Track::heartRateGraph(QVector<QPointF> &graph) const
|
||||
QVector<QPointF> Track::heartRate() const
|
||||
{
|
||||
QVector<QPointF> raw;
|
||||
|
||||
if (!_data.size())
|
||||
return;
|
||||
return raw;
|
||||
|
||||
for (int i = 0; i < _data.count(); i++)
|
||||
if (_data.at(i).hasHeartRate())
|
||||
raw.append(QPointF(_dd.at(i), _data.at(i).heartRate()));
|
||||
|
||||
graph = filter(eliminate(raw, WINDOW_HE), WINDOW_HF);
|
||||
return filter(eliminate(raw, WINDOW_HE), WINDOW_HF);
|
||||
}
|
||||
|
||||
void Track::temperatureGraph(QVector<QPointF> &graph) const
|
||||
QVector<QPointF> Track::temperature() const
|
||||
{
|
||||
if (!_data.size())
|
||||
return;
|
||||
QVector<QPointF> graph;
|
||||
|
||||
for (int i = 0; i < _data.size(); i++)
|
||||
if (_data.at(i).hasTemperature())
|
||||
graph.append(QPointF(_dd.at(i), _data.at(i).temperature()));
|
||||
|
||||
return graph;
|
||||
}
|
||||
|
||||
void Track::track(QVector<QPointF> &track) const
|
||||
QVector<QPointF> Track::track() const
|
||||
{
|
||||
QVector<QPointF> graph;
|
||||
|
||||
for (int i = 0; i < _data.size(); i++)
|
||||
track.append(_data.at(i).coordinates());
|
||||
graph.append(_data.at(i).coordinates());
|
||||
|
||||
return graph;
|
||||
}
|
||||
|
||||
qreal Track::distance() const
|
||||
{
|
||||
return (_dd.isEmpty()) ? 0 : _dd.last();
|
||||
}
|
||||
|
||||
qreal Track::time() const
|
||||
{
|
||||
if (_data.size() < 2)
|
||||
return 0;
|
||||
|
||||
return (_data.first().timestamp().msecsTo(_data.last().timestamp())
|
||||
/ 1000.0);
|
||||
return (_data.size() < 2) ? 0 :
|
||||
(_data.first().timestamp().msecsTo(_data.last().timestamp()) / 1000.0);
|
||||
}
|
||||
|
||||
QDateTime Track::date() const
|
||||
{
|
||||
if (_data.size())
|
||||
return _data.first().timestamp();
|
||||
else
|
||||
return QDateTime();
|
||||
return (_data.size()) ? _data.first().timestamp() : QDateTime();
|
||||
}
|
||||
|
15
src/track.h
15
src/track.h
@ -10,16 +10,17 @@ class Track
|
||||
public:
|
||||
Track(const QVector<Trackpoint> &data);
|
||||
|
||||
void elevationGraph(QVector<QPointF> &graph) const;
|
||||
void speedGraph(QVector<QPointF> &graph) const;
|
||||
void heartRateGraph(QVector<QPointF> &graph) const;
|
||||
void temperatureGraph(QVector<QPointF> &graph) const;
|
||||
void track(QVector<QPointF> &track) const;
|
||||
qreal distance() const {return _dd.last();}
|
||||
QVector<QPointF> track() const;
|
||||
QVector<QPointF> elevation() const;
|
||||
QVector<QPointF> speed() const;
|
||||
QVector<QPointF> heartRate() const;
|
||||
QVector<QPointF> temperature() const;
|
||||
|
||||
qreal distance() const;
|
||||
qreal time() const;
|
||||
QDateTime date() const;
|
||||
|
||||
bool isNull() const {return (_data.count() < 2) ? true : false;}
|
||||
bool isNull() const {return _dd.isEmpty();}
|
||||
|
||||
private:
|
||||
const QVector<Trackpoint> &_data;
|
||||
|
@ -34,9 +34,7 @@ void TrackItem::updateShape()
|
||||
TrackItem::TrackItem(const Track &track, QGraphicsItem *parent)
|
||||
: QGraphicsItem(parent)
|
||||
{
|
||||
QVector<QPointF> t;
|
||||
|
||||
track.track(t);
|
||||
const QVector<QPointF> &t = track.track();
|
||||
Q_ASSERT(t.count() >= 2);
|
||||
|
||||
const QPointF &p = t.at(0);
|
||||
|
@ -91,6 +91,7 @@ void TrackView::addRoute(const Route &route)
|
||||
ri->setColor(_palette.color());
|
||||
ri->setVisible(_showRoutes);
|
||||
ri->showWaypoints(_showRouteWaypoints);
|
||||
ri->showWaypointLabels(_showWaypointLabels);
|
||||
_scene->addItem(ri);
|
||||
|
||||
_maxPath = qMax(ri->path().length(), _maxPath);
|
||||
@ -120,10 +121,10 @@ void TrackView::loadGPX(const GPX &gpx)
|
||||
{
|
||||
int zoom = _zoom;
|
||||
|
||||
for (int i = 0; i < gpx.trackCount(); i++)
|
||||
addTrack(gpx.track(i));
|
||||
for (int i = 0; i < gpx.routeCount(); i++)
|
||||
addRoute(gpx.route(i));
|
||||
for (int i = 0; i < gpx.tracks().count(); i++)
|
||||
addTrack(*(gpx.tracks().at(i)));
|
||||
for (int i = 0; i < gpx.routes().count(); i++)
|
||||
addRoute(*(gpx.routes().at(i)));
|
||||
addWaypoints(gpx.waypoints());
|
||||
|
||||
if (_tracks.empty() && _routes.empty() && _waypoints.empty())
|
||||
@ -540,6 +541,9 @@ void TrackView::showWaypointLabels(bool show)
|
||||
|
||||
for (int i = 0; i < _waypoints.size(); i++)
|
||||
_waypoints.at(i)->showLabel(show);
|
||||
|
||||
for (int i = 0; i < _routes.size(); i++)
|
||||
_routes.at(i)->showWaypointLabels(show);
|
||||
}
|
||||
|
||||
void TrackView::showRouteWaypoints(bool show)
|
||||
|
Reference in New Issue
Block a user