Maemo package folder added.
[speedfreak] / Client / resultdialog.cpp
1 /*
2  * Result dialog
3  *
4  * @author     Janne Änäkkälä <janne.anakkala@fudeco.com>
5  * @author     Toni Jussila     <toni.jussila@fudeco.com>
6  * @copyright  (c) 2010 Speed Freak team
7  * @license    http://opensource.org/licenses/gpl-license.php GNU Public License
8  */
9
10 #include "resultdialog.h"
11 #include "ui_resultdialog.h"
12 #include "usersettings.h"
13 #include "math.h"
14 #include <QPainter>
15 #include <QPicture>
16 #include <QDebug>
17
18 const int DIAGRAM_WIDTH = 400;
19 const int DIAGRAM_HEIGHT = 300;
20
21 const int DIAGRAMGAP10KMH = 300;
22 const int DIAGRAMGAP20KMH = 150;
23 const int DIAGRAMGAP30KMH = 100;
24 const int DIAGRAMGAP40KMH = 75;
25 const int DIAGRAMGAP50KMH = 60;
26 const int DIAGRAMGAP60KMH = 50;
27 const double DIAGRAMGAP70KMH = 42.86;
28 const double DIAGRAMGAP80KMH = 37.5;
29 const double DIAGRAMGAP90KMH = 33.33;
30 const int DIAGRAMGAP100KMH = 30;
31
32 const int DIAGRAMGAP5S = 80;
33 const int DIAGRAMGAP10S = 40;
34 const int DIAGRAMGAP16S = 25;
35 const int DIAGRAMGAP20S = 20;
36
37 const QPoint diagramStemStart(70, 330);
38 const QPoint diagramStemEnd(70, 30);
39
40 const QPoint diagramHorizontalStart(70, 330);
41 const QPoint diagramHorizontalEnd(470, 330);
42
43 const int diagramGap = 30;
44
45 // Test arrays for changing speeds and times to the points in diagram
46 static const int speedArray[11] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
47 //static const int timeArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 10, 12};
48
49 // Test point array for the diagram.
50 QPoint points[11];
51
52 /**
53   * Constructor of this class.
54   *
55   * @param QWidget pointer to parent object. By default the value is NULL.
56   */
57 ResultDialog::ResultDialog(QWidget *parent) :
58     QDialog(parent),
59     ui(new Ui::ResultDialog)
60 {
61     ui->setupUi(this);
62
63     helpAccelerationDialog = NULL;
64
65     timeAxelLength = 10;
66     resultString = "";
67     speedList << "0" << "10" << "20" << "30" << "40" << "50" << "60" << "70" << "80" << "90" << "100" ;
68     timeList << "0" << "1" << "2" << "3" << "4" << "5" << "6" << "7" << "8" << "9" << "10" << "11"
69             << "12" << "13" << "14" << "15" << "16" << "17" << "18" << "19" << "20";
70     this->diagramGapStem = DIAGRAMGAP100KMH;
71     this->diagramGapHorizontal = DIAGRAMGAP20S;
72     for (int i = 0; i < 11; i++)
73     {
74         timeArray[i] = 0;
75     }
76
77     //Clear info label
78     ui->labelInfoToUser->setText("");
79
80     if (loginSaved())
81     {
82         ui->pushButtonSend->setEnabled(true);
83     }
84     else
85     {
86         ui->pushButtonSend->setEnabled(false);
87         ui->labelInfoToUser->setText("You're not logged! Please register or log in and accelerate again.");
88     }
89 }
90
91 /**
92   * Destructor of this class.  Should be used to release all allocated resources.
93   */
94 ResultDialog::~ResultDialog()
95 {
96     delete ui;
97 }
98
99 /**
100   *
101   */
102 void ResultDialog::changeEvent(QEvent *e)
103 {
104     QDialog::changeEvent(e);
105     switch (e->type()) {
106     case QEvent::LanguageChange:
107         ui->retranslateUi(this);
108         break;
109     default:
110         break;
111     }
112 }
113
114 /**
115   * Draws speed diagram to the UI
116   *
117   * @param QPaintEvent
118  */
119 void ResultDialog::paintEvent(QPaintEvent *)
120 {
121     setHeaders();
122     QPainter painter(this);
123
124     painter.setRenderHint(QPainter::Antialiasing, true);
125     painter.setPen(QPen((Qt::gray),2));
126     QFont font;
127     QFont fontForResult;
128     font.setPixelSize(12);
129     painter.setFont(font);
130     painter.setBrush(QBrush((Qt::yellow), Qt::SolidPattern));
131
132     fontForResult.setPixelSize(50);
133     painter.setFont(fontForResult);
134     painter.drawText(diagramStemStart.x() + 50, diagramStemStart.y() - 150, resultString);
135     painter.setFont(font);
136
137     painter.setPen(QPen((Qt::darkCyan),2));
138     painter.drawLine(diagramStemStart, diagramStemEnd);
139     painter.drawLine(diagramHorizontalStart, diagramHorizontalEnd);
140     painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 100, "S");
141     painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 115, "P");
142     painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 130, "E");
143     painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 145, "E");
144     painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 160, "D");
145     painter.drawText(diagramStemStart.x() - 65, diagramStemEnd.y() + 180, "(km/h)");
146
147     painter.drawText(diagramStemStart.x() + 140, diagramStemStart.y() + 40, "T");
148     painter.drawText(diagramStemStart.x() + 150, diagramStemStart.y() + 40, "I");
149     painter.drawText(diagramStemStart.x() + 155, diagramStemStart.y() + 40, "M");
150     painter.drawText(diagramStemStart.x() + 165, diagramStemStart.y() + 40, "E");
151     painter.drawText(diagramStemStart.x() + 180, diagramStemStart.y() + 40, "(s)");
152
153     int currentX = 0;
154     int currentY = diagramStemStart.y();
155
156     painter.setPen(QPen((Qt::darkCyan),1));
157
158     int i = 0;
159     // Draws diagram's X-axel
160     while (currentX <= DIAGRAM_WIDTH)
161     {
162         painter.drawLine(currentX + diagramStemStart.x(), currentY, currentX + diagramStemStart.x(), currentY - 300);
163         painter.drawText(currentX + diagramStemStart.x() - 3, currentY + 20, timeList[i]);
164         currentX += this->diagramGapHorizontal;
165         i++;
166     }
167
168     currentX = diagramStemStart.x();
169     currentY = 0;
170
171     i = 0;
172     // Draws diagram's Y-axel
173     while (currentY >= -(DIAGRAM_HEIGHT))
174     {
175         painter.drawLine(currentX, diagramStemStart.y() + currentY, currentX+400, diagramStemStart.y() + currentY);
176         painter.drawText(currentX - 25, diagramStemStart.y() + currentY + 3, speedList[i]);
177         currentY -= this->diagramGapStem;
178         i++;
179     }
180
181     painter.setPen(QPen((Qt::red),2));
182
183     int pointsToShow = 0;
184     bool pointsUnderDiagramWidth = true;
185
186     for (i = 0; i < 11 ; i++)
187     {
188         if (points[i].x() > diagramHorizontalEnd.x())
189         {
190             pointsToShow = i;
191             pointsUnderDiagramWidth = false;
192             i = 10;
193         }
194     }
195
196     // Draws result line to the diagram
197     if (pointsUnderDiagramWidth)
198     {
199         painter.drawPolyline(points, this->getTargetChoice() + 1);
200     }
201
202     else
203     {
204         painter.drawPolyline(points, pointsToShow);
205     }
206 }
207
208 /**
209   * Change the given speed and time to the point for the diagram.
210   *
211   * @param aSpeed is speed which need to change, aTime is time in seconds which need to change.
212   * @return point is calculated from aSpeed and aTime.
213   */
214 QPoint ResultDialog::changeMeasuresToDiagramPoint(int aSpeed, qreal aTime)
215 {
216     QPoint point;
217
218     int speedAsPixels;
219     int timeAsPixels;
220
221     // Calculate speed and time to the point which can be drawn to the diagram
222     speedAsPixels = (DIAGRAM_HEIGHT*aSpeed) / (this->getTargetChoice() * 10);
223     timeAsPixels = DIAGRAM_WIDTH*aTime/timeAxelLength;
224
225     point.setY(diagramStemStart.y()-speedAsPixels);
226     point.setX(diagramStemStart.x()+timeAsPixels);
227
228     return point;
229 }
230
231 /**
232   * Sets result times in to the labels.
233   */
234 void ResultDialog::setTimesIntoLabels()
235 {
236     QString time, timeInteger;
237     timeInteger.sprintf("%.2f", timeArray[4]);
238     time = "0 - 40 km/h: ";
239     time.append(timeInteger);
240     ui->labelResult40kmh->setText(time);
241
242     timeInteger.sprintf("%.2f", timeArray[3]);
243     time = "0 - 30 km/h: ";
244     time.append(timeInteger);
245     ui->labelResult30kmh->setText(time);
246
247     timeInteger.sprintf("%.2f", timeArray[2]);
248     time = "0 - 20 km/h: ";
249     time.append(timeInteger);
250     ui->labelResult20kmh->setText(time);
251
252     timeInteger.sprintf("%.2f", timeArray[1]);
253     time = "0 - 10 km/h: ";
254     time.append(timeInteger);
255     ui->labelResult10kmh->setText(time);
256
257     timeInteger.sprintf("%.2f", timeArray[6]);
258     time = "0 - 60 km/h: ";
259     time.append(timeInteger);
260     ui->labelResult60kmh->setText(time);
261
262     timeInteger.sprintf("%.2f", timeArray[5]);
263     time = "0 - 50 km/h: ";
264     time.append(timeInteger);
265     ui->labelResult50kmh->setText(time);
266
267     timeInteger.sprintf("%.2f", timeArray[7]);
268     time = "0 - 70 km/h: ";
269     time.append(timeInteger);
270     ui->labelResult70kmh->setText(time);
271
272     timeInteger.sprintf("%.2f", timeArray[8]);
273     time = "0 - 80 km/h: ";
274     time.append(timeInteger);
275     ui->labelResult80kmh->setText(time);
276
277     timeInteger.sprintf("%.2f", timeArray[9]);
278     time = "0 - 90 km/h: ";
279     time.append(timeInteger);
280     ui->labelResult90kmh->setText(time);
281
282     timeInteger.sprintf("%.2f", timeArray[10]);
283     time = "0 - 100 km/h: ";
284     time.append(timeInteger);
285     ui->labelResult100kmh->setText(time);
286
287     showOrHideLabels();
288 }
289
290 /**
291   * Sets right timeAxelLength value depending the time which
292   * has spent to reach target speed.
293   *
294   * @param int choice
295   */
296 void ResultDialog::setTimeAxelLength(int pChoice)
297 {
298     if (timeArray[pChoice] <= 5.0)
299     {
300         timeAxelLength = 5;
301     }
302
303     else if (timeArray[pChoice] <= 10.0 && timeArray[pChoice] > 5.0)
304     {
305         timeAxelLength = 10;
306     }
307
308     else if (timeArray[pChoice] <= 16.0 && timeArray[pChoice] > 10.0)
309     {
310         timeAxelLength = 16;
311     }
312
313     else
314     {
315         timeAxelLength = 20;
316     }
317 }
318
319 /**
320   * This slot function close result dialog when new run -button has been clicked.
321   */
322 void ResultDialog::on_pushButtonNew_clicked()
323 {
324     for (int i = 0; i < 11; i++)
325     {
326         timeArray[i] = 0;
327     }
328     resultString = "";
329     this->close();
330     emit rejected();
331 }
332
333 /**
334   * This slot function emits sendresult signal for sending results to server when
335   * send results -button has been clicked.
336   * Emit accrealtimedialog sendresult.
337   */
338 void ResultDialog::on_pushButtonSend_clicked()
339 {
340     ui->pushButtonSend->setEnabled(false);
341     emit sendresult(timeArray[this->getTargetChoice()]);
342 }
343
344 /**
345   * Get result.
346   *
347   * @return double result.
348   */
349 double ResultDialog::getResult()
350 {
351     return timeArray[this->getTargetChoice()];
352 }
353
354 /**
355   * This public function sets diagram's stem gap
356   *
357   * @param pValue is the speed value which determines diagram gap's value
358   */
359 void ResultDialog::setEnd(int pValue)
360 {
361     for (int i = 0; i < 11; i++)
362     {
363         timeArray[i] = 0;
364     }
365     resultString = "";
366
367     switch (pValue)
368     {
369     case 10:
370         this->diagramGapStem = DIAGRAMGAP10KMH;
371         break;
372
373     case 20:
374         this->diagramGapStem = DIAGRAMGAP20KMH;
375         break;
376
377     case 30:
378         this->diagramGapStem = DIAGRAMGAP30KMH;
379         break;
380
381     case 40:
382         this->diagramGapStem = DIAGRAMGAP40KMH;
383         break;
384
385     case 50:
386         this->diagramGapStem = DIAGRAMGAP50KMH;
387         break;
388
389     case 60:
390         this->diagramGapStem = DIAGRAMGAP60KMH;
391         break;
392
393     case 70:
394         this->diagramGapStem = DIAGRAMGAP70KMH;
395         break;
396
397     case 80:
398         this->diagramGapStem = DIAGRAMGAP80KMH;
399         break;
400
401     case 90:
402         this->diagramGapStem = DIAGRAMGAP90KMH;
403         break;
404
405     case 100:
406         this->diagramGapStem = DIAGRAMGAP100KMH;
407         break;
408
409     default:
410         this->diagramGapStem = DIAGRAMGAP100KMH;
411         break;
412     }
413 }
414
415 /**
416   * This public function stores time in timeArray
417   *
418   * @param pSpeed is the speed value at the time so we know where store time
419   * @param pTime is the result which needs to be store in timeArray
420   */
421 void ResultDialog::setValue(int pSpeed, double pTime)
422 {
423     //timeArray[0] = 0;
424     if (pTime <= 5.0)
425     {
426         this->diagramGapHorizontal = DIAGRAMGAP5S;
427     }
428
429     else if (pTime <= 10.0 && pTime > 5.0)
430     {
431        this->diagramGapHorizontal = DIAGRAMGAP10S;
432     }
433
434     else if (pTime <= 16.0 && pTime > 10.0)
435     {
436         this->diagramGapHorizontal = DIAGRAMGAP16S;
437     }
438
439     else
440     {
441         this->diagramGapHorizontal = DIAGRAMGAP20S;
442     }
443
444     switch (pSpeed)
445     {
446     case 10:
447         timeArray[1] = pTime;
448         break;
449     case 20:
450         timeArray[2] = pTime;
451         break;
452     case 30:
453         timeArray[3] = pTime;
454         break;
455     case 40:
456         timeArray[4] = pTime;
457         break;
458     case 50:
459         timeArray[5] = pTime;
460         break;
461     case 60:
462         timeArray[6] = pTime;
463         break;
464     case 70:
465         timeArray[7] = pTime;
466         break;
467     case 80:
468         timeArray[8] = pTime;
469         break;
470     case 90:
471         timeArray[9] = pTime;
472         break;
473     case 100:
474         timeArray[10] = pTime;
475         break;
476     }
477
478     setTimeAxelLength(getTargetChoice());
479
480     for (int i = 0; i < 11; i++)
481     {
482         points[i] = changeMeasuresToDiagramPoint(speedArray[i], timeArray[i]);
483     }
484
485     setTimesIntoLabels();
486     this->repaint();
487 }
488
489 /**
490   * Sets dialog's heading and result text
491   */
492 void ResultDialog::setHeaders()
493 {
494     //QString resultString;
495     resultString.append("Time was ");
496
497     QString time;
498
499     if (this->diagramGapStem == DIAGRAMGAP100KMH)
500     {
501         time.sprintf("%.2f", timeArray[10]);
502         resultString.append(time);
503         this->setWindowTitle("Result for accelerating 100 km/h");
504     }
505
506     else if (this->diagramGapStem == DIAGRAMGAP90KMH)
507     {
508         time.sprintf("%.2f", timeArray[9]);
509         resultString.append(time);
510         this->setWindowTitle("Result for accelerating 90 km/h");
511     }
512
513     else if (this->diagramGapStem == DIAGRAMGAP80KMH)
514     {
515         time.sprintf("%.2f", timeArray[8]);
516         resultString.append(time);
517         this->setWindowTitle("Result for accelerating 80 km/h");
518     }
519
520     else if (this->diagramGapStem == DIAGRAMGAP70KMH)
521     {
522         time.sprintf("%.2f", timeArray[7]);
523         resultString.append(time);
524         this->setWindowTitle("Result for accelerating 70 km/h");
525     }
526
527     else if (this->diagramGapStem == DIAGRAMGAP60KMH)
528     {
529         time.sprintf("%.2f", timeArray[6]);
530         resultString.append(time);
531         this->setWindowTitle("Result for accelerating 60 km/h");
532     }
533
534     else if (this->diagramGapStem == DIAGRAMGAP50KMH)
535     {
536         time.sprintf("%.2f", timeArray[5]);
537         resultString.append(time);
538         this->setWindowTitle("Result for accelerating 50 km/h");
539     }
540
541     else if (this->diagramGapStem == DIAGRAMGAP40KMH)
542     {
543         time.sprintf("%.2f", timeArray[4]);
544         resultString.append(time);
545         this->setWindowTitle("Result for accelerating 40 km/h");
546     }
547
548     else if (this->diagramGapStem == DIAGRAMGAP30KMH)
549     {
550         time.sprintf("%.2f", timeArray[3]);
551         resultString.append(time);
552         this->setWindowTitle("Result for accelerating 30 km/h");
553     }
554
555     else if (this->diagramGapStem == DIAGRAMGAP20KMH)
556     {
557         time.sprintf("%.2f", timeArray[2]);
558         resultString.append(time);
559         this->setWindowTitle("Result for accelerating 20 km/h");
560     }
561
562     else
563     {
564         time.sprintf("%.2f", timeArray[1]);
565         resultString.append(time);
566         this->setWindowTitle("Result for accelerating 10 km/h");
567     }
568 }
569
570 /**
571   * Shows only wanted results and hides
572   * unwanted
573   */
574 void ResultDialog::showOrHideLabels()
575 {
576     if (this->diagramGapStem == DIAGRAMGAP10KMH)
577     {
578         ui->labelResult20kmh->hide();
579         ui->labelResult30kmh->hide();
580         ui->labelResult40kmh->hide();
581         ui->labelResult50kmh->hide();
582         ui->labelResult60kmh->hide();
583         ui->labelResult70kmh->hide();
584         ui->labelResult80kmh->hide();
585         ui->labelResult90kmh->hide();
586         ui->labelResult100kmh->hide();
587     }
588
589     else if (this->diagramGapStem == DIAGRAMGAP20KMH)
590     {
591         ui->labelResult10kmh->show();
592         ui->labelResult20kmh->show();
593         ui->labelResult30kmh->hide();
594         ui->labelResult40kmh->hide();
595         ui->labelResult50kmh->hide();
596         ui->labelResult60kmh->hide();
597         ui->labelResult70kmh->hide();
598         ui->labelResult80kmh->hide();
599         ui->labelResult90kmh->hide();
600         ui->labelResult100kmh->hide();
601     }
602
603     else if (this->diagramGapStem == DIAGRAMGAP30KMH)
604     {
605         ui->labelResult10kmh->show();
606         ui->labelResult20kmh->show();
607         ui->labelResult30kmh->show();
608         ui->labelResult40kmh->hide();
609         ui->labelResult50kmh->hide();
610         ui->labelResult60kmh->hide();
611         ui->labelResult70kmh->hide();
612         ui->labelResult80kmh->hide();
613         ui->labelResult90kmh->hide();
614         ui->labelResult100kmh->hide();
615     }
616
617     else if (this->diagramGapStem == DIAGRAMGAP40KMH)
618     {
619         ui->labelResult10kmh->show();
620         ui->labelResult20kmh->show();
621         ui->labelResult30kmh->show();
622         ui->labelResult40kmh->show();
623         ui->labelResult50kmh->hide();
624         ui->labelResult60kmh->hide();
625         ui->labelResult70kmh->hide();
626         ui->labelResult80kmh->hide();
627         ui->labelResult90kmh->hide();
628         ui->labelResult100kmh->hide();
629     }
630
631     else if (this->diagramGapStem == DIAGRAMGAP50KMH)
632     {
633         ui->labelResult10kmh->show();
634         ui->labelResult20kmh->show();
635         ui->labelResult30kmh->show();
636         ui->labelResult40kmh->show();
637         ui->labelResult50kmh->show();
638         ui->labelResult60kmh->hide();
639         ui->labelResult70kmh->hide();
640         ui->labelResult80kmh->hide();
641         ui->labelResult90kmh->hide();
642         ui->labelResult100kmh->hide();
643     }
644
645     else if (this->diagramGapStem == DIAGRAMGAP60KMH)
646     {
647         ui->labelResult10kmh->show();
648         ui->labelResult20kmh->show();
649         ui->labelResult30kmh->show();
650         ui->labelResult40kmh->show();
651         ui->labelResult50kmh->show();
652         ui->labelResult60kmh->show();
653         ui->labelResult70kmh->hide();
654         ui->labelResult80kmh->hide();
655         ui->labelResult90kmh->hide();
656         ui->labelResult100kmh->hide();
657     }
658
659     else if (this->diagramGapStem == DIAGRAMGAP70KMH)
660     {
661         ui->labelResult10kmh->show();
662         ui->labelResult20kmh->show();
663         ui->labelResult30kmh->show();
664         ui->labelResult40kmh->show();
665         ui->labelResult50kmh->show();
666         ui->labelResult60kmh->show();
667         ui->labelResult70kmh->show();
668         ui->labelResult80kmh->hide();
669         ui->labelResult90kmh->hide();
670         ui->labelResult100kmh->hide();
671     }
672
673     else if (this->diagramGapStem == DIAGRAMGAP80KMH)
674     {
675         ui->labelResult10kmh->show();
676         ui->labelResult20kmh->show();
677         ui->labelResult30kmh->show();
678         ui->labelResult40kmh->show();
679         ui->labelResult50kmh->show();
680         ui->labelResult60kmh->show();
681         ui->labelResult70kmh->show();
682         ui->labelResult80kmh->show();
683         ui->labelResult90kmh->hide();
684         ui->labelResult100kmh->hide();
685     }
686
687     else if (this->diagramGapStem == DIAGRAMGAP90KMH)
688     {
689         ui->labelResult10kmh->show();
690         ui->labelResult20kmh->show();
691         ui->labelResult30kmh->show();
692         ui->labelResult40kmh->show();
693         ui->labelResult50kmh->show();
694         ui->labelResult60kmh->show();
695         ui->labelResult70kmh->show();
696         ui->labelResult80kmh->show();
697         ui->labelResult90kmh->show();
698         ui->labelResult100kmh->hide();
699     }
700
701     else
702     {
703         ui->labelResult10kmh->show();
704         ui->labelResult20kmh->show();
705         ui->labelResult30kmh->show();
706         ui->labelResult40kmh->show();
707         ui->labelResult50kmh->show();
708         ui->labelResult60kmh->show();
709         ui->labelResult70kmh->show();
710         ui->labelResult80kmh->show();
711         ui->labelResult90kmh->show();
712         ui->labelResult100kmh->show();
713     }
714 }
715
716 /**
717   * Checks which target speed has been choosed
718   *
719   * @return targetChoice which tells to caller integer value about the target speed
720   *         e.g. 20 km/h is value 2 and 60 km/h is value 6
721   */
722 int ResultDialog::getTargetChoice()
723 {
724
725     int targetChoice = 0;
726
727     if (this->diagramGapStem == DIAGRAMGAP10KMH)
728     {
729        targetChoice = 1;
730     }
731
732     else if (this->diagramGapStem == DIAGRAMGAP20KMH)
733     {
734         targetChoice = 2;
735     }
736
737     else if (this->diagramGapStem == DIAGRAMGAP30KMH)
738     {
739         targetChoice = 3;
740     }
741
742     else if (this->diagramGapStem == DIAGRAMGAP40KMH)
743     {
744         targetChoice = 4;
745     }
746
747     else if (this->diagramGapStem == DIAGRAMGAP50KMH)
748     {
749         targetChoice = 5;
750     }
751
752     else if (this->diagramGapStem == DIAGRAMGAP60KMH)
753     {
754         targetChoice = 6;
755     }
756
757     else if (this->diagramGapStem == DIAGRAMGAP70KMH)
758     {
759         targetChoice = 7;
760     }
761
762     else if (this->diagramGapStem == DIAGRAMGAP80KMH)
763     {
764         targetChoice = 8;
765     }
766
767     else if (this->diagramGapStem == DIAGRAMGAP90KMH)
768     {
769         targetChoice = 9;
770     }
771
772     else
773     {
774         targetChoice = 10;
775     }
776     return targetChoice;
777 }
778 /**
779   * Set label info to user.
780   *
781   * @param QString info text
782   */
783 void ResultDialog::setLabelInfoToUser(QString infoText)
784 {
785     this->ui->labelInfoToUser->setText(infoText);
786 }
787
788 /**
789   * This function enable send server button.
790   */
791 void ResultDialog::setSendServerButtonEnabled()
792 {
793     ui->pushButtonSend->setEnabled(true);
794 }
795
796 /**
797   * This slot function called when ever info button clicked.
798   */
799 void ResultDialog::on_pushButtonInfo_clicked()
800 {
801     if(!helpAccelerationDialog)
802     {
803         helpAccelerationDialog = new HelpAccelerationDialog;
804     }
805     connect(helpAccelerationDialog, SIGNAL(rejected()), this, SLOT(killHelpDialog()));
806     helpAccelerationDialog->show();
807 }
808
809 /**
810   * This slot function called when ever dialog rejected.
811   */
812 void ResultDialog::killHelpDialog()
813 {
814     if(helpAccelerationDialog)
815     {
816         qDebug() << "__Result kill: helpAccelerationDialog";
817         delete helpAccelerationDialog;
818         helpAccelerationDialog = NULL;
819     }
820 }