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