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