Use the canonical file name also for the "already open" check
[GPXSee.git] / src / GUI / powergraph.cpp
blobb48b9cc70231405cdada4c7fee2afc8624bed515
1 #include <QLocale>
2 #include "data/data.h"
3 #include "powergraphitem.h"
4 #include "powergraph.h"
7 PowerGraph::PowerGraph(QWidget *parent) : GraphTab(parent)
9 _showTracks = false;
11 GraphView::setYUnits(tr("W"));
12 setYLabel(tr("Power"));
14 setSliderPrecision(1);
17 PowerGraph::~PowerGraph()
19 qDeleteAll(_tracks);
22 void PowerGraph::setInfo()
24 if (_showTracks) {
25 QLocale l(QLocale::system());
27 #ifdef Q_OS_ANDROID
28 GraphView::addInfo(tr("Avg"), l.toString(avg() * yScale() + yOffset(),
29 'f', 1) + UNIT_SPACE + yUnits());
30 GraphView::addInfo(tr("Max"), l.toString(max() * yScale() + yOffset(),
31 'f', 1) + UNIT_SPACE + yUnits());
32 #else // Q_OS_ANDROID
33 GraphView::addInfo(tr("Average"), l.toString(avg() * yScale()
34 + yOffset(), 'f', 1) + UNIT_SPACE + yUnits());
35 GraphView::addInfo(tr("Maximum"), l.toString(max() * yScale()
36 + yOffset(), 'f', 1) + UNIT_SPACE + yUnits());
37 #endif // Q_OS_ANDROID
38 } else
39 clearInfo();
42 QList<GraphItem*> PowerGraph::loadData(const Data &data)
44 QList<GraphItem*> graphs;
46 for (int i = 0; i < data.tracks().count(); i++) {
47 const Track &track = data.tracks().at(i);
48 const Graph &graph = track.power();
50 if (graph.isEmpty()) {
51 _palette.nextColor();
52 graphs.append(0);
53 } else {
54 PowerGraphItem *gi = new PowerGraphItem(graph, _graphType, _width,
55 _palette.nextColor());
57 _tracks.append(gi);
58 if (_showTracks)
59 addGraph(gi);
60 _avg.append(QPointF(track.distance(), gi->avg()));
61 graphs.append(gi);
65 for (int i = 0; i < data.routes().count(); i++) {
66 _palette.nextColor();
67 graphs.append(0);
70 for (int i = 0; i < data.areas().count(); i++)
71 _palette.nextColor();
73 setInfo();
74 redraw();
76 return graphs;
79 qreal PowerGraph::avg() const
81 qreal sum = 0, w = 0;
83 for (int i = 0; i < _avg.size(); i++) {
84 const QPointF &p = _avg.at(i);
85 sum += p.y() * p.x();
86 w += p.x();
89 return (sum / w);
92 void PowerGraph::clear()
94 qDeleteAll(_tracks);
95 _tracks.clear();
97 _avg.clear();
99 GraphTab::clear();
102 void PowerGraph::showTracks(bool show)
104 _showTracks = show;
106 for (int i = 0; i < _tracks.size(); i++) {
107 if (show)
108 addGraph(_tracks.at(i));
109 else
110 removeGraph(_tracks.at(i));
113 setInfo();
115 redraw();