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