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