Added measures.h and measures.cpp files. Changed resultdialog.h, .cpp and measuredial...
[speedfreak] / Client / resultdialog.cpp
1 #include "resultdialog.h"
2 #include "ui_resultdialog.h"
3 #include <QPainter>
4
5 const QPoint diagramStemStart(50, 350);
6 const QPoint diagramStemEnd(50, 30);
7
8 const QPoint diagramHorizontalStart(50, 350);
9 const QPoint diagramHorizontalEnd(450, 350);
10
11 const int diagramGap = 30;
12
13 // Test arrays for changing speeds and times to the points in diagram
14 static const int speedArray[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
15 //static const int timeArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 10, 12};
16
17 // Test point array for the diagram.
18 QPoint points[10];
19
20 ResultDialog::ResultDialog(QWidget *parent) :
21     QDialog(parent),
22     ui(new Ui::ResultDialog)
23 {
24     ui->setupUi(this);
25
26
27
28    // ui->labelXLine->setText(ui->labelXLine->text().append(": time/ s"));
29    // ui->labelYLine->setText(ui->labelYLine->text().append(": speed/ km/h"));
30 }
31
32 ResultDialog::~ResultDialog()
33 {
34     delete ui;
35 }
36
37 void ResultDialog::changeEvent(QEvent *e)
38 {
39     QDialog::changeEvent(e);
40     switch (e->type()) {
41     case QEvent::LanguageChange:
42         ui->retranslateUi(this);
43         break;
44     default:
45         break;
46     }
47 }
48
49 /**
50   * Draws speed diagram to the UI
51   *
52  */
53 void ResultDialog::paintEvent(QPaintEvent *)
54 {
55         QPainter painter(this);
56
57         painter.setRenderHint(QPainter::Antialiasing, true);
58         painter.setPen(QPen((Qt::white),2));
59         painter.setBrush(QBrush((Qt::yellow), Qt::SolidPattern));
60         painter.drawLine(diagramStemStart, diagramStemEnd);
61         painter.drawLine(diagramHorizontalStart, diagramHorizontalEnd);
62
63         int currentX = diagramStemStart.x();
64         int currentY = diagramStemStart.y();
65
66         // Draws diagram's X-axel
67         for(int i = 0; i<13; i++)
68         {
69             currentX += diagramGap;
70             painter.drawLine(currentX, currentY, currentX, currentY - 10);
71         }
72
73         currentX = diagramStemStart.x();
74         currentY = diagramStemStart.y();
75
76         // Draws diagram's Y-axel
77         for(int i = 0; i<10; i++)
78         {
79             currentY -= diagramGap;
80             painter.drawLine(currentX, currentY, currentX+10, currentY);
81         }
82
83         painter.drawPolyline(points, 4);
84
85 }
86
87 /**
88   *Change the given speed and time to the point for the diagram.
89   *@param aSpeed is speed which need to change, aTime is time in seconds which need to change.
90   *@return point is calculated from aSpeed and aTime.
91   **/
92 QPoint ResultDialog::changeMeasuresToDiagramPoint(int aSpeed, qreal aTime)
93 {
94     QPoint point;
95
96     int speedAsPixels;
97     int timeAsPixels;
98     speedAsPixels = 300*aSpeed/100;
99     timeAsPixels = 300*aTime/10;
100     point.setY(diagramStemStart.y()-speedAsPixels);
101     point.setX(diagramStemStart.x()+timeAsPixels);
102
103     return point;
104 }
105
106 /**
107   *Saves the given measures to array.
108   *@param pMeasures has information about acceleration.
109   **/
110 void ResultDialog::saveMeasuresToArray(Measures *pMeasures)
111 {
112     timeArray[0] = pMeasures->getTime10kmh();
113     timeArray[1] = pMeasures->getTime20kmh();
114     timeArray[2] = pMeasures->getTime30kmh();
115     timeArray[3] = pMeasures->getTime40kmh();
116     timeArray[4] = pMeasures->getTime50kmh();
117     timeArray[5] = pMeasures->getTime60kmh();
118     timeArray[6] = pMeasures->getTime70kmh();
119     timeArray[7] = pMeasures->getTime80kmh();
120     timeArray[8] = pMeasures->getTime90kmh();
121     timeArray[9] = pMeasures->getTime100kmh();
122
123     for(int i = 0; i < 4; i++)
124     {
125         points[i] = changeMeasuresToDiagramPoint(speedArray[i], timeArray[i]);
126     }
127
128     QString time, timeInteger;
129     timeInteger.setNum(timeArray[3]);
130     time = "0 - 40 km/h: ";
131     time.append(timeInteger);
132     ui->labelResult40kmh->setText(time);
133
134     timeInteger.setNum(timeArray[2]);
135     time = "0 - 30 km/h: ";
136     time.append(timeInteger);
137     ui->labelResult30kmh->setText(time);
138
139     timeInteger.setNum(timeArray[1]);
140     time = "0 - 20 km/h: ";
141     time.append(timeInteger);
142     ui->labelResult20kmh->setText(time);
143
144     timeInteger.setNum(timeArray[0]);
145     time = "0 - 10 km/h: ";
146     time.append(timeInteger);
147     ui->labelResult10kmh->setText(time);
148
149    /* timeInteger.setNum(timeArray[5]);
150     time = "0 - 60 km/h: ";
151     time.append(timeInteger);
152     ui->labelResult_5->setText(time);
153
154     timeInteger.setNum(timeArray[4]);
155     time = "0 - 50 km/h: ";
156     time.append(timeInteger);
157     ui->labelResult_6->setText(time);
158
159     timeInteger.setNum(timeArray[3]);
160     time = "0 - 40 km/h: ";
161     time.append(timeInteger);
162     ui->labelResult_7->setText(time);*/
163
164     this->repaint();
165
166     for(int i = 0; i < 10; i++)
167     {
168         timeArray[i] = 0;
169     }
170 }