#ifndef TRACKVIEW_H #define TRACKVIEW_H #include #include #include #include #include #include "units.h" #include "palette.h" #include "waypoint.h" class GPX; class POI; class Map; class WaypointItem; class MarkerItem; class ScaleItem; class TrackView : public QGraphicsView { Q_OBJECT public: TrackView(QWidget *parent = 0); ~TrackView(); void loadGPX(const GPX &gpx); void loadPOI(const POI &poi); void clearPOI(); void clear(); void setMap(Map *map); void setUnits(enum Units units); void plot(QPainter *painter, const QRectF &target); enum QPrinter::Orientation orientation() const; int trackCount() const {return _paths.count();} int waypointCount() const {return _locations.count();} public slots: void movePositionMarker(qreal val); void redraw(); private: void addTrack(const QVector &track); void addWaypoints(const QList &waypoints); void addPOI(const QVector &waypoints); QRectF trackBoundingRect() const; QRectF waypointBoundingRect() const; qreal trackScale() const; qreal waypointScale() const; qreal mapScale(int zoom) const; void rescale(qreal scale); void rescale(); void wheelEvent(QWheelEvent *event); void drawBackground(QPainter *painter, const QRectF &rect); void resizeEvent(QResizeEvent *e); void paintEvent(QPaintEvent *e); QGraphicsScene *_scene; QList _paths; QList _markers; QList _locations; QHash _pois; QList > _tracks; QVector _waypoints; Map *_map; ScaleItem *_mapScale; Palette _palette; qreal _maxPath, _maxDistance; qreal _scale; int _zoom; bool _plot; }; #endif // TRACKVIEW_H