Changed file structure and removed useless output files.
[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
14 // Test arrays for changing speeds and times to the points in diagram
15 static const int speedArray[10] = {12, 34, 56, 78, 90, 100, 104, 100, 90, 80};
16 static const int timeArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 10, 12};
17
18
19
20 // Test point array for the diagram.
21 QPoint points[10];
22
23 ResultDialog::ResultDialog(QWidget *parent) :
24     QDialog(parent),
25     ui(new Ui::ResultDialog)
26 {
27     ui->setupUi(this);
28
29     QString time, timeInteger;
30     timeInteger.setNum(timeArray[9]);
31     time = "0 - 100 km/h: ";
32     time.append(timeInteger);
33     ui->labelResult->setText(time);
34
35     timeInteger.setNum(timeArray[8]);
36     time = "0 - 90 km/h: ";
37     time.append(timeInteger);
38     ui->labelResult_2->setText(time);
39
40     timeInteger.setNum(timeArray[7]);
41     time = "0 - 80 km/h: ";
42     time.append(timeInteger);
43     ui->labelResult_3->setText(time);
44
45     timeInteger.setNum(timeArray[6]);
46     time = "0 - 70 km/h: ";
47     time.append(timeInteger);
48     ui->labelResult_4->setText(time);
49
50     timeInteger.setNum(timeArray[5]);
51     time = "0 - 60 km/h: ";
52     time.append(timeInteger);
53     ui->labelResult_5->setText(time);
54
55     timeInteger.setNum(timeArray[4]);
56     time = "0 - 50 km/h: ";
57     time.append(timeInteger);
58     ui->labelResult_6->setText(time);
59
60     timeInteger.setNum(timeArray[3]);
61     time = "0 - 40 km/h: ";
62     time.append(timeInteger);
63     ui->labelResult_7->setText(time);
64
65     for(int i = 0; i < 10; i++)
66     {
67         points[i] = changeMeasuresToDiagramPoint(speedArray[i], timeArray[i]);
68     }
69    // ui->labelXLine->setText(ui->labelXLine->text().append(": time/ s"));
70    // ui->labelYLine->setText(ui->labelYLine->text().append(": speed/ km/h"));
71 }
72
73 ResultDialog::~ResultDialog()
74 {
75     delete ui;
76 }
77
78 void ResultDialog::changeEvent(QEvent *e)
79 {
80     QDialog::changeEvent(e);
81     switch (e->type()) {
82     case QEvent::LanguageChange:
83         ui->retranslateUi(this);
84         break;
85     default:
86         break;
87     }
88 }
89
90 /**
91   * Draws speed diagram to the UI
92   *
93  */
94 void ResultDialog::paintEvent(QPaintEvent *)
95 {
96         QPainter painter(this);
97
98         painter.setRenderHint(QPainter::Antialiasing, true);
99         painter.setPen(QPen((Qt::white),2));
100         painter.setBrush(QBrush((Qt::yellow), Qt::SolidPattern));
101         painter.drawLine(diagramStemStart, diagramStemEnd);
102         painter.drawLine(diagramHorizontalStart, diagramHorizontalEnd);
103
104         int currentX = diagramStemStart.x();
105         int currentY = diagramStemStart.y();
106
107         // Draws diagram's X-axel
108         for(int i = 0; i<13; i++)
109         {
110             currentX += diagramGap;
111             painter.drawLine(currentX, currentY, currentX, currentY - 10);
112         }
113
114         currentX = diagramStemStart.x();
115         currentY = diagramStemStart.y();
116
117         // Draws diagram's Y-axel
118         for(int i = 0; i<10; i++)
119         {
120             currentY -= diagramGap;
121             painter.drawLine(currentX, currentY, currentX+10, currentY);
122         }
123
124         painter.drawPolyline(points, 10);
125
126 }
127
128 /**
129   *Change the given speed and time to the point for the diagram.
130   *@param aSpeed is speed which need to change, aTime is time in seconds which need to change.
131   *@return point is calculated from aSpeed and aTime.
132   **/
133 QPoint ResultDialog::changeMeasuresToDiagramPoint(int aSpeed, int aTime)
134 {
135     QPoint point;
136
137     int speedAsPixels;
138     int timeAsPixels;
139     speedAsPixels = 300*aSpeed/100;
140     timeAsPixels = 300*aTime/10;
141     point.setY(diagramStemStart.y()-speedAsPixels);
142     point.setX(diagramStemStart.x()+timeAsPixels);
143
144     return point;
145 }