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