From 3155e8436b72184432b8bd1d4f215a135e784623 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20T=C5=AFma?= Date: Wed, 4 Oct 2017 23:15:39 +0200 Subject: [PATCH] Optimization & code cleanup --- src/cadencegraph.cpp | 2 +- src/cadencegraphitem.cpp | 4 ++-- src/cadencegraphitem.h | 3 ++- src/elevationgraph.cpp | 16 ++++++-------- src/elevationgraph.h | 2 +- src/elevationgraphitem.cpp | 4 ++-- src/elevationgraphitem.h | 3 ++- src/graphitem.cpp | 13 ++++++++++-- src/graphitem.h | 7 +++--- src/graphtab.h | 3 ++- src/graphview.cpp | 15 +++++++------ src/graphview.h | 41 ++++++++++++++++++------------------ src/gui.cpp | 16 +++++--------- src/gui.h | 1 - src/heartrategraph.cpp | 2 +- src/heartrategraphitem.cpp | 4 ++-- src/heartrategraphitem.h | 3 ++- src/onlinemap.cpp | 12 +++++++++-- src/onlinemap.h | 3 +++ src/pathitem.cpp | 15 ++++++++++++- src/pathview.cpp | 14 ++++++++---- src/pathview.h | 4 ++-- src/powergraph.cpp | 2 +- src/powergraphitem.cpp | 4 ++-- src/powergraphitem.h | 3 ++- src/speedgraph.cpp | 17 +++++++-------- src/speedgraph.h | 2 +- src/speedgraphitem.cpp | 4 ++-- src/speedgraphitem.h | 2 +- src/temperaturegraph.cpp | 16 ++++++-------- src/temperaturegraph.h | 2 +- src/temperaturegraphitem.cpp | 4 ++-- src/temperaturegraphitem.h | 3 ++- 33 files changed, 141 insertions(+), 105 deletions(-) diff --git a/src/cadencegraph.cpp b/src/cadencegraph.cpp index 904a48c2..7bd32a43 100644 --- a/src/cadencegraph.cpp +++ b/src/cadencegraph.cpp @@ -34,7 +34,7 @@ void CadenceGraph::loadData(const Data &data, const QList &paths) continue; } - CadenceGraphItem *gi = new CadenceGraphItem(graph); + CadenceGraphItem *gi = new CadenceGraphItem(graph, _graphType); GraphView::addGraph(gi, paths.at(i)); _avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg())); diff --git a/src/cadencegraphitem.cpp b/src/cadencegraphitem.cpp index 90e0e7be..98cde7ab 100644 --- a/src/cadencegraphitem.cpp +++ b/src/cadencegraphitem.cpp @@ -1,8 +1,8 @@ #include "tooltip.h" #include "cadencegraphitem.h" -CadenceGraphItem::CadenceGraphItem(const Graph &graph, QGraphicsItem *parent) - : GraphItem(graph, parent) +CadenceGraphItem::CadenceGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent) : GraphItem(graph, type, parent) { qreal sum = 0; diff --git a/src/cadencegraphitem.h b/src/cadencegraphitem.h index 891d536a..b6342452 100644 --- a/src/cadencegraphitem.h +++ b/src/cadencegraphitem.h @@ -8,7 +8,8 @@ class CadenceGraphItem : public GraphItem Q_OBJECT public: - CadenceGraphItem(const Graph &graph, QGraphicsItem *parent = 0); + CadenceGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent = 0); qreal max() const {return -bounds().top();} qreal avg() const {return _avg;} diff --git a/src/elevationgraph.cpp b/src/elevationgraph.cpp index f5db929f..c4c39bd1 100644 --- a/src/elevationgraph.cpp +++ b/src/elevationgraph.cpp @@ -44,7 +44,7 @@ ElevationGraph::ElevationGraph(QWidget *parent) : GraphTab(parent) _showRoutes = true; _showTracks = true; - setYUnits(); + setYUnits(Metric); setYLabel(tr("Elevation")); setMinYRange(50.0); } @@ -72,7 +72,7 @@ void ElevationGraph::loadGraph(const Graph &graph, Type type, PathItem *path) return; } - ElevationGraphItem *gi = new ElevationGraphItem(graph); + ElevationGraphItem *gi = new ElevationGraphItem(graph, _graphType); GraphView::addGraph(gi, path, type); if (type == Track) { @@ -116,9 +116,9 @@ void ElevationGraph::clear() GraphView::clear(); } -void ElevationGraph::setYUnits() +void ElevationGraph::setYUnits(Units units) { - if (_units == Metric) { + if (units == Metric) { GraphView::setYUnits(tr("m")); setYScale(1); } else { @@ -127,14 +127,12 @@ void ElevationGraph::setYUnits() } } -void ElevationGraph::setUnits(enum Units units) +void ElevationGraph::setUnits(Units units) { - GraphView::setUnits(units); - - setYUnits(); + setYUnits(units); setInfo(); - redraw(); + GraphView::setUnits(units); } void ElevationGraph::showTracks(bool show) diff --git a/src/elevationgraph.h b/src/elevationgraph.h index 82078ca9..404ee370 100644 --- a/src/elevationgraph.h +++ b/src/elevationgraph.h @@ -25,7 +25,7 @@ private: qreal ascent() const; qreal descent() const; - void setYUnits(); + void setYUnits(Units units); void setInfo(); void loadGraph(const Graph &graph, Type type, PathItem *path); diff --git a/src/elevationgraphitem.cpp b/src/elevationgraphitem.cpp index 3a4644ef..eae5d865 100644 --- a/src/elevationgraphitem.cpp +++ b/src/elevationgraphitem.cpp @@ -1,8 +1,8 @@ #include "tooltip.h" #include "elevationgraphitem.h" -ElevationGraphItem::ElevationGraphItem(const Graph &graph, QGraphicsItem *parent) - : GraphItem(graph, parent) +ElevationGraphItem::ElevationGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent) : GraphItem(graph, type, parent) { _ascent = _descent = 0; diff --git a/src/elevationgraphitem.h b/src/elevationgraphitem.h index 52831eac..721d7283 100644 --- a/src/elevationgraphitem.h +++ b/src/elevationgraphitem.h @@ -8,7 +8,8 @@ class ElevationGraphItem : public GraphItem Q_OBJECT public: - ElevationGraphItem(const Graph &graph, QGraphicsItem *parent = 0); + ElevationGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent = 0); qreal ascent() const {return _ascent;} qreal descent() const {return _descent;} diff --git a/src/graphitem.cpp b/src/graphitem.cpp index f5459a67..2eacc264 100644 --- a/src/graphitem.cpp +++ b/src/graphitem.cpp @@ -2,7 +2,7 @@ #include "graphitem.h" -GraphItem::GraphItem(const Graph &graph, QGraphicsItem *parent) +GraphItem::GraphItem(const Graph &graph, GraphType type, QGraphicsItem *parent) : QGraphicsObject(parent) { _id = 0; @@ -10,7 +10,7 @@ GraphItem::GraphItem(const Graph &graph, QGraphicsItem *parent) _pen = QPen(Qt::black, _width); - _type = Distance; + _type = type; _graph = graph; _sx = 1.0; _sy = 1.0; @@ -56,6 +56,9 @@ void GraphItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, void GraphItem::setGraphType(GraphType type) { + if (type == _type) + return; + prepareGeometryChange(); _type = type; @@ -66,12 +69,18 @@ void GraphItem::setGraphType(GraphType type) void GraphItem::setColor(const QColor &color) { + if (_pen.color() == color) + return; + _pen.setColor(color); update(); } void GraphItem::setWidth(int width) { + if (width == _width) + return; + prepareGeometryChange(); _width = width; diff --git a/src/graphitem.h b/src/graphitem.h index 2162d6d7..106865c6 100644 --- a/src/graphitem.h +++ b/src/graphitem.h @@ -11,7 +11,7 @@ class GraphItem : public QGraphicsObject Q_OBJECT public: - GraphItem(const Graph &graph, QGraphicsItem *parent = 0); + GraphItem(const Graph &graph, GraphType type, QGraphicsItem *parent = 0); QPainterPath shape() const {return _shape;} QRectF boundingRect() const {return _shape.boundingRect();} @@ -19,18 +19,19 @@ public: QWidget *widget); const QRectF &bounds() const {return _bounds;} - void setScale(qreal sx, qreal sy); + void setScale(qreal sx, qreal sy); void setGraphType(GraphType type); int id() const {return _id;} void setId(int id) {_id = id;} void setColor(const QColor &color); void setWidth(int width); + virtual void setUnits(Units units) {Q_UNUSED(units);} qreal yAtX(qreal x); qreal distanceAtTime(qreal time); - virtual void setUnits(Units units) {Q_UNUSED(units);} + void redraw(); signals: void sliderPositionChanged(qreal); diff --git a/src/graphtab.h b/src/graphtab.h index 3e64c933..e0748dcb 100644 --- a/src/graphtab.h +++ b/src/graphtab.h @@ -19,8 +19,9 @@ public: virtual QString label() const = 0; virtual void loadData(const Data &data, const QList &paths) = 0; - virtual void clear() {} + virtual void clear() {GraphView::clear();} virtual void setUnits(enum Units units) {GraphView::setUnits(units);} + virtual void setGraphType(GraphType type) {GraphView::setGraphType(type);} virtual void setTimeType(enum TimeType type) {Q_UNUSED(type)} virtual void showTracks(bool show) {Q_UNUSED(show)} virtual void showRoutes(bool show) {Q_UNUSED(show)} diff --git a/src/graphview.cpp b/src/graphview.cpp index 7ab2a228..97be3a41 100644 --- a/src/graphview.cpp +++ b/src/graphview.cpp @@ -145,6 +145,8 @@ void GraphView::setUnits(Units units) _graphs.at(i)->setUnits(units); setXUnits(); + + redraw(); } void GraphView::setGraphType(GraphType type) @@ -180,7 +182,6 @@ void GraphView::showSliderInfo(bool show) void GraphView::addGraph(GraphItem *graph, PathItem *path, int id) { graph->setUnits(_units); - graph->setGraphType(_graphType); graph->setId(id); graph->setColor(_palette.nextColor()); graph->setWidth(_width); @@ -235,11 +236,6 @@ void GraphView::showGraph(bool show, int id) } } -void GraphView::redraw() -{ - redraw(viewport()->size() - QSizeF(MARGIN, MARGIN)); -} - QRectF GraphView::bounds() const { QRectF br(_bounds); @@ -247,6 +243,11 @@ QRectF GraphView::bounds() const return br; } +void GraphView::redraw() +{ + redraw(viewport()->size() - QSizeF(MARGIN, MARGIN)); +} + void GraphView::redraw(const QSizeF &size) { QRectF r; @@ -467,6 +468,8 @@ void GraphView::setGraphWidth(int width) for (int i = 0; i < _graphs.count(); i++) _graphs.at(i)->setWidth(width); + + redraw(); } void GraphView::useOpenGL(bool use) diff --git a/src/graphview.h b/src/graphview.h index f9d068ee..6cd03b25 100644 --- a/src/graphview.h +++ b/src/graphview.h @@ -25,19 +25,29 @@ public: GraphView(QWidget *parent = 0); ~GraphView(); - void addGraph(GraphItem *graph, PathItem *path, int id = 0); - int count() const {return _graphs.count();} - void redraw(); + bool isEmpty() const {return _graphs.isEmpty();} void clear(); + void plot(QPainter *painter, const QRectF &target, qreal scale); + + void setPalette(const Palette &palette); + void setGraphWidth(int width); + void showGrid(bool show); + void showSliderInfo(bool show); + void useOpenGL(bool use); + void useAntiAliasing(bool use); + + void setSliderPosition(qreal pos); + +signals: + void sliderPositionChanged(qreal); + +protected: + void addGraph(GraphItem *graph, PathItem *path, int id = 0); + void showGraph(bool show, int id = 0); void setGraphType(GraphType type); void setUnits(Units units); - void showGrid(bool show); - void showSliderInfo(bool show); - - void setPalette(const Palette &palette); - void setGraphWidth(int width); const QString &yLabel() const {return _yLabel;} const QString &yUnits() const {return _yUnits;} @@ -51,26 +61,14 @@ public: void setSliderPrecision(int precision) {_precision = precision;} void setMinYRange(qreal range) {_minYRange = range;} - qreal sliderPosition() const {return _sliderPos;} - void setSliderPosition(qreal pos); - - void plot(QPainter *painter, const QRectF &target, qreal scale); - - void useOpenGL(bool use); - void useAntiAliasing(bool use); - -signals: - void sliderPositionChanged(qreal); - -protected: QRectF bounds() const; + void redraw(); void redraw(const QSizeF &size); void addInfo(const QString &key, const QString &value); void clearInfo(); void skipColor() {_palette.nextColor();} QList _graphs; - Units _units; GraphType _graphType; private slots: @@ -89,6 +87,7 @@ private: void resizeEvent(QResizeEvent *); void mousePressEvent(QMouseEvent *); + Units _units; qreal _xScale, _yScale; qreal _yOffset; QString _xUnits, _yUnits; diff --git a/src/gui.cpp b/src/gui.cpp index 363df8d9..14e5fd94 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -361,7 +361,7 @@ void GUI::createActions() tr("Load map..."), this); connect(_loadMapAction, SIGNAL(triggered()), this, SLOT(loadMap())); _clearMapCacheAction = new QAction(tr("Clear tile cache"), this); - connect(_clearMapCacheAction, SIGNAL(triggered()), this, + connect(_clearMapCacheAction, SIGNAL(triggered()), _pathView, SLOT(clearMapCache())); createMapActions(); _nextMapAction = new QAction(tr("Next map"), this); @@ -1022,7 +1022,7 @@ void GUI::plot(QPrinter *printer) int cnt = 0; for (int i = 0; i < _tabs.size(); i++) - if (_tabs.at(i)->count()) + if (!_tabs.at(i)->isEmpty()) cnt++; qreal sp = ratio * 20; @@ -1031,7 +1031,7 @@ void GUI::plot(QPrinter *printer) qreal y = 0; for (int i = 0; i < _tabs.size(); i++) { - if (_tabs.at(i)->count()) { + if (!_tabs.at(i)->isEmpty()) { _tabs.at(i)->plot(&p, QRectF(0, y, printer->width(), gh), ratio); y += gh + sp; @@ -1217,12 +1217,6 @@ void GUI::loadMap() } } -void GUI::clearMapCache() -{ - _map->clearCache(); - _pathView->redraw(); -} - void GUI::updateStatusBarInfo() { if (_files.count() == 0) @@ -1334,13 +1328,13 @@ void GUI::updateGraphTabs() for (int i = 0; i < _tabs.size(); i++) { tab = _tabs.at(i); - if (!tab->count() && (index = _graphTabWidget->indexOf(tab)) >= 0) + if (tab->isEmpty() && (index = _graphTabWidget->indexOf(tab)) >= 0) _graphTabWidget->removeTab(index); } for (int i = 0; i < _tabs.size(); i++) { tab = _tabs.at(i); - if (tab->count() && _graphTabWidget->indexOf(tab) < 0) + if (!tab->isEmpty() && _graphTabWidget->indexOf(tab) < 0) _graphTabWidget->insertTab(i, tab, _tabs.at(i)->label()); } diff --git a/src/gui.h b/src/gui.h index 10a12769..050cd06b 100644 --- a/src/gui.h +++ b/src/gui.h @@ -57,7 +57,6 @@ private slots: void showTracks(bool show); void showRoutes(bool show); void loadMap(); - void clearMapCache(); void nextMap(); void prevMap(); void openOptions(); diff --git a/src/heartrategraph.cpp b/src/heartrategraph.cpp index 60c74ff1..9e7ac1bf 100644 --- a/src/heartrategraph.cpp +++ b/src/heartrategraph.cpp @@ -34,7 +34,7 @@ void HeartRateGraph::loadData(const Data &data, const QList &paths) continue; } - HeartRateGraphItem *gi = new HeartRateGraphItem(graph); + HeartRateGraphItem *gi = new HeartRateGraphItem(graph, _graphType); GraphView::addGraph(gi, paths.at(i)); _avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg())); diff --git a/src/heartrategraphitem.cpp b/src/heartrategraphitem.cpp index 9a7fc4f4..34fe197a 100644 --- a/src/heartrategraphitem.cpp +++ b/src/heartrategraphitem.cpp @@ -1,8 +1,8 @@ #include "tooltip.h" #include "heartrategraphitem.h" -HeartRateGraphItem::HeartRateGraphItem(const Graph &graph, QGraphicsItem *parent) - : GraphItem(graph, parent) +HeartRateGraphItem::HeartRateGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent) : GraphItem(graph, type, parent) { qreal sum = 0; diff --git a/src/heartrategraphitem.h b/src/heartrategraphitem.h index 3e74e4cc..c526d5fe 100644 --- a/src/heartrategraphitem.h +++ b/src/heartrategraphitem.h @@ -8,7 +8,8 @@ class HeartRateGraphItem : public GraphItem Q_OBJECT public: - HeartRateGraphItem(const Graph &graph, QGraphicsItem *parent = 0); + HeartRateGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent = 0); qreal max() const {return -bounds().top();} qreal avg() const {return _avg;} diff --git a/src/onlinemap.cpp b/src/onlinemap.cpp index e304a6e6..b2b4822c 100644 --- a/src/onlinemap.cpp +++ b/src/onlinemap.cpp @@ -56,13 +56,21 @@ OnlineMap::OnlineMap(const QString &name, const QString &url, _zooms = zooms; _zoom = zooms.max(); - connect(downloader, SIGNAL(finished()), this, SLOT(emitLoaded())); - QString path = TILES_DIR + QString("/") + name; if (!QDir().mkpath(path)) qWarning("Error creating tiles dir: %s\n", qPrintable(path)); } +void OnlineMap::load() +{ + connect(downloader, SIGNAL(finished()), this, SLOT(emitLoaded())); +} + +void OnlineMap::unload() +{ + disconnect(downloader, SIGNAL(finished()), this, SLOT(emitLoaded())); +} + void OnlineMap::fillTile(Tile &tile) { tile.pixmap() = QPixmap(TILE_SIZE, TILE_SIZE); diff --git a/src/onlinemap.h b/src/onlinemap.h index db47bb93..e7f75318 100644 --- a/src/onlinemap.h +++ b/src/onlinemap.h @@ -37,6 +37,9 @@ public: static void setDownloader(Downloader *downloader) {OnlineMap::downloader = downloader;} + void load(); + void unload(); + private slots: void emitLoaded(); diff --git a/src/pathitem.cpp b/src/pathitem.cpp index 59c34151..b15d333b 100644 --- a/src/pathitem.cpp +++ b/src/pathitem.cpp @@ -66,9 +66,10 @@ void PathItem::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, void PathItem::setMap(Map *map) { - _map = map; prepareGeometryChange(); + _map = map; + updatePainterPath(map); updateShape(); @@ -77,12 +78,18 @@ void PathItem::setMap(Map *map) void PathItem::setColor(const QColor &color) { + if (_pen.color() == color) + return; + _pen.setColor(color); update(); } void PathItem::setWidth(qreal width) { + if (_width == width) + return; + prepareGeometryChange(); _width = width; @@ -93,12 +100,18 @@ void PathItem::setWidth(qreal width) void PathItem::setStyle(Qt::PenStyle style) { + if (_pen.style() == style) + return; + _pen.setStyle(style); update(); } void PathItem::setDigitalZoom(int zoom) { + if (_digitalZoom == zoom) + return; + prepareGeometryChange(); _digitalZoom = zoom; diff --git a/src/pathview.cpp b/src/pathview.cpp index 7dec1078..c03f5a58 100644 --- a/src/pathview.cpp +++ b/src/pathview.cpp @@ -44,7 +44,7 @@ PathView::PathView(Map *map, POI *poi, QWidget *parent) _map = map; _poi = poi; - connect(_map, SIGNAL(loaded()), this, SLOT(redraw())); + connect(_map, SIGNAL(loaded()), this, SLOT(reloadMap())); connect(_poi, SIGNAL(pointsChanged()), this, SLOT(updatePOI())); _units = Metric; @@ -269,11 +269,11 @@ void PathView::setMap(Map *map) qreal resolution = _map->resolution(pos); _map->unload(); - disconnect(_map, SIGNAL(loaded()), this, SLOT(redraw())); + disconnect(_map, SIGNAL(loaded()), this, SLOT(reloadMap())); _map = map; _map->load(); - connect(_map, SIGNAL(loaded()), this, SLOT(redraw())); + connect(_map, SIGNAL(loaded()), this, SLOT(reloadMap())); resetDigitalZoom(); @@ -366,8 +366,9 @@ void PathView::setUnits(enum Units units) it.value()->setUnits(units); } -void PathView::redraw() +void PathView::clearMapCache() { + _map->clearCache(); resetCachedContent(); } @@ -795,3 +796,8 @@ void PathView::useAntiAliasing(bool use) { setRenderHint(QPainter::Antialiasing, use); } + +void PathView::reloadMap() +{ + resetCachedContent(); +} diff --git a/src/pathview.h b/src/pathview.h index c8d663ef..f79dc900 100644 --- a/src/pathview.h +++ b/src/pathview.h @@ -58,8 +58,6 @@ public: void useAntiAliasing(bool use); public slots: - void redraw(); - void showMap(bool show); void showPOI(bool show); void setPOIOverlap(bool overlap); @@ -69,9 +67,11 @@ public slots: void showRoutes(bool show); void showWaypoints(bool show); void showRouteWaypoints(bool show); + void clearMapCache(); private slots: void updatePOI(); + void reloadMap(); private: PathItem *addTrack(const Track &track); diff --git a/src/powergraph.cpp b/src/powergraph.cpp index 90ee98e9..76a2a484 100644 --- a/src/powergraph.cpp +++ b/src/powergraph.cpp @@ -34,7 +34,7 @@ void PowerGraph::loadData(const Data &data, const QList &paths) continue; } - PowerGraphItem *gi = new PowerGraphItem(graph); + PowerGraphItem *gi = new PowerGraphItem(graph, _graphType); GraphView::addGraph(gi, paths.at(i)); _avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg())); diff --git a/src/powergraphitem.cpp b/src/powergraphitem.cpp index c5921f9d..66e2eedb 100644 --- a/src/powergraphitem.cpp +++ b/src/powergraphitem.cpp @@ -1,8 +1,8 @@ #include "tooltip.h" #include "powergraphitem.h" -PowerGraphItem::PowerGraphItem(const Graph &graph, QGraphicsItem *parent) - : GraphItem(graph, parent) +PowerGraphItem::PowerGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent) : GraphItem(graph, type, parent) { qreal sum = 0; diff --git a/src/powergraphitem.h b/src/powergraphitem.h index 50d68917..2baf2349 100644 --- a/src/powergraphitem.h +++ b/src/powergraphitem.h @@ -8,7 +8,8 @@ class PowerGraphItem : public GraphItem Q_OBJECT public: - PowerGraphItem(const Graph &graph, QGraphicsItem *parent = 0); + PowerGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent = 0); qreal max() const {return -bounds().top();} qreal avg() const {return _avg;} diff --git a/src/speedgraph.cpp b/src/speedgraph.cpp index 1d75e261..b9bd7f8f 100644 --- a/src/speedgraph.cpp +++ b/src/speedgraph.cpp @@ -10,7 +10,7 @@ SpeedGraph::SpeedGraph(QWidget *parent) : GraphTab(parent) _timeType = Total; _showTracks = true; - setYUnits(); + setYUnits(Metric); setYLabel(tr("Speed")); setSliderPrecision(1); @@ -38,7 +38,8 @@ void SpeedGraph::loadData(const Data &data, const QList &paths) continue; } - SpeedGraphItem *gi = new SpeedGraphItem(graph, track->movingTime()); + SpeedGraphItem *gi = new SpeedGraphItem(graph, _graphType, + track->movingTime()); gi->setTimeType(_timeType); GraphView::addGraph(gi, paths.at(i)); @@ -76,9 +77,9 @@ void SpeedGraph::clear() GraphView::clear(); } -void SpeedGraph::setYUnits() +void SpeedGraph::setYUnits(Units units) { - if (_units == Metric) { + if (units == Metric) { GraphView::setYUnits(tr("km/h")); setYScale(MS2KMH); } else { @@ -87,14 +88,12 @@ void SpeedGraph::setYUnits() } } -void SpeedGraph::setUnits(enum Units units) +void SpeedGraph::setUnits(Units units) { - GraphView::setUnits(units); - - setYUnits(); + setYUnits(units); setInfo(); - redraw(); + GraphView::setUnits(units); } void SpeedGraph::setTimeType(enum TimeType type) diff --git a/src/speedgraph.h b/src/speedgraph.h index fa0611e0..c7a9f045 100644 --- a/src/speedgraph.h +++ b/src/speedgraph.h @@ -21,7 +21,7 @@ public: private: qreal avg() const; qreal max() const {return bounds().bottom();} - void setYUnits(); + void setYUnits(Units units); void setInfo(); QList _avg; diff --git a/src/speedgraphitem.cpp b/src/speedgraphitem.cpp index ccd06250..8ad51665 100644 --- a/src/speedgraphitem.cpp +++ b/src/speedgraphitem.cpp @@ -1,8 +1,8 @@ #include "tooltip.h" #include "speedgraphitem.h" -SpeedGraphItem::SpeedGraphItem(const Graph &graph, qreal movingTime, - QGraphicsItem *parent) : GraphItem(graph, parent) +SpeedGraphItem::SpeedGraphItem(const Graph &graph, GraphType type, + qreal movingTime, QGraphicsItem *parent) : GraphItem(graph, type, parent) { _units = Metric; _timeType = Total; diff --git a/src/speedgraphitem.h b/src/speedgraphitem.h index af9ba7e7..abe51740 100644 --- a/src/speedgraphitem.h +++ b/src/speedgraphitem.h @@ -9,7 +9,7 @@ class SpeedGraphItem : public GraphItem Q_OBJECT public: - SpeedGraphItem(const Graph &graph, qreal movingTime, + SpeedGraphItem(const Graph &graph, GraphType type, qreal movingTime, QGraphicsItem *parent = 0); qreal max() const {return -bounds().top();} diff --git a/src/temperaturegraph.cpp b/src/temperaturegraph.cpp index 3f1bb18a..ffd4fc66 100644 --- a/src/temperaturegraph.cpp +++ b/src/temperaturegraph.cpp @@ -7,7 +7,7 @@ TemperatureGraph::TemperatureGraph(QWidget *parent) : GraphTab(parent) { _showTracks = true; - setYUnits(); + setYUnits(Metric); setYLabel(tr("Temperature")); setSliderPrecision(1); @@ -36,7 +36,7 @@ void TemperatureGraph::loadData(const Data &data, const QList &paths continue; } - TemperatureGraphItem *gi = new TemperatureGraphItem(graph); + TemperatureGraphItem *gi = new TemperatureGraphItem(graph, _graphType); GraphView::addGraph(gi, paths.at(i)); _avg.append(QPointF(data.tracks().at(i)->distance(), gi->avg())); @@ -70,9 +70,9 @@ void TemperatureGraph::clear() GraphView::clear(); } -void TemperatureGraph::setYUnits() +void TemperatureGraph::setYUnits(Units units) { - if (_units == Metric) { + if (units == Metric) { GraphView::setYUnits(QChar(0x00B0) + tr("C")); setYScale(1); setYOffset(0); @@ -83,14 +83,12 @@ void TemperatureGraph::setYUnits() } } -void TemperatureGraph::setUnits(enum Units units) +void TemperatureGraph::setUnits(Units units) { - GraphView::setUnits(units); - - setYUnits(); + setYUnits(units); setInfo(); - redraw(); + GraphView::setUnits(units); } void TemperatureGraph::showTracks(bool show) diff --git a/src/temperaturegraph.h b/src/temperaturegraph.h index 4f9f7159..2cfd17b3 100644 --- a/src/temperaturegraph.h +++ b/src/temperaturegraph.h @@ -20,7 +20,7 @@ private: qreal avg() const; qreal min() const {return bounds().top();} qreal max() const {return bounds().bottom();} - void setYUnits(); + void setYUnits(Units units); void setInfo(); QList _avg; diff --git a/src/temperaturegraphitem.cpp b/src/temperaturegraphitem.cpp index 8ba96ffa..9a9c9c09 100644 --- a/src/temperaturegraphitem.cpp +++ b/src/temperaturegraphitem.cpp @@ -1,8 +1,8 @@ #include "tooltip.h" #include "temperaturegraphitem.h" -TemperatureGraphItem::TemperatureGraphItem(const Graph &graph, - QGraphicsItem *parent) : GraphItem(graph, parent) +TemperatureGraphItem::TemperatureGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent) : GraphItem(graph, type, parent) { qreal sum = 0; diff --git a/src/temperaturegraphitem.h b/src/temperaturegraphitem.h index 3cf8b2c6..062abcbe 100644 --- a/src/temperaturegraphitem.h +++ b/src/temperaturegraphitem.h @@ -8,7 +8,8 @@ class TemperatureGraphItem : public GraphItem Q_OBJECT public: - TemperatureGraphItem(const Graph &graph, QGraphicsItem *parent = 0); + TemperatureGraphItem(const Graph &graph, GraphType type, + QGraphicsItem *parent = 0); qreal max() const {return -bounds().top();} qreal min() const {return -bounds().bottom();}