mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-11-30 22:51:16 +01:00
Code cleanup
This commit is contained in:
parent
014e260042
commit
70f4010f55
@ -28,7 +28,6 @@ HEADERS += src/config.h \
|
|||||||
src/units.h \
|
src/units.h \
|
||||||
src/scaleitem.h \
|
src/scaleitem.h \
|
||||||
src/waypoint.h \
|
src/waypoint.h \
|
||||||
src/trackview.h \
|
|
||||||
src/track.h \
|
src/track.h \
|
||||||
src/graphview.h \
|
src/graphview.h \
|
||||||
src/trackpoint.h \
|
src/trackpoint.h \
|
||||||
@ -52,7 +51,8 @@ HEADERS += src/config.h \
|
|||||||
src/routeitem.h \
|
src/routeitem.h \
|
||||||
src/graphitem.h \
|
src/graphitem.h \
|
||||||
src/graph.h \
|
src/graph.h \
|
||||||
src/pathitem.h
|
src/pathitem.h \
|
||||||
|
src/pathview.h
|
||||||
SOURCES += src/main.cpp \
|
SOURCES += src/main.cpp \
|
||||||
src/gui.cpp \
|
src/gui.cpp \
|
||||||
src/gpx.cpp \
|
src/gpx.cpp \
|
||||||
@ -71,7 +71,6 @@ SOURCES += src/main.cpp \
|
|||||||
src/maplist.cpp \
|
src/maplist.cpp \
|
||||||
src/downloader.cpp \
|
src/downloader.cpp \
|
||||||
src/scaleitem.cpp \
|
src/scaleitem.cpp \
|
||||||
src/trackview.cpp \
|
|
||||||
src/track.cpp \
|
src/track.cpp \
|
||||||
src/graphview.cpp \
|
src/graphview.cpp \
|
||||||
src/waypointitem.cpp \
|
src/waypointitem.cpp \
|
||||||
@ -90,7 +89,9 @@ SOURCES += src/main.cpp \
|
|||||||
src/tooltip.cpp \
|
src/tooltip.cpp \
|
||||||
src/route.cpp \
|
src/route.cpp \
|
||||||
src/routeitem.cpp \
|
src/routeitem.cpp \
|
||||||
src/graphitem.cpp
|
src/graphitem.cpp \
|
||||||
|
src/pathitem.cpp \
|
||||||
|
src/pathview.cpp
|
||||||
RESOURCES += gpxsee.qrc
|
RESOURCES += gpxsee.qrc
|
||||||
TRANSLATIONS = lang/gpxsee_cs.ts
|
TRANSLATIONS = lang/gpxsee_cs.ts
|
||||||
macx {
|
macx {
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<translation>Výška</translation>
|
<translation>Výška</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/elevationgraph.cpp" line="139"/>
|
<location filename="../src/elevationgraph.cpp" line="141"/>
|
||||||
<source>m</source>
|
<source>m</source>
|
||||||
<translation>m</translation>
|
<translation>m</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -30,7 +30,7 @@
|
|||||||
<translation>Minimum</translation>
|
<translation>Minimum</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/elevationgraph.cpp" line="142"/>
|
<location filename="../src/elevationgraph.cpp" line="144"/>
|
||||||
<source>ft</source>
|
<source>ft</source>
|
||||||
<translation>ft</translation>
|
<translation>ft</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -156,7 +156,7 @@
|
|||||||
<translation>Otevřít soubor</translation>
|
<translation>Otevřít soubor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="657"/>
|
<location filename="../src/gui.cpp" line="658"/>
|
||||||
<source>Open POI file</source>
|
<source>Open POI file</source>
|
||||||
<translation>Otevřít POI soubor</translation>
|
<translation>Otevřít POI soubor</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -363,23 +363,23 @@
|
|||||||
<translation>Předchozí mapa</translation>
|
<translation>Předchozí mapa</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="745"/>
|
<location filename="../src/gui.cpp" line="746"/>
|
||||||
<location filename="../src/gui.cpp" line="748"/>
|
<location filename="../src/gui.cpp" line="749"/>
|
||||||
<source>Date</source>
|
<source>Date</source>
|
||||||
<translation>Datum</translation>
|
<translation>Datum</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="757"/>
|
<location filename="../src/gui.cpp" line="758"/>
|
||||||
<source>Routes</source>
|
<source>Routes</source>
|
||||||
<translation>Trasy</translation>
|
<translation>Trasy</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="947"/>
|
<location filename="../src/gui.cpp" line="948"/>
|
||||||
<source>No GPX files loaded</source>
|
<source>No GPX files loaded</source>
|
||||||
<translation>Nejsou načteny žádné GPX soubory</translation>
|
<translation>Nejsou načteny žádné GPX soubory</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="951"/>
|
<location filename="../src/gui.cpp" line="952"/>
|
||||||
<source>%1 files</source>
|
<source>%1 files</source>
|
||||||
<translation>%1 souborů</translation>
|
<translation>%1 souborů</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -404,7 +404,7 @@
|
|||||||
<translation>Exportovat do PDF...</translation>
|
<translation>Exportovat do PDF...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="759"/>
|
<location filename="../src/gui.cpp" line="760"/>
|
||||||
<source>Waypoints</source>
|
<source>Waypoints</source>
|
||||||
<translation>Navigační body</translation>
|
<translation>Navigační body</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -454,18 +454,18 @@
|
|||||||
<translation>Soubory GPX (*.gpx);;Všechny soubory (*)</translation>
|
<translation>Soubory GPX (*.gpx);;Všechny soubory (*)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="648"/>
|
<location filename="../src/gui.cpp" line="649"/>
|
||||||
<location filename="../src/gui.cpp" line="674"/>
|
<location filename="../src/gui.cpp" line="675"/>
|
||||||
<source>Line: %1</source>
|
<source>Line: %1</source>
|
||||||
<translation>Řádka: %1</translation>
|
<translation>Řádka: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="658"/>
|
<location filename="../src/gui.cpp" line="659"/>
|
||||||
<source>GPX files (*.gpx);;CSV files (*.csv);;All files (*)</source>
|
<source>GPX files (*.gpx);;CSV files (*.csv);;All files (*)</source>
|
||||||
<translation>Soubory GPX (*.gpx);;Soubory CSV (*.csv);;Všechny soubory (*)</translation>
|
<translation>Soubory GPX (*.gpx);;Soubory CSV (*.csv);;Všechny soubory (*)</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="755"/>
|
<location filename="../src/gui.cpp" line="756"/>
|
||||||
<source>Tracks</source>
|
<source>Tracks</source>
|
||||||
<translation>Cesty</translation>
|
<translation>Cesty</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -492,31 +492,31 @@
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="313"/>
|
<location filename="../src/gui.cpp" line="313"/>
|
||||||
<location filename="../src/gui.cpp" line="762"/>
|
<location filename="../src/gui.cpp" line="763"/>
|
||||||
<source>Distance</source>
|
<source>Distance</source>
|
||||||
<translation>Vzdálenost</translation>
|
<translation>Vzdálenost</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="319"/>
|
<location filename="../src/gui.cpp" line="319"/>
|
||||||
<location filename="../src/gui.cpp" line="764"/>
|
<location filename="../src/gui.cpp" line="765"/>
|
||||||
<source>Time</source>
|
<source>Time</source>
|
||||||
<translation>Čas</translation>
|
<translation>Čas</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="650"/>
|
<location filename="../src/gui.cpp" line="651"/>
|
||||||
<location filename="../src/gui.cpp" line="675"/>
|
<location filename="../src/gui.cpp" line="676"/>
|
||||||
<source>Error</source>
|
<source>Error</source>
|
||||||
<translation>Chyba</translation>
|
<translation>Chyba</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="645"/>
|
<location filename="../src/gui.cpp" line="646"/>
|
||||||
<source>Error loading GPX file:
|
<source>Error loading GPX file:
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation>Soubor GPX nelze otevřít:
|
<translation>Soubor GPX nelze otevřít:
|
||||||
%1</translation>
|
%1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/gui.cpp" line="671"/>
|
<location filename="../src/gui.cpp" line="672"/>
|
||||||
<source>Error loading POI file:
|
<source>Error loading POI file:
|
||||||
%1</source>
|
%1</source>
|
||||||
<translation>Soubor POI nelze otevřít:
|
<translation>Soubor POI nelze otevřít:
|
||||||
@ -526,47 +526,47 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>GraphView</name>
|
<name>GraphView</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="110"/>
|
<location filename="../src/graphview.cpp" line="111"/>
|
||||||
<source>m</source>
|
<source>m</source>
|
||||||
<translation>m</translation>
|
<translation>m</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="113"/>
|
<location filename="../src/graphview.cpp" line="114"/>
|
||||||
<source>km</source>
|
<source>km</source>
|
||||||
<translation>km</translation>
|
<translation>km</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="118"/>
|
<location filename="../src/graphview.cpp" line="119"/>
|
||||||
<source>ft</source>
|
<source>ft</source>
|
||||||
<translation>ft</translation>
|
<translation>ft</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="121"/>
|
<location filename="../src/graphview.cpp" line="122"/>
|
||||||
<source>mi</source>
|
<source>mi</source>
|
||||||
<translation>mi</translation>
|
<translation>mi</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="127"/>
|
<location filename="../src/graphview.cpp" line="128"/>
|
||||||
<source>s</source>
|
<source>s</source>
|
||||||
<translation>s</translation>
|
<translation>s</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="130"/>
|
<location filename="../src/graphview.cpp" line="131"/>
|
||||||
<source>min</source>
|
<source>min</source>
|
||||||
<translation>min</translation>
|
<translation>min</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="133"/>
|
<location filename="../src/graphview.cpp" line="134"/>
|
||||||
<source>h</source>
|
<source>h</source>
|
||||||
<translation>h</translation>
|
<translation>h</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="158"/>
|
<location filename="../src/graphview.cpp" line="160"/>
|
||||||
<source>Distance</source>
|
<source>Distance</source>
|
||||||
<translation>Vzdálenost</translation>
|
<translation>Vzdálenost</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/graphview.cpp" line="160"/>
|
<location filename="../src/graphview.cpp" line="162"/>
|
||||||
<source>Time</source>
|
<source>Time</source>
|
||||||
<translation>Čas</translation>
|
<translation>Čas</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -623,7 +623,7 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>RouteItem</name>
|
<name>RouteItem</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/routeitem.cpp" line="18"/>
|
<location filename="../src/routeitem.cpp" line="15"/>
|
||||||
<source>Distance</source>
|
<source>Distance</source>
|
||||||
<translation>Vzdálenost</translation>
|
<translation>Vzdálenost</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -631,22 +631,22 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>ScaleItem</name>
|
<name>ScaleItem</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/scaleitem.cpp" line="87"/>
|
<location filename="../src/scaleitem.cpp" line="90"/>
|
||||||
<source>mi</source>
|
<source>mi</source>
|
||||||
<translation>mi</translation>
|
<translation>mi</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/scaleitem.cpp" line="88"/>
|
<location filename="../src/scaleitem.cpp" line="91"/>
|
||||||
<source>ft</source>
|
<source>ft</source>
|
||||||
<translation>ft</translation>
|
<translation>ft</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/scaleitem.cpp" line="90"/>
|
<location filename="../src/scaleitem.cpp" line="93"/>
|
||||||
<source>km</source>
|
<source>km</source>
|
||||||
<translation>km</translation>
|
<translation>km</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/scaleitem.cpp" line="91"/>
|
<location filename="../src/scaleitem.cpp" line="94"/>
|
||||||
<source>m</source>
|
<source>m</source>
|
||||||
<translation>m</translation>
|
<translation>m</translation>
|
||||||
</message>
|
</message>
|
||||||
@ -717,17 +717,17 @@
|
|||||||
<context>
|
<context>
|
||||||
<name>TrackItem</name>
|
<name>TrackItem</name>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/trackitem.cpp" line="17"/>
|
<location filename="../src/trackitem.cpp" line="14"/>
|
||||||
<source>Distance</source>
|
<source>Distance</source>
|
||||||
<translation>Vzdálenost</translation>
|
<translation>Vzdálenost</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/trackitem.cpp" line="20"/>
|
<location filename="../src/trackitem.cpp" line="17"/>
|
||||||
<source>Time</source>
|
<source>Time</source>
|
||||||
<translation>Čas</translation>
|
<translation>Čas</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/trackitem.cpp" line="22"/>
|
<location filename="../src/trackitem.cpp" line="19"/>
|
||||||
<source>Date</source>
|
<source>Date</source>
|
||||||
<translation>Datum</translation>
|
<translation>Datum</translation>
|
||||||
</message>
|
</message>
|
||||||
|
80
src/gui.cpp
80
src/gui.cpp
@ -30,7 +30,7 @@
|
|||||||
#include "speedgraph.h"
|
#include "speedgraph.h"
|
||||||
#include "heartrategraph.h"
|
#include "heartrategraph.h"
|
||||||
#include "temperaturegraph.h"
|
#include "temperaturegraph.h"
|
||||||
#include "trackview.h"
|
#include "pathview.h"
|
||||||
#include "trackinfo.h"
|
#include "trackinfo.h"
|
||||||
#include "filebrowser.h"
|
#include "filebrowser.h"
|
||||||
#include "cpuarch.h"
|
#include "cpuarch.h"
|
||||||
@ -56,7 +56,7 @@ GUI::GUI(QWidget *parent) : QMainWindow(parent)
|
|||||||
_browser->setFilter(QStringList("*.gpx"));
|
_browser->setFilter(QStringList("*.gpx"));
|
||||||
|
|
||||||
QVBoxLayout *layout = new QVBoxLayout;
|
QVBoxLayout *layout = new QVBoxLayout;
|
||||||
layout->addWidget(_track);
|
layout->addWidget(_pathView);
|
||||||
layout->addWidget(_trackGraphs);
|
layout->addWidget(_trackGraphs);
|
||||||
layout->setContentsMargins(0, 0, 0, 0);
|
layout->setContentsMargins(0, 0, 0, 0);
|
||||||
#ifdef Q_OS_WIN32
|
#ifdef Q_OS_WIN32
|
||||||
@ -238,11 +238,11 @@ void GUI::createActions()
|
|||||||
connect(_closePOIAction, SIGNAL(triggered()), this, SLOT(closePOIFiles()));
|
connect(_closePOIAction, SIGNAL(triggered()), this, SLOT(closePOIFiles()));
|
||||||
_overlapPOIAction = new QAction(tr("Overlap POIs"), this);
|
_overlapPOIAction = new QAction(tr("Overlap POIs"), this);
|
||||||
_overlapPOIAction->setCheckable(true);
|
_overlapPOIAction->setCheckable(true);
|
||||||
connect(_overlapPOIAction, SIGNAL(triggered(bool)), _track,
|
connect(_overlapPOIAction, SIGNAL(triggered(bool)), _pathView,
|
||||||
SLOT(setPOIOverlap(bool)));
|
SLOT(setPOIOverlap(bool)));
|
||||||
_showPOILabelsAction = new QAction(tr("Show POI labels"), this);
|
_showPOILabelsAction = new QAction(tr("Show POI labels"), this);
|
||||||
_showPOILabelsAction->setCheckable(true);
|
_showPOILabelsAction->setCheckable(true);
|
||||||
connect(_showPOILabelsAction, SIGNAL(triggered(bool)), _track,
|
connect(_showPOILabelsAction, SIGNAL(triggered(bool)), _pathView,
|
||||||
SLOT(showPOILabels(bool)));
|
SLOT(showPOILabels(bool)));
|
||||||
_showPOIAction = new QAction(QIcon(QPixmap(SHOW_POI_ICON)),
|
_showPOIAction = new QAction(QIcon(QPixmap(SHOW_POI_ICON)),
|
||||||
tr("Show POIs"), this);
|
tr("Show POIs"), this);
|
||||||
@ -289,15 +289,15 @@ void GUI::createActions()
|
|||||||
SLOT(showRoutes(bool)));
|
SLOT(showRoutes(bool)));
|
||||||
_showWaypointsAction = new QAction(tr("Show waypoints"), this);
|
_showWaypointsAction = new QAction(tr("Show waypoints"), this);
|
||||||
_showWaypointsAction->setCheckable(true);
|
_showWaypointsAction->setCheckable(true);
|
||||||
connect(_showWaypointsAction, SIGNAL(triggered(bool)), _track,
|
connect(_showWaypointsAction, SIGNAL(triggered(bool)), _pathView,
|
||||||
SLOT(showWaypoints(bool)));
|
SLOT(showWaypoints(bool)));
|
||||||
_showWaypointLabelsAction = new QAction(tr("Waypoint labels"), this);
|
_showWaypointLabelsAction = new QAction(tr("Waypoint labels"), this);
|
||||||
_showWaypointLabelsAction->setCheckable(true);
|
_showWaypointLabelsAction->setCheckable(true);
|
||||||
connect(_showWaypointLabelsAction, SIGNAL(triggered(bool)), _track,
|
connect(_showWaypointLabelsAction, SIGNAL(triggered(bool)), _pathView,
|
||||||
SLOT(showWaypointLabels(bool)));
|
SLOT(showWaypointLabels(bool)));
|
||||||
_showRouteWaypointsAction = new QAction(tr("Route waypoints"), this);
|
_showRouteWaypointsAction = new QAction(tr("Route waypoints"), this);
|
||||||
_showRouteWaypointsAction->setCheckable(true);
|
_showRouteWaypointsAction->setCheckable(true);
|
||||||
connect(_showRouteWaypointsAction, SIGNAL(triggered(bool)), _track,
|
connect(_showRouteWaypointsAction, SIGNAL(triggered(bool)), _pathView,
|
||||||
SLOT(showRouteWaypoints(bool)));
|
SLOT(showRouteWaypoints(bool)));
|
||||||
|
|
||||||
// Graph actions
|
// Graph actions
|
||||||
@ -457,7 +457,7 @@ void GUI::createToolBars()
|
|||||||
|
|
||||||
void GUI::createTrackView()
|
void GUI::createTrackView()
|
||||||
{
|
{
|
||||||
_track = new TrackView(this);
|
_pathView = new PathView(this);
|
||||||
#ifdef Q_OS_WIN32
|
#ifdef Q_OS_WIN32
|
||||||
_track->setFrameShape(QFrame::NoFrame);
|
_track->setFrameShape(QFrame::NoFrame);
|
||||||
#endif // Q_OS_WIN32
|
#endif // Q_OS_WIN32
|
||||||
@ -615,13 +615,13 @@ bool GUI::loadFile(const QString &fileName)
|
|||||||
QList<PathItem*> paths;
|
QList<PathItem*> paths;
|
||||||
|
|
||||||
if (gpx.loadFile(fileName)) {
|
if (gpx.loadFile(fileName)) {
|
||||||
paths = _track->loadGPX(gpx);
|
paths = _pathView->loadGPX(gpx);
|
||||||
for (int i = 0; i < _tabs.count(); i++)
|
for (int i = 0; i < _tabs.count(); i++)
|
||||||
_tabs.at(i)->loadGPX(gpx, paths);
|
_tabs.at(i)->loadGPX(gpx, paths);
|
||||||
updateGraphTabs();
|
updateGraphTabs();
|
||||||
_track->setHidden(false);
|
_pathView->setHidden(false);
|
||||||
if (_showPOIAction->isChecked())
|
if (_showPOIAction->isChecked())
|
||||||
_track->loadPOI(_poi);
|
_pathView->loadPOI(_poi);
|
||||||
|
|
||||||
for (int i = 0; i < gpx.tracks().count(); i++) {
|
for (int i = 0; i < gpx.tracks().count(); i++) {
|
||||||
_trackDistance += gpx.tracks().at(i)->distance();
|
_trackDistance += gpx.tracks().at(i)->distance();
|
||||||
@ -678,7 +678,7 @@ bool GUI::openPOIFile(const QString &fileName)
|
|||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
_showPOIAction->setChecked(true);
|
_showPOIAction->setChecked(true);
|
||||||
_track->loadPOI(_poi);
|
_pathView->loadPOI(_poi);
|
||||||
QAction *action = createPOIFileAction(_poi.files().indexOf(fileName));
|
QAction *action = createPOIFileAction(_poi.files().indexOf(fileName));
|
||||||
action->setChecked(true);
|
action->setChecked(true);
|
||||||
_poiFilesMenu->addAction(action);
|
_poiFilesMenu->addAction(action);
|
||||||
@ -695,7 +695,7 @@ void GUI::closePOIFiles()
|
|||||||
delete _poiFilesActions[i];
|
delete _poiFilesActions[i];
|
||||||
_poiFilesActions.clear();
|
_poiFilesActions.clear();
|
||||||
|
|
||||||
_track->clearPOI();
|
_pathView->clearPOI();
|
||||||
|
|
||||||
_poi.clear();
|
_poi.clear();
|
||||||
}
|
}
|
||||||
@ -784,7 +784,7 @@ void GUI::plot(QPrinter *printer)
|
|||||||
gt->plot(&p, QRectF(0, printer->height() - gh, printer->width(), gh));
|
gt->plot(&p, QRectF(0, printer->height() - gh, printer->width(), gh));
|
||||||
} else
|
} else
|
||||||
gh = 0;
|
gh = 0;
|
||||||
_track->plot(&p, QRectF(0, ih + mh, printer->width(), printer->height()
|
_pathView->plot(&p, QRectF(0, ih + mh, printer->width(), printer->height()
|
||||||
- (ih + 2*mh + gh)));
|
- (ih + 2*mh + gh)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -800,7 +800,7 @@ void GUI::reloadFile()
|
|||||||
|
|
||||||
for (int i = 0; i < _tabs.count(); i++)
|
for (int i = 0; i < _tabs.count(); i++)
|
||||||
_tabs.at(i)->clear();
|
_tabs.at(i)->clear();
|
||||||
_track->clear();
|
_pathView->clear();
|
||||||
|
|
||||||
_sliderPos = 0;
|
_sliderPos = 0;
|
||||||
|
|
||||||
@ -835,7 +835,7 @@ void GUI::closeFiles()
|
|||||||
|
|
||||||
for (int i = 0; i < _tabs.count(); i++)
|
for (int i = 0; i < _tabs.count(); i++)
|
||||||
_tabs.at(i)->clear();
|
_tabs.at(i)->clear();
|
||||||
_track->clear();
|
_pathView->clear();
|
||||||
|
|
||||||
_files.clear();
|
_files.clear();
|
||||||
}
|
}
|
||||||
@ -854,17 +854,17 @@ void GUI::closeAll()
|
|||||||
void GUI::showPOI(bool checked)
|
void GUI::showPOI(bool checked)
|
||||||
{
|
{
|
||||||
if (checked)
|
if (checked)
|
||||||
_track->loadPOI(_poi);
|
_pathView->loadPOI(_poi);
|
||||||
else
|
else
|
||||||
_track->clearPOI();
|
_pathView->clearPOI();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::showMap(bool checked)
|
void GUI::showMap(bool checked)
|
||||||
{
|
{
|
||||||
if (checked)
|
if (checked)
|
||||||
_track->setMap(_currentMap);
|
_pathView->setMap(_currentMap);
|
||||||
else
|
else
|
||||||
_track->setMap(0);
|
_pathView->setMap(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::showGraphs(bool checked)
|
void GUI::showGraphs(bool checked)
|
||||||
@ -891,7 +891,7 @@ void GUI::showToolbars(bool checked)
|
|||||||
void GUI::showFullscreen(bool checked)
|
void GUI::showFullscreen(bool checked)
|
||||||
{
|
{
|
||||||
if (checked) {
|
if (checked) {
|
||||||
_frameStyle = _track->frameStyle();
|
_frameStyle = _pathView->frameStyle();
|
||||||
_showGraphs = _showGraphsAction->isChecked();
|
_showGraphs = _showGraphsAction->isChecked();
|
||||||
|
|
||||||
statusBar()->hide();
|
statusBar()->hide();
|
||||||
@ -899,7 +899,7 @@ void GUI::showFullscreen(bool checked)
|
|||||||
showToolbars(false);
|
showToolbars(false);
|
||||||
showGraphs(false);
|
showGraphs(false);
|
||||||
_showGraphsAction->setChecked(false);
|
_showGraphsAction->setChecked(false);
|
||||||
_track->setFrameStyle(QFrame::NoFrame);
|
_pathView->setFrameStyle(QFrame::NoFrame);
|
||||||
|
|
||||||
showFullScreen();
|
showFullScreen();
|
||||||
} else {
|
} else {
|
||||||
@ -910,7 +910,7 @@ void GUI::showFullscreen(bool checked)
|
|||||||
_showGraphsAction->setChecked(_showGraphs);
|
_showGraphsAction->setChecked(_showGraphs);
|
||||||
if (_showGraphsAction->isEnabled())
|
if (_showGraphsAction->isEnabled())
|
||||||
showGraphs(_showGraphs);
|
showGraphs(_showGraphs);
|
||||||
_track->setFrameStyle(_frameStyle);
|
_pathView->setFrameStyle(_frameStyle);
|
||||||
|
|
||||||
showNormal();
|
showNormal();
|
||||||
}
|
}
|
||||||
@ -918,7 +918,7 @@ void GUI::showFullscreen(bool checked)
|
|||||||
|
|
||||||
void GUI::showTracks(bool show)
|
void GUI::showTracks(bool show)
|
||||||
{
|
{
|
||||||
_track->showTracks(show);
|
_pathView->showTracks(show);
|
||||||
|
|
||||||
for (int i = 0; i < _tabs.size(); i++)
|
for (int i = 0; i < _tabs.size(); i++)
|
||||||
_tabs.at(i)->showTracks(show);
|
_tabs.at(i)->showTracks(show);
|
||||||
@ -928,7 +928,7 @@ void GUI::showTracks(bool show)
|
|||||||
|
|
||||||
void GUI::showRoutes(bool show)
|
void GUI::showRoutes(bool show)
|
||||||
{
|
{
|
||||||
_track->showRoutes(show);
|
_pathView->showRoutes(show);
|
||||||
|
|
||||||
for (int i = 0; i < _tabs.size(); i++)
|
for (int i = 0; i < _tabs.size(); i++)
|
||||||
_tabs.at(i)->showRoutes(show);
|
_tabs.at(i)->showRoutes(show);
|
||||||
@ -939,7 +939,7 @@ void GUI::showRoutes(bool show)
|
|||||||
void GUI::clearMapCache()
|
void GUI::clearMapCache()
|
||||||
{
|
{
|
||||||
_currentMap->clearCache();
|
_currentMap->clearCache();
|
||||||
_track->redraw();
|
_pathView->redraw();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::updateStatusBarInfo()
|
void GUI::updateStatusBarInfo()
|
||||||
@ -979,7 +979,7 @@ void GUI::mapChanged(int index)
|
|||||||
_currentMap = _maps.at(index);
|
_currentMap = _maps.at(index);
|
||||||
|
|
||||||
if (_showMapAction->isChecked())
|
if (_showMapAction->isChecked())
|
||||||
_track->setMap(_currentMap);
|
_pathView->setMap(_currentMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::nextMap()
|
void GUI::nextMap()
|
||||||
@ -1005,9 +1005,9 @@ void GUI::poiFileChecked(int index)
|
|||||||
_poi.enableFile(_poi.files().at(index),
|
_poi.enableFile(_poi.files().at(index),
|
||||||
_poiFilesActions.at(index)->isChecked());
|
_poiFilesActions.at(index)->isChecked());
|
||||||
|
|
||||||
_track->clearPOI();
|
_pathView->clearPOI();
|
||||||
if (_showPOIAction->isChecked())
|
if (_showPOIAction->isChecked())
|
||||||
_track->loadPOI(_poi);
|
_pathView->loadPOI(_poi);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::sliderPositionChanged(qreal pos)
|
void GUI::sliderPositionChanged(qreal pos)
|
||||||
@ -1072,13 +1072,13 @@ void GUI::updateGraphTabs()
|
|||||||
|
|
||||||
void GUI::updateTrackView()
|
void GUI::updateTrackView()
|
||||||
{
|
{
|
||||||
_track->setHidden(!(_track->trackCount() + _track->routeCount()
|
_pathView->setHidden(!(_pathView->trackCount() + _pathView->routeCount()
|
||||||
+ _track->waypointCount()));
|
+ _pathView->waypointCount()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void GUI::setUnits(Units units)
|
void GUI::setUnits(Units units)
|
||||||
{
|
{
|
||||||
_track->setUnits(units);
|
_pathView->setUnits(units);
|
||||||
for (int i = 0; i <_tabs.count(); i++)
|
for (int i = 0; i <_tabs.count(); i++)
|
||||||
_tabs.at(i)->setUnits(units);
|
_tabs.at(i)->setUnits(units);
|
||||||
updateStatusBarInfo();
|
updateStatusBarInfo();
|
||||||
@ -1259,7 +1259,7 @@ void GUI::readSettings()
|
|||||||
_mapActions.at(index)->setChecked(true);
|
_mapActions.at(index)->setChecked(true);
|
||||||
_currentMap = _maps.at(index);
|
_currentMap = _maps.at(index);
|
||||||
if (_showMapAction->isChecked())
|
if (_showMapAction->isChecked())
|
||||||
_track->setMap(_currentMap);
|
_pathView->setMap(_currentMap);
|
||||||
} else
|
} else
|
||||||
_currentMap = 0;
|
_currentMap = 0;
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
@ -1278,11 +1278,11 @@ void GUI::readSettings()
|
|||||||
|
|
||||||
settings.beginGroup(POI_SETTINGS_GROUP);
|
settings.beginGroup(POI_SETTINGS_GROUP);
|
||||||
if (settings.value(OVERLAP_POI_SETTING, true).toBool() == false)
|
if (settings.value(OVERLAP_POI_SETTING, true).toBool() == false)
|
||||||
_track->setPOIOverlap(false);
|
_pathView->setPOIOverlap(false);
|
||||||
else
|
else
|
||||||
_overlapPOIAction->setChecked(true);
|
_overlapPOIAction->setChecked(true);
|
||||||
if (settings.value(LABELS_POI_SETTING, true).toBool() == false)
|
if (settings.value(LABELS_POI_SETTING, true).toBool() == false)
|
||||||
_track->showPOILabels(false);
|
_pathView->showPOILabels(false);
|
||||||
else
|
else
|
||||||
_showPOILabelsAction->setChecked(true);
|
_showPOILabelsAction->setChecked(true);
|
||||||
if (settings.value(SHOW_POI_SETTING, false).toBool() == true)
|
if (settings.value(SHOW_POI_SETTING, false).toBool() == true)
|
||||||
@ -1304,27 +1304,27 @@ void GUI::readSettings()
|
|||||||
|
|
||||||
settings.beginGroup(DATA_SETTINGS_GROUP);
|
settings.beginGroup(DATA_SETTINGS_GROUP);
|
||||||
if (settings.value(SHOW_TRACKS_SETTING, true).toBool() == false) {
|
if (settings.value(SHOW_TRACKS_SETTING, true).toBool() == false) {
|
||||||
_track->showTracks(false);
|
_pathView->showTracks(false);
|
||||||
for (int i = 0; i < _tabs.count(); i++)
|
for (int i = 0; i < _tabs.count(); i++)
|
||||||
_tabs.at(i)->showTracks(false);
|
_tabs.at(i)->showTracks(false);
|
||||||
} else
|
} else
|
||||||
_showTracksAction->setChecked(true);
|
_showTracksAction->setChecked(true);
|
||||||
if (settings.value(SHOW_ROUTES_SETTING, true).toBool() == false) {
|
if (settings.value(SHOW_ROUTES_SETTING, true).toBool() == false) {
|
||||||
_track->showRoutes(false);
|
_pathView->showRoutes(false);
|
||||||
for (int i = 0; i < _tabs.count(); i++)
|
for (int i = 0; i < _tabs.count(); i++)
|
||||||
_tabs.at(i)->showRoutes(false);
|
_tabs.at(i)->showRoutes(false);
|
||||||
} else
|
} else
|
||||||
_showRoutesAction->setChecked(true);
|
_showRoutesAction->setChecked(true);
|
||||||
if (settings.value(SHOW_WAYPOINTS_SETTING, true).toBool() == false)
|
if (settings.value(SHOW_WAYPOINTS_SETTING, true).toBool() == false)
|
||||||
_track->showWaypoints(false);
|
_pathView->showWaypoints(false);
|
||||||
else
|
else
|
||||||
_showWaypointsAction->setChecked(true);
|
_showWaypointsAction->setChecked(true);
|
||||||
if (settings.value(SHOW_WAYPOINT_LABELS_SETTING, true).toBool() == false)
|
if (settings.value(SHOW_WAYPOINT_LABELS_SETTING, true).toBool() == false)
|
||||||
_track->showWaypointLabels(false);
|
_pathView->showWaypointLabels(false);
|
||||||
else
|
else
|
||||||
_showWaypointLabelsAction->setChecked(true);
|
_showWaypointLabelsAction->setChecked(true);
|
||||||
if (settings.value(SHOW_ROUTE_WAYPOINTS_SETTING, true).toBool() == false)
|
if (settings.value(SHOW_ROUTE_WAYPOINTS_SETTING, true).toBool() == false)
|
||||||
_track->showRouteWaypoints(false);
|
_pathView->showRouteWaypoints(false);
|
||||||
else
|
else
|
||||||
_showRouteWaypointsAction->setChecked(true);
|
_showRouteWaypointsAction->setChecked(true);
|
||||||
settings.endGroup();
|
settings.endGroup();
|
||||||
|
@ -21,7 +21,7 @@ class QSignalMapper;
|
|||||||
class QPrinter;
|
class QPrinter;
|
||||||
class FileBrowser;
|
class FileBrowser;
|
||||||
class GraphTab;
|
class GraphTab;
|
||||||
class TrackView;
|
class PathView;
|
||||||
class Map;
|
class Map;
|
||||||
|
|
||||||
class GUI : public QMainWindow
|
class GUI : public QMainWindow
|
||||||
@ -162,7 +162,7 @@ private:
|
|||||||
QLabel *_distanceLabel;
|
QLabel *_distanceLabel;
|
||||||
QLabel *_timeLabel;
|
QLabel *_timeLabel;
|
||||||
|
|
||||||
TrackView *_track;
|
PathView *_pathView;
|
||||||
QTabWidget *_trackGraphs;
|
QTabWidget *_trackGraphs;
|
||||||
QList<GraphTab*> _tabs;
|
QList<GraphTab*> _tabs;
|
||||||
|
|
||||||
|
104
src/pathitem.cpp
Normal file
104
src/pathitem.cpp
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#include <QApplication>
|
||||||
|
#include <QCursor>
|
||||||
|
#include <QPainter>
|
||||||
|
#include "tooltip.h"
|
||||||
|
#include "pathitem.h"
|
||||||
|
|
||||||
|
|
||||||
|
#define PATH_WIDTH 3
|
||||||
|
#define HOVER_WIDTH 4
|
||||||
|
|
||||||
|
void PathItem::updateShape()
|
||||||
|
{
|
||||||
|
QPainterPathStroker s;
|
||||||
|
s.setWidth(HOVER_WIDTH * 1.0/scale());
|
||||||
|
_shape = s.createStroke(_path);
|
||||||
|
|
||||||
|
if (qMax(boundingRect().width(), boundingRect().height()) * scale() <= 768)
|
||||||
|
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
|
||||||
|
else
|
||||||
|
setCacheMode(QGraphicsItem::NoCache);
|
||||||
|
}
|
||||||
|
|
||||||
|
PathItem::PathItem(QGraphicsItem *parent) : QGraphicsObject(parent)
|
||||||
|
{
|
||||||
|
QBrush brush(Qt::SolidPattern);
|
||||||
|
_pen = QPen(brush, PATH_WIDTH);
|
||||||
|
|
||||||
|
_units = Metric;
|
||||||
|
|
||||||
|
_marker = new MarkerItem(this);
|
||||||
|
|
||||||
|
setCursor(Qt::ArrowCursor);
|
||||||
|
setAcceptHoverEvents(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PathItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||||
|
QWidget *widget)
|
||||||
|
{
|
||||||
|
Q_UNUSED(option);
|
||||||
|
Q_UNUSED(widget);
|
||||||
|
|
||||||
|
painter->setPen(_pen);
|
||||||
|
painter->drawPath(_path);
|
||||||
|
|
||||||
|
/*
|
||||||
|
QPen p = QPen(QBrush(Qt::red), 0);
|
||||||
|
painter->setPen(p);
|
||||||
|
painter->drawRect(boundingRect());
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
void PathItem::setScale(qreal scale)
|
||||||
|
{
|
||||||
|
prepareGeometryChange();
|
||||||
|
|
||||||
|
_pen.setWidthF(PATH_WIDTH * 1.0/scale);
|
||||||
|
QGraphicsItem::setScale(scale);
|
||||||
|
_marker->setScale(1.0/scale);
|
||||||
|
|
||||||
|
updateShape();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PathItem::setColor(const QColor &color)
|
||||||
|
{
|
||||||
|
_pen.setColor(color);
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void PathItem::setUnits(enum Units units)
|
||||||
|
{
|
||||||
|
_units = units;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PathItem::moveMarker(qreal distance)
|
||||||
|
{
|
||||||
|
if (distance > _distance)
|
||||||
|
_marker->setVisible(false);
|
||||||
|
else {
|
||||||
|
_marker->setVisible(true);
|
||||||
|
_marker->setPos(_path.pointAtPercent(distance / _distance));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void PathItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(event);
|
||||||
|
|
||||||
|
_pen.setWidthF(HOVER_WIDTH * 1.0/scale());
|
||||||
|
setZValue(zValue() + 1.0);
|
||||||
|
update();
|
||||||
|
|
||||||
|
emit selected(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PathItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
||||||
|
{
|
||||||
|
Q_UNUSED(event);
|
||||||
|
|
||||||
|
_pen.setWidthF(PATH_WIDTH * 1.0/scale());
|
||||||
|
setZValue(zValue() - 1.0);
|
||||||
|
update();
|
||||||
|
|
||||||
|
emit selected(false);
|
||||||
|
}
|
@ -2,21 +2,50 @@
|
|||||||
#define PATHITEM_H
|
#define PATHITEM_H
|
||||||
|
|
||||||
#include <QGraphicsObject>
|
#include <QGraphicsObject>
|
||||||
|
#include <QPen>
|
||||||
|
#include "markeritem.h"
|
||||||
#include "units.h"
|
#include "units.h"
|
||||||
|
|
||||||
|
|
||||||
class PathItem : public QGraphicsObject
|
class PathItem : public QGraphicsObject
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PathItem(QGraphicsItem *parent = 0) : QGraphicsObject(parent) {}
|
PathItem(QGraphicsItem *parent = 0);
|
||||||
virtual void showMarker(bool show) = 0;
|
|
||||||
|
QPainterPath shape() const {return _shape;}
|
||||||
|
QRectF boundingRect() const {return _shape.boundingRect();}
|
||||||
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||||
|
QWidget *widget);
|
||||||
|
|
||||||
|
const QPainterPath &path() const {return _path;}
|
||||||
|
void showMarker(bool show) {_marker->setVisible(show);}
|
||||||
|
void setScale(qreal scale);
|
||||||
|
void setUnits(enum Units units);
|
||||||
|
void setColor(const QColor &color);
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
virtual void moveMarker(qreal distance) = 0;
|
void moveMarker(qreal distance);
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void selected(bool);
|
void selected(bool);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void updateShape();
|
||||||
|
|
||||||
|
QPainterPath _path;
|
||||||
|
QPainterPath _shape;
|
||||||
|
QPen _pen;
|
||||||
|
|
||||||
|
MarkerItem *_marker;
|
||||||
|
|
||||||
|
Units _units;
|
||||||
|
qreal _distance;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
|
||||||
|
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PATHITEM_H
|
#endif // PATHITEM_H
|
||||||
|
@ -9,13 +9,13 @@
|
|||||||
#include "routeitem.h"
|
#include "routeitem.h"
|
||||||
#include "waypointitem.h"
|
#include "waypointitem.h"
|
||||||
#include "scaleitem.h"
|
#include "scaleitem.h"
|
||||||
#include "trackview.h"
|
#include "pathview.h"
|
||||||
|
|
||||||
|
|
||||||
#define MARGIN 10.0
|
#define MARGIN 10.0
|
||||||
#define SCALE_OFFSET 7
|
#define SCALE_OFFSET 7
|
||||||
|
|
||||||
TrackView::TrackView(QWidget *parent)
|
PathView::PathView(QWidget *parent)
|
||||||
: QGraphicsView(parent)
|
: QGraphicsView(parent)
|
||||||
{
|
{
|
||||||
_scene = new QGraphicsScene(this);
|
_scene = new QGraphicsScene(this);
|
||||||
@ -47,13 +47,13 @@ TrackView::TrackView(QWidget *parent)
|
|||||||
_plot = false;
|
_plot = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
TrackView::~TrackView()
|
PathView::~PathView()
|
||||||
{
|
{
|
||||||
if (_mapScale->scene() != _scene)
|
if (_mapScale->scene() != _scene)
|
||||||
delete _mapScale;
|
delete _mapScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
PathItem *TrackView::addTrack(const Track &track)
|
PathItem *PathView::addTrack(const Track &track)
|
||||||
{
|
{
|
||||||
if (track.isNull()) {
|
if (track.isNull()) {
|
||||||
_palette.color();
|
_palette.color();
|
||||||
@ -72,7 +72,7 @@ PathItem *TrackView::addTrack(const Track &track)
|
|||||||
return ti;
|
return ti;
|
||||||
}
|
}
|
||||||
|
|
||||||
PathItem *TrackView::addRoute(const Route &route)
|
PathItem *PathView::addRoute(const Route &route)
|
||||||
{
|
{
|
||||||
if (route.isNull()) {
|
if (route.isNull()) {
|
||||||
_palette.color();
|
_palette.color();
|
||||||
@ -93,7 +93,7 @@ PathItem *TrackView::addRoute(const Route &route)
|
|||||||
return ri;
|
return ri;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::addWaypoints(const QList<Waypoint> &waypoints)
|
void PathView::addWaypoints(const QList<Waypoint> &waypoints)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < waypoints.count(); i++) {
|
for (int i = 0; i < waypoints.count(); i++) {
|
||||||
const Waypoint &w = waypoints.at(i);
|
const Waypoint &w = waypoints.at(i);
|
||||||
@ -112,7 +112,7 @@ void TrackView::addWaypoints(const QList<Waypoint> &waypoints)
|
|||||||
_scale = mapScale(_zoom);
|
_scale = mapScale(_zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<PathItem *> TrackView::loadGPX(const GPX &gpx)
|
QList<PathItem *> PathView::loadGPX(const GPX &gpx)
|
||||||
{
|
{
|
||||||
QList<PathItem *> paths;
|
QList<PathItem *> paths;
|
||||||
PathItem *pi;
|
PathItem *pi;
|
||||||
@ -149,7 +149,7 @@ QList<PathItem *> TrackView::loadGPX(const GPX &gpx)
|
|||||||
return paths;
|
return paths;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF TrackView::trackBoundingRect() const
|
QRectF PathView::trackBoundingRect() const
|
||||||
{
|
{
|
||||||
if (_tracks.empty())
|
if (_tracks.empty())
|
||||||
return QRectF();
|
return QRectF();
|
||||||
@ -161,7 +161,7 @@ QRectF TrackView::trackBoundingRect() const
|
|||||||
return br;
|
return br;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF TrackView::routeBoundingRect() const
|
QRectF PathView::routeBoundingRect() const
|
||||||
{
|
{
|
||||||
if (_routes.empty())
|
if (_routes.empty())
|
||||||
return QRectF();
|
return QRectF();
|
||||||
@ -173,7 +173,7 @@ QRectF TrackView::routeBoundingRect() const
|
|||||||
return br;
|
return br;
|
||||||
}
|
}
|
||||||
|
|
||||||
QRectF TrackView::waypointBoundingRect() const
|
QRectF PathView::waypointBoundingRect() const
|
||||||
{
|
{
|
||||||
qreal bottom, top, left, right;
|
qreal bottom, top, left, right;
|
||||||
|
|
||||||
@ -197,7 +197,7 @@ QRectF TrackView::waypointBoundingRect() const
|
|||||||
return QRectF(QPointF(left, top), QPointF(right, bottom));
|
return QRectF(QPointF(left, top), QPointF(right, bottom));
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal TrackView::trackScale() const
|
qreal PathView::trackScale() const
|
||||||
{
|
{
|
||||||
if (_tracks.empty())
|
if (_tracks.empty())
|
||||||
return mapScale(ZOOM_MAX);
|
return mapScale(ZOOM_MAX);
|
||||||
@ -213,7 +213,7 @@ qreal TrackView::trackScale() const
|
|||||||
return qMax(sc.x(), sc.y());
|
return qMax(sc.x(), sc.y());
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal TrackView::routeScale() const
|
qreal PathView::routeScale() const
|
||||||
{
|
{
|
||||||
if (_routes.empty())
|
if (_routes.empty())
|
||||||
return mapScale(ZOOM_MAX);
|
return mapScale(ZOOM_MAX);
|
||||||
@ -229,7 +229,7 @@ qreal TrackView::routeScale() const
|
|||||||
return qMax(sc.x(), sc.y());
|
return qMax(sc.x(), sc.y());
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal TrackView::waypointScale() const
|
qreal PathView::waypointScale() const
|
||||||
{
|
{
|
||||||
qreal bottom, top, left, right;
|
qreal bottom, top, left, right;
|
||||||
|
|
||||||
@ -257,12 +257,12 @@ qreal TrackView::waypointScale() const
|
|||||||
return qMax(sc.x(), sc.y());
|
return qMax(sc.x(), sc.y());
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal TrackView::mapScale(int zoom) const
|
qreal PathView::mapScale(int zoom) const
|
||||||
{
|
{
|
||||||
return ((360.0/(qreal)(1<<zoom))/(qreal)TILE_SIZE);
|
return ((360.0/(qreal)(1<<zoom))/(qreal)TILE_SIZE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::checkPOIOverlap()
|
void PathView::checkPOIOverlap()
|
||||||
{
|
{
|
||||||
QHash<Waypoint, WaypointItem*>::const_iterator it, jt;
|
QHash<Waypoint, WaypointItem*>::const_iterator it, jt;
|
||||||
|
|
||||||
@ -275,7 +275,7 @@ void TrackView::checkPOIOverlap()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::rescale(qreal scale)
|
void PathView::rescale(qreal scale)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < _tracks.size(); i++)
|
for (int i = 0; i < _tracks.size(); i++)
|
||||||
_tracks.at(i)->setScale(1.0/scale);
|
_tracks.at(i)->setScale(1.0/scale);
|
||||||
@ -298,7 +298,7 @@ void TrackView::rescale(qreal scale)
|
|||||||
_scale = scale;
|
_scale = scale;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::addPOI(const QVector<Waypoint> &waypoints)
|
void PathView::addPOI(const QVector<Waypoint> &waypoints)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < waypoints.size(); i++) {
|
for (int i = 0; i < waypoints.size(); i++) {
|
||||||
const Waypoint &w = waypoints.at(i);
|
const Waypoint &w = waypoints.at(i);
|
||||||
@ -316,7 +316,7 @@ void TrackView::addPOI(const QVector<Waypoint> &waypoints)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::loadPOI(const POI &poi)
|
void PathView::loadPOI(const POI &poi)
|
||||||
{
|
{
|
||||||
if (!_tracks.size() && !_routes.size() && !_waypoints.size())
|
if (!_tracks.size() && !_routes.size() && !_waypoints.size())
|
||||||
return;
|
return;
|
||||||
@ -331,7 +331,7 @@ void TrackView::loadPOI(const POI &poi)
|
|||||||
checkPOIOverlap();
|
checkPOIOverlap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::setMap(Map *map)
|
void PathView::setMap(Map *map)
|
||||||
{
|
{
|
||||||
_map = map;
|
_map = map;
|
||||||
if (_map)
|
if (_map)
|
||||||
@ -340,7 +340,7 @@ void TrackView::setMap(Map *map)
|
|||||||
resetCachedContent();
|
resetCachedContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::setUnits(enum Units units)
|
void PathView::setUnits(enum Units units)
|
||||||
{
|
{
|
||||||
_units = units;
|
_units = units;
|
||||||
|
|
||||||
@ -358,12 +358,12 @@ void TrackView::setUnits(enum Units units)
|
|||||||
it.value()->setUnits(units);
|
it.value()->setUnits(units);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::redraw()
|
void PathView::redraw()
|
||||||
{
|
{
|
||||||
resetCachedContent();
|
resetCachedContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::rescale()
|
void PathView::rescale()
|
||||||
{
|
{
|
||||||
_zoom = qMin(qMin(scale2zoom(trackScale()), scale2zoom(routeScale())),
|
_zoom = qMin(qMin(scale2zoom(trackScale()), scale2zoom(routeScale())),
|
||||||
scale2zoom(waypointScale()));
|
scale2zoom(waypointScale()));
|
||||||
@ -372,7 +372,7 @@ void TrackView::rescale()
|
|||||||
_mapScale->setZoom(_zoom);
|
_mapScale->setZoom(_zoom);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::zoom(int z, const QPointF &pos)
|
void PathView::zoom(int z, const QPointF &pos)
|
||||||
{
|
{
|
||||||
if (_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
if (_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
||||||
return;
|
return;
|
||||||
@ -397,7 +397,7 @@ void TrackView::zoom(int z, const QPointF &pos)
|
|||||||
resetCachedContent();
|
resetCachedContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::wheelEvent(QWheelEvent *event)
|
void PathView::wheelEvent(QWheelEvent *event)
|
||||||
{
|
{
|
||||||
if (_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
if (_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
||||||
return;
|
return;
|
||||||
@ -409,7 +409,7 @@ void TrackView::wheelEvent(QWheelEvent *event)
|
|||||||
zoom(z, pos);
|
zoom(z, pos);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::keyPressEvent(QKeyEvent *event)
|
void PathView::keyPressEvent(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
int z = -1;
|
int z = -1;
|
||||||
|
|
||||||
@ -424,7 +424,7 @@ void TrackView::keyPressEvent(QKeyEvent *event)
|
|||||||
QWidget::keyPressEvent(event);
|
QWidget::keyPressEvent(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::plot(QPainter *painter, const QRectF &target)
|
void PathView::plot(QPainter *painter, const QRectF &target)
|
||||||
{
|
{
|
||||||
QRect orig, adj;
|
QRect orig, adj;
|
||||||
qreal ratio, diff;
|
qreal ratio, diff;
|
||||||
@ -458,7 +458,7 @@ void TrackView::plot(QPainter *painter, const QRectF &target)
|
|||||||
setUpdatesEnabled(true);
|
setUpdatesEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::clearPOI()
|
void PathView::clearPOI()
|
||||||
{
|
{
|
||||||
QHash<Waypoint, WaypointItem*>::const_iterator it;
|
QHash<Waypoint, WaypointItem*>::const_iterator it;
|
||||||
|
|
||||||
@ -470,7 +470,7 @@ void TrackView::clearPOI()
|
|||||||
_pois.clear();
|
_pois.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::clear()
|
void PathView::clear()
|
||||||
{
|
{
|
||||||
if (_mapScale->scene() == _scene)
|
if (_mapScale->scene() == _scene)
|
||||||
_scene->removeItem(_mapScale);
|
_scene->removeItem(_mapScale);
|
||||||
@ -488,7 +488,7 @@ void TrackView::clear()
|
|||||||
_scene->setSceneRect(QRectF());
|
_scene->setSceneRect(QRectF());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::showTracks(bool show)
|
void PathView::showTracks(bool show)
|
||||||
{
|
{
|
||||||
_showTracks = show;
|
_showTracks = show;
|
||||||
|
|
||||||
@ -496,7 +496,7 @@ void TrackView::showTracks(bool show)
|
|||||||
_tracks.at(i)->setVisible(show);
|
_tracks.at(i)->setVisible(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::showRoutes(bool show)
|
void PathView::showRoutes(bool show)
|
||||||
{
|
{
|
||||||
_showRoutes = show;
|
_showRoutes = show;
|
||||||
|
|
||||||
@ -504,7 +504,7 @@ void TrackView::showRoutes(bool show)
|
|||||||
_routes.at(i)->setVisible(show);
|
_routes.at(i)->setVisible(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::showWaypoints(bool show)
|
void PathView::showWaypoints(bool show)
|
||||||
{
|
{
|
||||||
_showWaypoints = show;
|
_showWaypoints = show;
|
||||||
|
|
||||||
@ -512,7 +512,7 @@ void TrackView::showWaypoints(bool show)
|
|||||||
_waypoints.at(i)->setVisible(show);
|
_waypoints.at(i)->setVisible(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::showWaypointLabels(bool show)
|
void PathView::showWaypointLabels(bool show)
|
||||||
{
|
{
|
||||||
_showWaypointLabels = show;
|
_showWaypointLabels = show;
|
||||||
|
|
||||||
@ -523,7 +523,7 @@ void TrackView::showWaypointLabels(bool show)
|
|||||||
_routes.at(i)->showWaypointLabels(show);
|
_routes.at(i)->showWaypointLabels(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::showRouteWaypoints(bool show)
|
void PathView::showRouteWaypoints(bool show)
|
||||||
{
|
{
|
||||||
_showRouteWaypoints = show;
|
_showRouteWaypoints = show;
|
||||||
|
|
||||||
@ -531,7 +531,7 @@ void TrackView::showRouteWaypoints(bool show)
|
|||||||
_routes.at(i)->showWaypoints(show);
|
_routes.at(i)->showWaypoints(show);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::showPOILabels(bool show)
|
void PathView::showPOILabels(bool show)
|
||||||
{
|
{
|
||||||
_showPOILabels = show;
|
_showPOILabels = show;
|
||||||
|
|
||||||
@ -542,7 +542,7 @@ void TrackView::showPOILabels(bool show)
|
|||||||
setPOIOverlap(_overlapPOIs);
|
setPOIOverlap(_overlapPOIs);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::setPOIOverlap(bool overlap)
|
void PathView::setPOIOverlap(bool overlap)
|
||||||
{
|
{
|
||||||
_overlapPOIs = overlap;
|
_overlapPOIs = overlap;
|
||||||
|
|
||||||
@ -554,7 +554,7 @@ void TrackView::setPOIOverlap(bool overlap)
|
|||||||
checkPOIOverlap();
|
checkPOIOverlap();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::drawBackground(QPainter *painter, const QRectF &rect)
|
void PathView::drawBackground(QPainter *painter, const QRectF &rect)
|
||||||
{
|
{
|
||||||
if ((_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
if ((_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
||||||
|| !_map) {
|
|| !_map) {
|
||||||
@ -586,7 +586,7 @@ void TrackView::drawBackground(QPainter *painter, const QRectF &rect)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::resizeEvent(QResizeEvent *e)
|
void PathView::resizeEvent(QResizeEvent *e)
|
||||||
{
|
{
|
||||||
if (_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
if (_tracks.isEmpty() && _routes.isEmpty() && _waypoints.isEmpty())
|
||||||
return;
|
return;
|
||||||
@ -612,7 +612,7 @@ void TrackView::resizeEvent(QResizeEvent *e)
|
|||||||
resetCachedContent();
|
resetCachedContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackView::paintEvent(QPaintEvent *e)
|
void PathView::paintEvent(QPaintEvent *e)
|
||||||
{
|
{
|
||||||
QPointF scenePos = mapToScene(rect().bottomRight() + QPoint(
|
QPointF scenePos = mapToScene(rect().bottomRight() + QPoint(
|
||||||
-(SCALE_OFFSET + _mapScale->boundingRect().width()),
|
-(SCALE_OFFSET + _mapScale->boundingRect().width()),
|
@ -20,13 +20,13 @@ class WaypointItem;
|
|||||||
class ScaleItem;
|
class ScaleItem;
|
||||||
class PathItem;
|
class PathItem;
|
||||||
|
|
||||||
class TrackView : public QGraphicsView
|
class PathView : public QGraphicsView
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TrackView(QWidget *parent = 0);
|
PathView(QWidget *parent = 0);
|
||||||
~TrackView();
|
~PathView();
|
||||||
|
|
||||||
QList<PathItem*> loadGPX(const GPX &gpx);
|
QList<PathItem*> loadGPX(const GPX &gpx);
|
||||||
|
|
@ -8,9 +8,6 @@
|
|||||||
#include "routeitem.h"
|
#include "routeitem.h"
|
||||||
|
|
||||||
|
|
||||||
#define ROUTE_WIDTH 3
|
|
||||||
#define HOVER_WIDTH 4
|
|
||||||
|
|
||||||
QString RouteItem::toolTip()
|
QString RouteItem::toolTip()
|
||||||
{
|
{
|
||||||
ToolTip tt;
|
ToolTip tt;
|
||||||
@ -21,18 +18,6 @@ QString RouteItem::toolTip()
|
|||||||
return tt.toString();
|
return tt.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouteItem::updateShape()
|
|
||||||
{
|
|
||||||
QPainterPathStroker s;
|
|
||||||
s.setWidth(HOVER_WIDTH * 1.0/scale());
|
|
||||||
_shape = s.createStroke(_path);
|
|
||||||
|
|
||||||
if (qMax(boundingRect().width(), boundingRect().height()) * scale() <= 768)
|
|
||||||
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
|
|
||||||
else
|
|
||||||
setCacheMode(QGraphicsItem::NoCache);
|
|
||||||
}
|
|
||||||
|
|
||||||
RouteItem::RouteItem(const Route &route, QGraphicsItem *parent)
|
RouteItem::RouteItem(const Route &route, QGraphicsItem *parent)
|
||||||
: PathItem(parent)
|
: PathItem(parent)
|
||||||
{
|
{
|
||||||
@ -48,74 +33,32 @@ RouteItem::RouteItem(const Route &route, QGraphicsItem *parent)
|
|||||||
new WaypointItem(r.at(i), this);
|
new WaypointItem(r.at(i), this);
|
||||||
}
|
}
|
||||||
|
|
||||||
_units = Metric;
|
|
||||||
_distance = route.distance();
|
|
||||||
|
|
||||||
setToolTip(toolTip());
|
|
||||||
setCursor(Qt::ArrowCursor);
|
|
||||||
setAcceptHoverEvents(true);
|
|
||||||
|
|
||||||
updateShape();
|
updateShape();
|
||||||
|
|
||||||
QBrush brush(Qt::SolidPattern);
|
_distance = route.distance();
|
||||||
_pen = QPen(brush, ROUTE_WIDTH, Qt::DotLine);
|
|
||||||
|
|
||||||
_marker = new MarkerItem(this);
|
|
||||||
_marker->setPos(_path.pointAtPercent(0));
|
_marker->setPos(_path.pointAtPercent(0));
|
||||||
}
|
|
||||||
|
|
||||||
void RouteItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
_pen.setStyle(Qt::DotLine);
|
||||||
QWidget *widget)
|
|
||||||
{
|
|
||||||
Q_UNUSED(option);
|
|
||||||
Q_UNUSED(widget);
|
|
||||||
|
|
||||||
painter->setPen(_pen);
|
setToolTip(toolTip());
|
||||||
painter->drawPath(_path);
|
|
||||||
|
|
||||||
/*
|
|
||||||
QPen p = QPen(QBrush(Qt::red), 0);
|
|
||||||
painter->setPen(p);
|
|
||||||
painter->drawRect(boundingRect());
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouteItem::setScale(qreal scale)
|
void RouteItem::setScale(qreal scale)
|
||||||
{
|
{
|
||||||
prepareGeometryChange();
|
|
||||||
|
|
||||||
_pen.setWidthF(ROUTE_WIDTH * 1.0/scale);
|
|
||||||
QGraphicsItem::setScale(scale);
|
|
||||||
|
|
||||||
QList<QGraphicsItem *> childs = childItems();
|
QList<QGraphicsItem *> childs = childItems();
|
||||||
for (int i = 0; i < childs.count(); i++)
|
for (int i = 0; i < childs.count(); i++)
|
||||||
childs.at(i)->setScale(1.0/scale);
|
childs.at(i)->setScale(1.0/scale);
|
||||||
|
|
||||||
updateShape();
|
PathItem::setScale(scale);
|
||||||
}
|
|
||||||
|
|
||||||
void RouteItem::setColor(const QColor &color)
|
|
||||||
{
|
|
||||||
_pen.setColor(color);
|
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouteItem::setUnits(enum Units units)
|
void RouteItem::setUnits(enum Units units)
|
||||||
{
|
{
|
||||||
_units = units;
|
PathItem::setUnits(units);
|
||||||
setToolTip(toolTip());
|
setToolTip(toolTip());
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouteItem::moveMarker(qreal distance)
|
|
||||||
{
|
|
||||||
if (distance > _distance)
|
|
||||||
_marker->setVisible(false);
|
|
||||||
else {
|
|
||||||
_marker->setVisible(true);
|
|
||||||
_marker->setPos(_path.pointAtPercent(distance / _distance));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void RouteItem::showWaypoints(bool show)
|
void RouteItem::showWaypoints(bool show)
|
||||||
{
|
{
|
||||||
QList<QGraphicsItem *> childs = childItems();
|
QList<QGraphicsItem *> childs = childItems();
|
||||||
@ -134,25 +77,3 @@ void RouteItem::showWaypointLabels(bool show)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void RouteItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
|
||||||
{
|
|
||||||
Q_UNUSED(event);
|
|
||||||
|
|
||||||
_pen.setWidthF(HOVER_WIDTH * 1.0/scale());
|
|
||||||
setZValue(zValue() + 1.0);
|
|
||||||
update();
|
|
||||||
|
|
||||||
emit selected(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void RouteItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
|
||||||
{
|
|
||||||
Q_UNUSED(event);
|
|
||||||
|
|
||||||
_pen.setWidthF(ROUTE_WIDTH * 1.0/scale());
|
|
||||||
setZValue(zValue() - 1.0);
|
|
||||||
update();
|
|
||||||
|
|
||||||
emit selected(false);
|
|
||||||
}
|
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
#ifndef ROUTEITEM_H
|
#ifndef ROUTEITEM_H
|
||||||
#define ROUTEITEM_H
|
#define ROUTEITEM_H
|
||||||
|
|
||||||
#include <QPen>
|
|
||||||
#include "pathitem.h"
|
#include "pathitem.h"
|
||||||
#include "markeritem.h"
|
|
||||||
#include "route.h"
|
#include "route.h"
|
||||||
#include "units.h"
|
|
||||||
|
|
||||||
|
|
||||||
class RouteItem : public PathItem
|
class RouteItem : public PathItem
|
||||||
@ -15,38 +12,14 @@ class RouteItem : public PathItem
|
|||||||
public:
|
public:
|
||||||
RouteItem(const Route &route, QGraphicsItem *parent = 0);
|
RouteItem(const Route &route, QGraphicsItem *parent = 0);
|
||||||
|
|
||||||
QPainterPath shape() const {return _shape;}
|
|
||||||
QRectF boundingRect() const {return _shape.boundingRect();}
|
|
||||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
||||||
QWidget *widget);
|
|
||||||
|
|
||||||
const QPainterPath &path() const {return _path;}
|
|
||||||
|
|
||||||
void setScale(qreal scale);
|
|
||||||
void setColor(const QColor &color);
|
|
||||||
void setUnits(enum Units units);
|
void setUnits(enum Units units);
|
||||||
|
void setScale(qreal scale);
|
||||||
void showMarker(bool show) {_marker->setVisible(show);}
|
|
||||||
void moveMarker(qreal distance);
|
|
||||||
|
|
||||||
void showWaypoints(bool show);
|
void showWaypoints(bool show);
|
||||||
void showWaypointLabels(bool show);
|
void showWaypointLabels(bool show);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
|
|
||||||
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
|
|
||||||
|
|
||||||
void updateShape();
|
|
||||||
QString toolTip();
|
QString toolTip();
|
||||||
|
|
||||||
QPainterPath _path;
|
|
||||||
QPainterPath _shape;
|
|
||||||
QPen _pen;
|
|
||||||
|
|
||||||
MarkerItem *_marker;
|
|
||||||
|
|
||||||
Units _units;
|
|
||||||
qreal _distance;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // ROUTEITEM_H
|
#endif // ROUTEITEM_H
|
||||||
|
@ -7,9 +7,6 @@
|
|||||||
#include "trackitem.h"
|
#include "trackitem.h"
|
||||||
|
|
||||||
|
|
||||||
#define TRACK_WIDTH 3
|
|
||||||
#define HOVER_WIDTH 4
|
|
||||||
|
|
||||||
QString TrackItem::toolTip()
|
QString TrackItem::toolTip()
|
||||||
{
|
{
|
||||||
ToolTip tt;
|
ToolTip tt;
|
||||||
@ -25,18 +22,6 @@ QString TrackItem::toolTip()
|
|||||||
return tt.toString();
|
return tt.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackItem::updateShape()
|
|
||||||
{
|
|
||||||
QPainterPathStroker s;
|
|
||||||
s.setWidth(HOVER_WIDTH * 1.0/scale());
|
|
||||||
_shape = s.createStroke(_path);
|
|
||||||
|
|
||||||
if (qMax(boundingRect().width(), boundingRect().height()) * scale() <= 768)
|
|
||||||
setCacheMode(QGraphicsItem::DeviceCoordinateCache);
|
|
||||||
else
|
|
||||||
setCacheMode(QGraphicsItem::NoCache);
|
|
||||||
}
|
|
||||||
|
|
||||||
TrackItem::TrackItem(const Track &track, QGraphicsItem *parent)
|
TrackItem::TrackItem(const Track &track, QGraphicsItem *parent)
|
||||||
: PathItem(parent)
|
: PathItem(parent)
|
||||||
{
|
{
|
||||||
@ -50,91 +35,19 @@ TrackItem::TrackItem(const Track &track, QGraphicsItem *parent)
|
|||||||
_path.lineTo(ll2mercator(QPointF(p.x(), -p.y())));
|
_path.lineTo(ll2mercator(QPointF(p.x(), -p.y())));
|
||||||
}
|
}
|
||||||
|
|
||||||
_units = Metric;
|
updateShape();
|
||||||
|
|
||||||
_date = track.date();
|
_date = track.date();
|
||||||
_distance = track.distance();
|
_distance = track.distance();
|
||||||
_time = track.time();
|
_time = track.time();
|
||||||
|
|
||||||
setToolTip(toolTip());
|
|
||||||
setCursor(Qt::ArrowCursor);
|
|
||||||
setAcceptHoverEvents(true);
|
|
||||||
|
|
||||||
updateShape();
|
|
||||||
|
|
||||||
QBrush brush(Qt::SolidPattern);
|
|
||||||
_pen = QPen(brush, TRACK_WIDTH);
|
|
||||||
|
|
||||||
_marker = new MarkerItem(this);
|
|
||||||
_marker->setPos(_path.pointAtPercent(0));
|
_marker->setPos(_path.pointAtPercent(0));
|
||||||
}
|
|
||||||
|
|
||||||
void TrackItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
setToolTip(toolTip());
|
||||||
QWidget *widget)
|
|
||||||
{
|
|
||||||
Q_UNUSED(option);
|
|
||||||
Q_UNUSED(widget);
|
|
||||||
|
|
||||||
painter->setPen(_pen);
|
|
||||||
painter->drawPath(_path);
|
|
||||||
|
|
||||||
/*
|
|
||||||
QPen p = QPen(QBrush(Qt::red), 0);
|
|
||||||
painter->setPen(p);
|
|
||||||
painter->drawRect(boundingRect());
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
void TrackItem::setScale(qreal scale)
|
|
||||||
{
|
|
||||||
prepareGeometryChange();
|
|
||||||
|
|
||||||
_pen.setWidthF(TRACK_WIDTH * 1.0/scale);
|
|
||||||
QGraphicsItem::setScale(scale);
|
|
||||||
_marker->setScale(1.0/scale);
|
|
||||||
|
|
||||||
updateShape();
|
|
||||||
}
|
|
||||||
|
|
||||||
void TrackItem::setColor(const QColor &color)
|
|
||||||
{
|
|
||||||
_pen.setColor(color);
|
|
||||||
update();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackItem::setUnits(enum Units units)
|
void TrackItem::setUnits(enum Units units)
|
||||||
{
|
{
|
||||||
_units = units;
|
PathItem::setUnits(units);
|
||||||
setToolTip(toolTip());
|
setToolTip(toolTip());
|
||||||
}
|
}
|
||||||
|
|
||||||
void TrackItem::moveMarker(qreal distance)
|
|
||||||
{
|
|
||||||
if (distance > _distance)
|
|
||||||
_marker->setVisible(false);
|
|
||||||
else {
|
|
||||||
_marker->setVisible(true);
|
|
||||||
_marker->setPos(_path.pointAtPercent(distance / _distance));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TrackItem::hoverEnterEvent(QGraphicsSceneHoverEvent *event)
|
|
||||||
{
|
|
||||||
Q_UNUSED(event);
|
|
||||||
|
|
||||||
_pen.setWidthF(HOVER_WIDTH * 1.0/scale());
|
|
||||||
setZValue(zValue() + 1.0);
|
|
||||||
update();
|
|
||||||
|
|
||||||
emit selected(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TrackItem::hoverLeaveEvent(QGraphicsSceneHoverEvent *event)
|
|
||||||
{
|
|
||||||
Q_UNUSED(event);
|
|
||||||
|
|
||||||
_pen.setWidthF(TRACK_WIDTH * 1.0/scale());
|
|
||||||
setZValue(zValue() - 1.0);
|
|
||||||
update();
|
|
||||||
|
|
||||||
emit selected(false);
|
|
||||||
}
|
|
||||||
|
@ -3,10 +3,8 @@
|
|||||||
|
|
||||||
#include <QDateTime>
|
#include <QDateTime>
|
||||||
#include <QPen>
|
#include <QPen>
|
||||||
#include "pathitem.h"
|
|
||||||
#include "units.h"
|
|
||||||
#include "track.h"
|
#include "track.h"
|
||||||
#include "markeritem.h"
|
#include "pathitem.h"
|
||||||
|
|
||||||
|
|
||||||
class TrackItem : public PathItem
|
class TrackItem : public PathItem
|
||||||
@ -16,37 +14,13 @@ class TrackItem : public PathItem
|
|||||||
public:
|
public:
|
||||||
TrackItem(const Track &track, QGraphicsItem *parent = 0);
|
TrackItem(const Track &track, QGraphicsItem *parent = 0);
|
||||||
|
|
||||||
QPainterPath shape() const {return _shape;}
|
|
||||||
QRectF boundingRect() const {return _shape.boundingRect();}
|
|
||||||
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|
||||||
QWidget *widget);
|
|
||||||
|
|
||||||
const QPainterPath &path() const {return _path;}
|
|
||||||
|
|
||||||
void setScale(qreal scale);
|
|
||||||
void setUnits(enum Units units);
|
void setUnits(enum Units units);
|
||||||
void setColor(const QColor &color);
|
|
||||||
|
|
||||||
void showMarker(bool show) {_marker->setVisible(show);}
|
|
||||||
void moveMarker(qreal distance);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void hoverEnterEvent(QGraphicsSceneHoverEvent *event);
|
|
||||||
void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
|
|
||||||
|
|
||||||
void updateShape();
|
|
||||||
QString toolTip();
|
QString toolTip();
|
||||||
|
|
||||||
QPainterPath _path;
|
|
||||||
QPainterPath _shape;
|
|
||||||
QPen _pen;
|
|
||||||
|
|
||||||
MarkerItem *_marker;
|
|
||||||
|
|
||||||
Units _units;
|
|
||||||
QDateTime _date;
|
QDateTime _date;
|
||||||
qreal _time;
|
qreal _time;
|
||||||
qreal _distance;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TRACKITEM_H
|
#endif // TRACKITEM_H
|
||||||
|
Loading…
Reference in New Issue
Block a user