Added implementation to handleCheckPoint slot function in carmainwindow.cpp. Now...
[speedfreak] / Client / measuredialog.cpp
1 /*
2  * CarMainWindow main class
3  *
4  * @author     Janne Änäkkälä <janne.anakkala@fudeco.com>
5  * @copyright  (c) 2010 Speed Freak team
6  * @license    http://opensource.org/licenses/gpl-license.php GNU Public License
7  */
8
9 #include "measuredialog.h"
10 #include "ui_measuredialog.h"
11 #include "math.h"
12
13 /**
14   * Constructor of this class.
15   * @param QWidget pointer to parent object. By default the value is NULL.
16   */
17 MeasureDialog::MeasureDialog(QWidget *parent) :
18     QDialog(parent),
19     ui(new Ui::MeasureDialog)
20 {
21     ui->setupUi(this);
22     ui->labelInfo->setText("Accelerate to 100 km/h");
23     time = 0;
24     speed = 0;
25     timer = new QTimer();
26
27     accelerometer = new Accelerometer();
28
29     measures = new Measures();
30     this->initializeMeasures();
31
32     timer->setInterval(100);
33     timer->start();
34     connect(this->timer, SIGNAL(timeout()), this, SLOT(after_timeout()));
35 }
36
37 /**
38   *Destructor of this class.  Should be used to release all allocated resources.
39   */
40 MeasureDialog::~MeasureDialog()
41 {
42     delete ui;
43 }
44
45 void MeasureDialog::changeEvent(QEvent *e)
46 {
47     QDialog::changeEvent(e);
48     switch (e->type()) {
49     case QEvent::LanguageChange:
50         ui->retranslateUi(this);
51         break;
52     default:
53         break;
54     }
55 }
56
57 /**
58   * This slot function is called when timer gives timeout signal. Checks current speed
59   * and stores times in measure class.
60   */
61 void MeasureDialog::after_timeout()
62 {
63     QString timeString, speedString;
64     time++;
65     speed = speed +10;
66
67     if (floor(speed) == 10)
68     {
69         measures->setTime10kmh(time);
70     }
71
72     else if (floor(speed) == 20)
73     {
74         measures->setTime20kmh(time);
75     }
76
77     else if (floor(speed) == 30)
78     {
79         measures->setTime30kmh(time);
80     }
81
82     else if (floor(speed) == 40)
83     {
84         measures->setTime40kmh(time);
85     }
86
87     else if (floor(speed) == 50)
88     {
89         measures->setTime50kmh(time);
90     }
91
92     else if (floor(speed) == 60)
93     {
94         measures->setTime60kmh(time);
95     }
96
97     else if (floor(speed) == 70)
98     {
99         measures->setTime70kmh(time);
100     }
101
102     else if (floor(speed) == 80)
103     {
104         measures->setTime80kmh(time);
105     }
106
107     else if (floor(speed) == 90)
108     {
109         measures->setTime90kmh(time);
110     }
111
112     else if (floor(speed) == 100)
113     {
114         measures->setTime100kmh(time);
115     }
116
117     else
118     {
119
120     }
121
122     // If speed is over 100 km/h emits speedAchieved() signal and close this dialog.
123     if (speed >= 40.0)
124     {
125         timer->stop();
126         time = 0;
127         speed = 0;
128         emit this->speedAchieved();
129         this->close();
130
131     }
132
133     // Updates speed and time.
134     else
135     {
136         timeString.setNum(time);
137         speedString.setNum(speed);
138         ui->labelSpeed->setText(speedString);
139         ui->labelTime->setText(timeString);
140         timer->start();
141     }
142
143 }
144
145 /**
146   * This slot function is called when Abort button is clicked.
147   */
148 void MeasureDialog::on_pushButtonAbort_clicked()
149 {
150     measures->setTime10kmh(0);
151     measures->setTime20kmh(0);
152     measures->setTime30kmh(0);
153     measures->setTime40kmh(0);
154     measures->setTime50kmh(0);
155     measures->setTime60kmh(0);
156     measures->setTime70kmh(0);
157     measures->setTime80kmh(0);
158     measures->setTime90kmh(0);
159     measures->setTime100kmh(0);
160     timer->stop();
161     time = 0;
162     speed = 0;
163     this->close();
164 }
165
166 /**
167   * Initializes measures class's member variables.
168   */
169 void MeasureDialog::initializeMeasures()
170 {
171     measures->setTime10kmh(0);
172     measures->setTime20kmh(0);
173     measures->setTime30kmh(0);
174     measures->setTime40kmh(0);
175     measures->setTime50kmh(0);
176     measures->setTime60kmh(0);
177     measures->setTime70kmh(0);
178     measures->setTime80kmh(0);
179     measures->setTime90kmh(0);
180     measures->setTime100kmh(0);
181 }