UI design document updated.
[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     accelerometer->setSampleRate(100);
29     accelerometer->start();
30
31     measures = new Measures();
32     this->initializeMeasures();
33
34     timer->setInterval(100);
35     timer->start();
36     connect(this->timer, SIGNAL(timeout()), this, SLOT(after_timeout()));
37 }
38
39 /**
40   *Destructor of this class.  Should be used to release all allocated resources.
41   */
42 MeasureDialog::~MeasureDialog()
43 {
44     delete ui;
45 }
46
47 void MeasureDialog::changeEvent(QEvent *e)
48 {
49     QDialog::changeEvent(e);
50     switch (e->type()) {
51     case QEvent::LanguageChange:
52         ui->retranslateUi(this);
53         break;
54     default:
55         break;
56     }
57 }
58
59 /**
60   * This slot function is called when timer gives timeout signal. Checks current speed
61   * and stores times in measure class.
62   */
63 void MeasureDialog::after_timeout()
64 {
65     QString timeString, speedString;
66     //time++;
67     time = accelerometer->getTotalTime();
68     speed = accelerometer->getCurrentSpeed();
69     //speed = speed +10;
70
71     if (floor(speed) == 10)
72     {
73         measures->setTime10kmh(time);
74     }
75
76     else if (floor(speed) == 20)
77     {
78         measures->setTime20kmh(time);
79     }
80
81     else if (floor(speed) == 30)
82     {
83         measures->setTime30kmh(time);
84     }
85
86     else if (floor(speed) == 40)
87     {
88         measures->setTime40kmh(time);
89     }
90
91     else if (floor(speed) == 50)
92     {
93         measures->setTime50kmh(time);
94     }
95
96     else if (floor(speed) == 60)
97     {
98         measures->setTime60kmh(time);
99     }
100
101     else if (floor(speed) == 70)
102     {
103         measures->setTime70kmh(time);
104     }
105
106     else if (floor(speed) == 80)
107     {
108         measures->setTime80kmh(time);
109     }
110
111     else if (floor(speed) == 90)
112     {
113         measures->setTime90kmh(time);
114     }
115
116     else if (floor(speed) == 100)
117     {
118         measures->setTime100kmh(time);
119     }
120
121     else
122     {
123
124     }
125
126     // If speed is over 100 km/h emits speedAchieved() signal and close this dialog.
127     if (speed >= 40.0)
128     {
129         timer->stop();
130         accelerometer->stop();
131         time = 0;
132         speed = 0;
133         emit this->speedAchieved();
134         this->close();
135
136     }
137
138     // Updates speed and time.
139     else
140     {
141         timeString.setNum(time);
142         speedString.setNum(speed);
143         ui->labelSpeed->setText(speedString);
144         ui->labelTime->setText(timeString);
145         timer->start();
146     }
147
148 }
149
150 /**
151   * This slot function is called when Abort button is clicked.
152   */
153 void MeasureDialog::on_pushButtonAbort_clicked()
154 {
155     measures->setTime10kmh(0);
156     measures->setTime20kmh(0);
157     measures->setTime30kmh(0);
158     measures->setTime40kmh(0);
159     measures->setTime50kmh(0);
160     measures->setTime60kmh(0);
161     measures->setTime70kmh(0);
162     measures->setTime80kmh(0);
163     measures->setTime90kmh(0);
164     measures->setTime100kmh(0);
165     timer->stop();
166     accelerometer->stop();
167     time = 0;
168     speed = 0;
169     this->close();
170 }
171
172 /**
173   * Initializes measures class's member variables.
174   */
175 void MeasureDialog::initializeMeasures()
176 {
177     measures->setTime10kmh(0);
178     measures->setTime20kmh(0);
179     measures->setTime30kmh(0);
180     measures->setTime40kmh(0);
181     measures->setTime50kmh(0);
182     measures->setTime60kmh(0);
183     measures->setTime70kmh(0);
184     measures->setTime80kmh(0);
185     measures->setTime90kmh(0);
186     measures->setTime100kmh(0);
187 }