gets speed and time from accelerometer.
[speedfreak] / Client / measuredialog.cpp
1 #include "measuredialog.h"
2 #include "ui_measuredialog.h"
3
4
5 /**
6   *Constructor of this class.
7   *@param QWidget pointer to parent object. By default the value is NULL.
8   */
9 MeasureDialog::MeasureDialog(QWidget *parent) :
10     QDialog(parent),
11     ui(new Ui::MeasureDialog)
12 {
13     ui->setupUi(this);
14     ui->labelInfo->setText("Accelerate to 100 km/h");
15     time = 0;
16     speed = 0;
17     timer = new QTimer();
18
19     accelerometer = new Accelerometer();
20     accelerometer->start();
21
22     timer->setInterval(100);
23     timer->start();
24     connect(this->timer, SIGNAL(timeout()), this, SLOT(after_timeout()));
25 }
26
27 /**
28   *Destructor of this class.  Should be used to release all allocated resources.
29   */
30 MeasureDialog::~MeasureDialog()
31 {
32     delete ui;
33 }
34
35 void MeasureDialog::changeEvent(QEvent *e)
36 {
37     QDialog::changeEvent(e);
38     switch (e->type()) {
39     case QEvent::LanguageChange:
40         ui->retranslateUi(this);
41         break;
42     default:
43         break;
44     }
45 }
46
47 /**
48   *This slot function is called when timer gives timeout signal.
49   */
50 void MeasureDialog::after_timeout()
51 {
52     QString timeString, speedString;
53     //time++;
54     time = accelerometer->getIntervalTime();
55     speed = accelerometer->getCurrentSpeed();
56
57     // If speed is over 100 km/h emits speedAchieved() signal and close this dialog.
58     if(speed>=100.0)
59     {
60         timer->stop();
61         accelerometer->stop();
62         time = 0;
63         speed = 0;
64         emit this->speedAchieved();
65         this->close();
66
67     }
68
69     // Updates speed and time.
70     else
71     {
72         timeString.setNum(time);
73         speedString.setNum(speed);
74         ui->labelSpeed->setText(speedString);
75         ui->labelTime->setText(timeString);
76         timer->start();
77     }
78 }
79
80 /**
81   *This slot function is called when Abort button is clicked.
82   */
83 void MeasureDialog::on_pushButtonAbort_clicked()
84 {
85     timer->stop();
86     accelerometer->stop();
87     time = 0;
88     speed = 0;
89     this->close();
90 }