* CarMainWindow main class
*
* @author Janne Änäkkälä <janne.anakkala@fudeco.com>
+ * @author Toni Jussila <toni.jussila@fudeco.com>
* @copyright (c) 2010 Speed Freak team
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
*/
#include "resultdialog.h"
#include "ui_resultdialog.h"
+#include "usersettings.h"
#include "math.h"
#include <QPainter>
#include <QPicture>
const int DIAGRAMGAP5S = 80;
const int DIAGRAMGAP10S = 40;
+const int DIAGRAMGAP16S = 25;
const int DIAGRAMGAP20S = 20;
const QPoint diagramStemStart(70, 330);
{
ui->setupUi(this);
timeAxelLength = 10;
+ resultString = "";
speedList << "0" << "10" << "20" << "30" << "40" << "50" << "60" << "70" << "80" << "90" << "100" ;
timeList << "0" << "1" << "2" << "3" << "4" << "5" << "6" << "7" << "8" << "9" << "10" << "11"
<< "12" << "13" << "14" << "15" << "16" << "17" << "18" << "19" << "20";
+ this->diagramGapStem = DIAGRAMGAP100KMH;
+ this->diagramGapHorizontal = DIAGRAMGAP20S;
for (int i = 0; i < 11; i++)
{
timeArray[i] = 0;
}
- /*
- // TODO check that logging is ok.
- if (isloggingNotOk)
+
+ if (loginSaved())
{
- ui->pushButtonSend->setEnabled(false);
+ ui->pushButtonSend->setEnabled(true);
}
else
{
- ui->pushButtonSend->setEnabled(true);
+ ui->pushButtonSend->setEnabled(false);
}
- */
}
/**
*/
void ResultDialog::paintEvent(QPaintEvent *)
{
- QString resultString;
- resultString.append("Time was ");
-
- if (this->diagramGapStem == DIAGRAMGAP100KMH)
- {
- resultString.append(QString::number(timeArray[10]));
- this->setWindowTitle("Result for accelerating 100 km/h");
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP80KMH)
- {
- resultString.append(QString::number(timeArray[8]));
- this->setWindowTitle("Result for accelerating 80 km/h");
- }
-
- else
- {
- resultString.append(QString::number(timeArray[4]));
- this->setWindowTitle("Result for accelerating 40 km/h");
- }
-
+ setHeaders();
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing, true);
painter.setPen(QPen((Qt::darkCyan),2));
painter.drawLine(diagramStemStart, diagramStemEnd);
painter.drawLine(diagramHorizontalStart, diagramHorizontalEnd);
+ painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 100, "S");
+ painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 115, "P");
+ painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 130, "E");
+ painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 145, "E");
+ painter.drawText(diagramStemStart.x() - 50, diagramStemEnd.y() + 160, "D");
+ painter.drawText(diagramStemStart.x() - 65, diagramStemEnd.y() + 180, "(km/h)");
+
+ painter.drawText(diagramStemStart.x() + 140, diagramStemStart.y() + 40, "T");
+ painter.drawText(diagramStemStart.x() + 150, diagramStemStart.y() + 40, "I");
+ painter.drawText(diagramStemStart.x() + 155, diagramStemStart.y() + 40, "M");
+ painter.drawText(diagramStemStart.x() + 165, diagramStemStart.y() + 40, "E");
+ painter.drawText(diagramStemStart.x() + 180, diagramStemStart.y() + 40, "(s)");
int currentX = 0;
int currentY = diagramStemStart.y();
}
// Draws result line to the diagram
- if (this->diagramGapStem == DIAGRAMGAP100KMH)
+ if (pointsUnderDiagramWidth)
{
- if (pointsUnderDiagramWidth)
- {
- painter.drawPolyline(points, 11);
- }
-
- else
- {
- painter.drawPolyline(points, pointsToShow);
- }
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP80KMH)
- {
- if (pointsUnderDiagramWidth)
- {
- painter.drawPolyline(points, 9);
- }
-
- else
- {
- painter.drawPolyline(points, pointsToShow);
- }
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP60KMH)
- {
- if (pointsUnderDiagramWidth)
- {
- painter.drawPolyline(points, 7);
- }
-
- else
- {
- painter.drawPolyline(points, pointsToShow);
- }
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP50KMH)
- {
- if (pointsUnderDiagramWidth)
- {
- painter.drawPolyline(points, 6);
- }
-
- else
- {
- painter.drawPolyline(points, pointsToShow);
- }
+ painter.drawPolyline(points, this->getTargetChoice() + 1);
}
else
{
- if (pointsUnderDiagramWidth)
- {
- painter.drawPolyline(points, 5);
- }
-
- else
- {
- painter.drawPolyline(points, pointsToShow);
- }
+ painter.drawPolyline(points, pointsToShow);
}
}
int timeAsPixels;
// Calculate speed and time to the point which can be drawn to the diagram
- if (this->diagramGapStem == DIAGRAMGAP100KMH)
- {
- speedAsPixels = DIAGRAM_HEIGHT*aSpeed/100;
- timeAsPixels = DIAGRAM_WIDTH*aTime/timeAxelLength;
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP80KMH)
- {
- speedAsPixels = DIAGRAM_HEIGHT*aSpeed/80;
- timeAsPixels = DIAGRAM_WIDTH*aTime/timeAxelLength;
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP60KMH)
- {
- speedAsPixels = DIAGRAM_HEIGHT*aSpeed/60;
- timeAsPixels = DIAGRAM_WIDTH*aTime/timeAxelLength;
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP50KMH)
- {
- speedAsPixels = DIAGRAM_HEIGHT*aSpeed/50;
- timeAsPixels = DIAGRAM_WIDTH*aTime/timeAxelLength;
- }
+ speedAsPixels = (DIAGRAM_HEIGHT*aSpeed) / (this->getTargetChoice() * 10);
+ timeAsPixels = DIAGRAM_WIDTH*aTime/timeAxelLength;
- else
- {
- speedAsPixels = DIAGRAM_HEIGHT*aSpeed/40;
- timeAsPixels = DIAGRAM_WIDTH*aTime/timeAxelLength;
- }
point.setY(diagramStemStart.y()-speedAsPixels);
point.setX(diagramStemStart.x()+timeAsPixels);
}
/**
- * Saves the given measures to array.
- * @param pMeasures has information about acceleration.
- */
-/*
-void ResultDialog::saveMeasuresToArray(Measures *pMeasures)
-{
- timeArray[0] = 0;
- timeArray[1] = pMeasures->getTime10kmh();
- timeArray[2] = pMeasures->getTime20kmh();
- timeArray[3] = pMeasures->getTime30kmh();
- timeArray[4] = pMeasures->getTime40kmh();
- timeArray[5] = pMeasures->getTime50kmh();
- timeArray[6] = pMeasures->getTime60kmh();
- timeArray[7] = pMeasures->getTime70kmh();
- timeArray[8] = pMeasures->getTime80kmh();
- timeArray[9] = pMeasures->getTime90kmh();
- timeArray[10] = pMeasures->getTime100kmh();
-
- setTimeAxelLength();
-
- for (int i = 0; i < 11; i++)
- {
- points[i] = changeMeasuresToDiagramPoint(speedArray[i], timeArray[i]);
- }
-
- setTimesIntoLabels();
- this->repaint();
-}*/
-
-/**
- * Saves the given diagram gap to the member variable.
- * @param pDiagramGapStem has information about the right gap for diagram stem axel.
- */
-void ResultDialog::setDiagramGapStem(double pDiagramGapStem)
-{
- this->diagramGapStem = pDiagramGapStem;
-}
-
-/**
- * Saves the given diagram gap to the member variable.
- * @param pDiagramGapHorizontal has information about the right gap for diagram horizontal axel.
- */
-void ResultDialog::setDiagramGapHorizontal(double pDiagramGapHorizontal)
-{
- this->diagramGapHorizontal = pDiagramGapHorizontal;
-}
-
-/**
- * Sets result times in to the labels and shows only wanted results and hides
- * unwanted.
+ * Sets result times in to the labels.
*/
void ResultDialog::setTimesIntoLabels()
{
time.append(timeInteger);
ui->labelResult100kmh->setText(time);
- if (this->diagramGapStem == DIAGRAMGAP40KMH)
- {
- ui->labelResult50kmh->hide();
- ui->labelResult60kmh->hide();
- ui->labelResult70kmh->hide();
- ui->labelResult80kmh->hide();
- ui->labelResult90kmh->hide();
- ui->labelResult100kmh->hide();
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP80KMH)
- {
- ui->labelResult50kmh->show();
- ui->labelResult60kmh->show();
- ui->labelResult70kmh->show();
- ui->labelResult80kmh->show();
- ui->labelResult90kmh->hide();
- ui->labelResult100kmh->hide();
- }
-
- else
- {
- ui->labelResult50kmh->show();
- ui->labelResult60kmh->show();
- ui->labelResult70kmh->show();
- ui->labelResult80kmh->show();
- ui->labelResult90kmh->show();
- ui->labelResult100kmh->show();
- }
+ showOrHideLabels();
}
/**
* Sets right timeAxelLength value depending the time which
* has spent to reach target speed.
*/
-void ResultDialog::setTimeAxelLength()
+void ResultDialog::setTimeAxelLength(int pChoice)
{
- if (this->diagramGapStem == DIAGRAMGAP40KMH)
+ if (timeArray[pChoice] <= 5.0)
{
- if (timeArray[4] <= 5)
- {
- timeAxelLength = 5;
- }
-
- else if (timeArray[4] <= 10)
- {
- timeAxelLength = 10;
- }
-
- else if (timeArray[4] <= 15)
- {
- timeAxelLength = 15;
- }
-
- else
- {
- timeAxelLength = 20;
- }
+ timeAxelLength = 5;
}
- else if (this->diagramGapStem == DIAGRAMGAP80KMH)
+ else if (timeArray[pChoice] <= 10.0 && timeArray[pChoice] > 5.0)
{
- if (timeArray[8] <= 5)
- {
- timeAxelLength = 5;
- }
-
- else if (timeArray[8] <= 10)
- {
- timeAxelLength = 10;
- }
-
- else if (timeArray[8] <= 15)
- {
- timeAxelLength = 15;
- }
+ timeAxelLength = 10;
+ }
- else
- {
- timeAxelLength = 20;
- }
+ else if (timeArray[pChoice] <= 16.0 && timeArray[pChoice] > 10.0)
+ {
+ timeAxelLength = 16;
}
else
{
- if (timeArray[10] <= 5)
- {
- timeAxelLength = 5;
- }
-
- else if (timeArray[10] <= 10)
- {
- timeAxelLength = 10;
- }
-
- else if (timeArray[10] <= 15)
- {
- timeAxelLength = 15;
- }
-
- else
- {
- timeAxelLength = 20;
- }
+ timeAxelLength = 20;
}
}
{
timeArray[i] = 0;
}
+ resultString = "";
this->close();
}
/**
* This slot function emits sendresult signal for sending results to server when
* send results -button has been clicked.
+ * Emit accrealtimedialog sendresult.
*/
void ResultDialog::on_pushButtonSend_clicked()
{
- if (this->diagramGapStem == DIAGRAMGAP100KMH)
- {
- emit sendresult(timeArray[10]);
- }
-
- else if (this->diagramGapStem == DIAGRAMGAP80KMH)
- {
- emit sendresult(timeArray[8]);
- }
+ //emit sendresult();
+ emit sendresult(timeArray[this->getTargetChoice()]);
+}
- else
- {
- emit sendresult(timeArray[4]);
- }
+double ResultDialog::getResult()
+{
+ return timeArray[this->getTargetChoice()];
}
/**
*/
void ResultDialog::setEnd(int pValue)
{
+ for (int i = 0; i < 11; i++)
+ {
+ timeArray[i] = 0;
+ }
+ resultString = "";
+
switch (pValue)
{
case 10:
this->diagramGapStem = DIAGRAMGAP100KMH;
break;
}
-
}
/**
- * This public function stores times in timeArray
+ * This public function stores time in timeArray
* @param pSpeed is the speed value at the time so we know where store time
* @param pTime is the result which needs to be store in timeArray
*/
void ResultDialog::setValue(int pSpeed, double pTime)
{
- timeArray[0] = 0;
- if (floor(pTime) <= 5)
+ //timeArray[0] = 0;
+ if (pTime <= 5.0)
{
this->diagramGapHorizontal = DIAGRAMGAP5S;
}
- else if (floor(pTime) <= 10)
+ else if (pTime <= 10.0 && pTime > 5.0)
{
this->diagramGapHorizontal = DIAGRAMGAP10S;
}
+ else if (pTime <= 16.0 && pTime > 10.0)
+ {
+ this->diagramGapHorizontal = DIAGRAMGAP16S;
+ }
+
else
{
this->diagramGapHorizontal = DIAGRAMGAP20S;
timeArray[10] = pTime;
break;
}
- setTimeAxelLength();
+
+ setTimeAxelLength(getTargetChoice());
for (int i = 0; i < 11; i++)
{
setTimesIntoLabels();
this->repaint();
}
+
+/**
+ * Sets dialog's heading and result text
+ */
+void ResultDialog::setHeaders()
+{
+ //QString resultString;
+ resultString.append("Time was ");
+
+ QString time;
+
+ if (this->diagramGapStem == DIAGRAMGAP100KMH)
+ {
+ time.sprintf("%.2f", timeArray[10]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 100 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP90KMH)
+ {
+ time.sprintf("%.2f", timeArray[9]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 90 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP80KMH)
+ {
+ time.sprintf("%.2f", timeArray[8]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 80 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP70KMH)
+ {
+ time.sprintf("%.2f", timeArray[7]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 70 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP60KMH)
+ {
+ time.sprintf("%.2f", timeArray[6]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 60 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP50KMH)
+ {
+ time.sprintf("%.2f", timeArray[5]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 50 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP40KMH)
+ {
+ time.sprintf("%.2f", timeArray[4]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 40 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP30KMH)
+ {
+ time.sprintf("%.2f", timeArray[3]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 30 km/h");
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP20KMH)
+ {
+ time.sprintf("%.2f", timeArray[2]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 20 km/h");
+ }
+
+ else
+ {
+ time.sprintf("%.2f", timeArray[1]);
+ resultString.append(time);
+ this->setWindowTitle("Result for accelerating 10 km/h");
+ }
+}
+
+/**
+ * Shows only wanted results and hides
+ * unwanted
+ */
+void ResultDialog::showOrHideLabels()
+{
+ if (this->diagramGapStem == DIAGRAMGAP10KMH)
+ {
+ ui->labelResult20kmh->hide();
+ ui->labelResult30kmh->hide();
+ ui->labelResult40kmh->hide();
+ ui->labelResult50kmh->hide();
+ ui->labelResult60kmh->hide();
+ ui->labelResult70kmh->hide();
+ ui->labelResult80kmh->hide();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP20KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->hide();
+ ui->labelResult40kmh->hide();
+ ui->labelResult50kmh->hide();
+ ui->labelResult60kmh->hide();
+ ui->labelResult70kmh->hide();
+ ui->labelResult80kmh->hide();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP30KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->hide();
+ ui->labelResult50kmh->hide();
+ ui->labelResult60kmh->hide();
+ ui->labelResult70kmh->hide();
+ ui->labelResult80kmh->hide();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP40KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->show();
+ ui->labelResult50kmh->hide();
+ ui->labelResult60kmh->hide();
+ ui->labelResult70kmh->hide();
+ ui->labelResult80kmh->hide();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP50KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->show();
+ ui->labelResult50kmh->show();
+ ui->labelResult60kmh->hide();
+ ui->labelResult70kmh->hide();
+ ui->labelResult80kmh->hide();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP60KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->show();
+ ui->labelResult50kmh->show();
+ ui->labelResult60kmh->show();
+ ui->labelResult70kmh->hide();
+ ui->labelResult80kmh->hide();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP70KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->show();
+ ui->labelResult50kmh->show();
+ ui->labelResult60kmh->show();
+ ui->labelResult70kmh->show();
+ ui->labelResult80kmh->hide();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP80KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->show();
+ ui->labelResult50kmh->show();
+ ui->labelResult60kmh->show();
+ ui->labelResult70kmh->show();
+ ui->labelResult80kmh->show();
+ ui->labelResult90kmh->hide();
+ ui->labelResult100kmh->hide();
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP90KMH)
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->show();
+ ui->labelResult50kmh->show();
+ ui->labelResult60kmh->show();
+ ui->labelResult70kmh->show();
+ ui->labelResult80kmh->show();
+ ui->labelResult90kmh->show();
+ ui->labelResult100kmh->hide();
+ }
+
+ else
+ {
+ ui->labelResult10kmh->show();
+ ui->labelResult20kmh->show();
+ ui->labelResult30kmh->show();
+ ui->labelResult40kmh->show();
+ ui->labelResult50kmh->show();
+ ui->labelResult60kmh->show();
+ ui->labelResult70kmh->show();
+ ui->labelResult80kmh->show();
+ ui->labelResult90kmh->show();
+ ui->labelResult100kmh->show();
+ }
+}
+
+/**
+ * Checks which target speed has been choosed
+ * @return targetChoice which tells to caller integer value about the target speed
+ * e.g. 20 km/h is value 2 and 60 km/h is value 6
+ */
+int ResultDialog::getTargetChoice()
+{
+
+ int targetChoice = 0;
+
+ if (this->diagramGapStem == DIAGRAMGAP10KMH)
+ {
+ targetChoice = 1;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP20KMH)
+ {
+ targetChoice = 2;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP30KMH)
+ {
+ targetChoice = 3;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP40KMH)
+ {
+ targetChoice = 4;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP50KMH)
+ {
+ targetChoice = 5;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP60KMH)
+ {
+ targetChoice = 6;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP70KMH)
+ {
+ targetChoice = 7;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP80KMH)
+ {
+ targetChoice = 8;
+ }
+
+ else if (this->diagramGapStem == DIAGRAMGAP90KMH)
+ {
+ targetChoice = 9;
+ }
+
+ else
+ {
+ targetChoice = 10;
+ }
+ return targetChoice;
+}
+
+void ResultDialog::setLabelInfoToUser(QString infoText)
+{
+ this->ui->labelInfoToUser->setText(infoText);
+}