From: Janne Änäkkälä Date: Thu, 18 Mar 2010 07:16:22 +0000 (+0200) Subject: Added feature which scales result diagrams speed axel right way concerning the choice... X-Git-Tag: v0.1~35 X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=commitdiff_plain;h=ceaaf5439cc6d92466365b40e68f28744b0421a3 Added feature which scales result diagrams speed axel right way concerning the choice which user has been selected in start tab. Also Show diagram -button added in measure tab which opens result diagram. --- diff --git a/Client/carmainwindow.cpp b/Client/carmainwindow.cpp index 1e3b7c7..3cdaac1 100644 --- a/Client/carmainwindow.cpp +++ b/Client/carmainwindow.cpp @@ -20,7 +20,7 @@ CarMainWindow::CarMainWindow(QWidget *parent):QMainWindow(parent), ui(new Ui::Ca { ui->setupUi(this); ui->tabWidget->setCurrentWidget(this->ui->StartTab); - //result = new ResultDialog(); + result = new ResultDialog(); //measure = new MeasureDialog(); welcomeDialog = new WelcomeDialog(); welcomeDialog->show(); @@ -105,7 +105,27 @@ void CarMainWindow::on_listViewStartTabAccelerationCategories_clicked(QModelInde */ void CarMainWindow::on_autoStartButton_clicked() { + choice = ui->listViewStartTabAccelerationCategories->currentIndex(); + choiceInt = choice.row(); + qDebug() << choiceInt; + if (choiceInt == 0) + { + ui->labelMeasureTabHeader->setText("Accelerate to 40 km/h"); + result->setDiagramGapStem(75); + } + else if (choiceInt == 1) + { + ui->labelMeasureTabHeader->setText("Accelerate to 100 km/h"); + result->setDiagramGapStem(30); + } + + else + { + ui->labelMeasureTabHeader->setText("Accelerate to 80 km/h"); + result->setDiagramGapStem(37.5); + } + ui->labelMeasureTabResult->setText(""); //delete measure; //measure = NULL; //measure = new MeasureDialog(); @@ -114,6 +134,45 @@ void CarMainWindow::on_autoStartButton_clicked() timer->start(); // Show measure dialog. //measure->show(); + + // TODO: Move next if else to the function which is called when target speed + // has reached. + if (choiceInt == 0) + { + if (floor(this->measures->getTime40kmh()) <= 5) + { + result->setDiagramGapHorizontal(80); + } + + else if (floor(this->measures->getTime40kmh()) <= 10) + { + result->setDiagramGapHorizontal(40); + } + + else + { + result->setDiagramGapHorizontal(20); + } + } + + else + { + if (floor(this->measures->getTime40kmh()) <= 5) + { + result->setDiagramGapHorizontal(80); + } + + else if (floor(this->measures->getTime40kmh()) <= 10) + { + result->setDiagramGapHorizontal(40); + } + + else + { + result->setDiagramGapHorizontal(20); + } + } + ui->tabWidget->setCurrentWidget(this->ui->tabMeasureResult); } @@ -194,6 +253,41 @@ void CarMainWindow::openResultView() //result->show(); ui->pushButtonSendResult->setEnabled(true); QString timeInteger; + if (choiceInt == 0) + { + if (floor(this->measures->getTime40kmh()) <= 5) + { + result->setDiagramGapHorizontal(80); + } + + else if (floor(this->measures->getTime40kmh()) <= 10) + { + result->setDiagramGapHorizontal(40); + } + + else + { + result->setDiagramGapHorizontal(20); + } + } + + else + { + if (floor(this->measures->getTime40kmh()) <= 5) + { + result->setDiagramGapHorizontal(80); + } + + else if (floor(this->measures->getTime40kmh()) <= 10) + { + result->setDiagramGapHorizontal(40); + } + + else + { + result->setDiagramGapHorizontal(20); + } + } timeInteger.setNum(this->measures->getTime40kmh()); //time = "0 - 40 km/h: "; //time.append(timeInteger); @@ -430,6 +524,28 @@ void CarMainWindow::on_drawRoutePushButton_clicked() myRoute->show(); } +/** + * Opens result dialog when show result button is clicked. + * Sends measures as parameter to the resultdialogs saveMeasuresToArray-function. + */ +void CarMainWindow::on_pushButtonShowResultDialog_clicked() +{ + Measures meas; + meas.setTime10kmh(1.3); + meas.setTime20kmh(2.5); + meas.setTime30kmh(3.6); + meas.setTime40kmh(6.7); + meas.setTime50kmh(7.3); + meas.setTime60kmh(7.5); + meas.setTime70kmh(8.6); + meas.setTime80kmh(8.7); + meas.setTime90kmh(9.6); + meas.setTime100kmh(9.9); + result->setDiagramGapHorizontal(40); + result->saveMeasuresToArray(&meas); + this->result->show(); +} + void CarMainWindow::userLogin() { myHttpClient->checkLogin(); diff --git a/Client/carmainwindow.h b/Client/carmainwindow.h index a65818f..90cdc61 100644 --- a/Client/carmainwindow.h +++ b/Client/carmainwindow.h @@ -25,7 +25,7 @@ #include #include #include -//#include "resultdialog.h" +#include "resultdialog.h" //#include "measuredialog.h" #include "welcomedialog.h" #include "loginwindow.h" @@ -62,7 +62,7 @@ protected: private: Ui::CarMainWindow *ui; - //ResultDialog *result; + ResultDialog *result; //MeasureDialog *measure; WelcomeDialog *welcomeDialog; CategoryList *categorylist; @@ -85,11 +85,15 @@ private: double speed; Measures *measures; + QModelIndex choice; + int choiceInt; + signals: void speedAchieved(); void userNameChanged(); private slots: + void on_pushButtonShowResultDialog_clicked(); void on_drawRoutePushButton_clicked(); void on_pushButtonSendResult_clicked(); void on_pushButtonMeasureTabAbort_clicked(); diff --git a/Client/carmainwindow.ui b/Client/carmainwindow.ui index f619f55..6a10e33 100644 --- a/Client/carmainwindow.ui +++ b/Client/carmainwindow.ui @@ -446,6 +446,19 @@ 0 + + + + 470 + 140 + 161 + 71 + + + + Show diagram + + diff --git a/Client/resultdialog.cpp b/Client/resultdialog.cpp index 679afce..3313f73 100644 --- a/Client/resultdialog.cpp +++ b/Client/resultdialog.cpp @@ -10,20 +10,29 @@ #include "ui_resultdialog.h" #include -const QPoint diagramStemStart(50, 350); -const QPoint diagramStemEnd(50, 30); +const int DIAGRAM_WIDTH = 400; +const int DIAGRAM_HEIGHT = 300; -const QPoint diagramHorizontalStart(50, 350); -const QPoint diagramHorizontalEnd(450, 350); +const int DIAGRAMGAP100KMH = 30; +const int DIAGRAMGAP40KMH = 75; +const int DIAGRAMGAP60KMH = 50; +const int DIAGRAMGAP50KMH = 60; +const double DIAGRAMGAP80KMH = 37.5; + +const QPoint diagramStemStart(70, 330); +const QPoint diagramStemEnd(70, 30); + +const QPoint diagramHorizontalStart(70, 330); +const QPoint diagramHorizontalEnd(470, 330); const int diagramGap = 30; // Test arrays for changing speeds and times to the points in diagram -static const int speedArray[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; +static const int speedArray[11] = {0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100}; //static const int timeArray[10] = {1, 2, 3, 4, 5, 6, 7, 8, 10, 12}; // Test point array for the diagram. -QPoint points[10]; +QPoint points[11]; /** * Constructor of this class. @@ -34,11 +43,9 @@ ResultDialog::ResultDialog(QWidget *parent) : ui(new Ui::ResultDialog) { ui->setupUi(this); - - - - // ui->labelXLine->setText(ui->labelXLine->text().append(": time/ s")); - // ui->labelYLine->setText(ui->labelYLine->text().append(": speed/ km/h")); + 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"; } /** @@ -69,34 +76,69 @@ void ResultDialog::paintEvent(QPaintEvent *) { QPainter painter(this); - painter.setRenderHint(QPainter::Antialiasing, true); - painter.setPen(QPen((Qt::white),2)); - painter.setBrush(QBrush((Qt::yellow), Qt::SolidPattern)); - painter.drawLine(diagramStemStart, diagramStemEnd); - painter.drawLine(diagramHorizontalStart, diagramHorizontalEnd); + painter.setRenderHint(QPainter::Antialiasing, true); + painter.setPen(QPen((Qt::red),2)); + QFont font; + font.setPixelSize(12); + painter.setFont(font); + painter.setBrush(QBrush((Qt::yellow), Qt::SolidPattern)); + painter.drawLine(diagramStemStart, diagramStemEnd); + painter.drawLine(diagramHorizontalStart, diagramHorizontalEnd); + + int currentX = 0; + int currentY = diagramStemStart.y(); + + painter.setPen(QPen((Qt::blue),1)); + // Draws diagram's X-axel + int i = 0; + while (currentX <= DIAGRAM_WIDTH) + { + painter.drawLine(currentX + diagramStemStart.x(), currentY, currentX + diagramStemStart.x(), currentY - 300); + painter.drawText(currentX + diagramStemStart.x(), currentY + 20, timeList[i]); + currentX += this->diagramGapHorizontal; + i++; + } - int currentX = diagramStemStart.x(); - int currentY = diagramStemStart.y(); + currentX = diagramStemStart.x(); + currentY = 0; - // Draws diagram's X-axel - for (int i = 0; i < 13; i++) - { - currentX += diagramGap; - painter.drawLine(currentX, currentY, currentX, currentY - 10); - } + i = 0; + // Draws diagram's Y-axel + while (currentY >= -(DIAGRAM_HEIGHT)) + { + painter.drawLine(currentX, diagramStemStart.y() + currentY, currentX+400, diagramStemStart.y() + currentY); + painter.drawText(currentX - 25, diagramStemStart.y() + currentY, speedList[i]); + currentY -= this->diagramGapStem; + i++; + } - currentX = diagramStemStart.x(); - currentY = diagramStemStart.y(); + painter.setPen(QPen((Qt::white),2)); - // Draws diagram's Y-axel - for (int i = 0; i < 10; i++) - { - currentY -= diagramGap; - painter.drawLine(currentX, currentY, currentX+10, currentY); - } + // Draws result line to the diagram + if (this->diagramGapStem == DIAGRAMGAP100KMH) + { + painter.drawPolyline(points, 11); + } - painter.drawPolyline(points, 4); + else if (this->diagramGapStem == DIAGRAMGAP80KMH) + { + painter.drawPolyline(points, 9); + } + + else if (this->diagramGapStem == DIAGRAMGAP60KMH) + { + painter.drawPolyline(points, 7); + } + else if (this->diagramGapStem == DIAGRAMGAP50KMH) + { + painter.drawPolyline(points, 6); + } + + else + { + painter.drawPolyline(points, 5); + } } /** @@ -110,8 +152,37 @@ QPoint ResultDialog::changeMeasuresToDiagramPoint(int aSpeed, qreal aTime) int speedAsPixels; int timeAsPixels; - speedAsPixels = 300*aSpeed/100; - timeAsPixels = 300*aTime/10; + + // 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/10; + } + + else if (this->diagramGapStem == DIAGRAMGAP80KMH) + { + speedAsPixels = DIAGRAM_HEIGHT*aSpeed/80; + timeAsPixels = DIAGRAM_WIDTH*aTime/10; + } + + else if (this->diagramGapStem == DIAGRAMGAP60KMH) + { + speedAsPixels = DIAGRAM_HEIGHT*aSpeed/60; + timeAsPixels = DIAGRAM_WIDTH*aTime/10; + } + + else if (this->diagramGapStem == DIAGRAMGAP50KMH) + { + speedAsPixels = DIAGRAM_HEIGHT*aSpeed/50; + timeAsPixels = DIAGRAM_WIDTH*aTime/10; + } + + else + { + speedAsPixels = DIAGRAM_HEIGHT*aSpeed/40; + timeAsPixels = DIAGRAM_WIDTH*aTime/10; + } point.setY(diagramStemStart.y()-speedAsPixels); point.setX(diagramStemStart.x()+timeAsPixels); @@ -124,63 +195,130 @@ QPoint ResultDialog::changeMeasuresToDiagramPoint(int aSpeed, qreal aTime) */ void ResultDialog::saveMeasuresToArray(Measures *pMeasures) { - timeArray[0] = pMeasures->getTime10kmh(); - timeArray[1] = pMeasures->getTime20kmh(); - timeArray[2] = pMeasures->getTime30kmh(); - timeArray[3] = pMeasures->getTime40kmh(); - timeArray[4] = pMeasures->getTime50kmh(); - timeArray[5] = pMeasures->getTime60kmh(); - timeArray[6] = pMeasures->getTime70kmh(); - timeArray[7] = pMeasures->getTime80kmh(); - timeArray[8] = pMeasures->getTime90kmh(); - timeArray[9] = pMeasures->getTime100kmh(); - - for (int i = 0; i < 4; i++) + 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(); + + for (int i = 0; i < 11; i++) { points[i] = changeMeasuresToDiagramPoint(speedArray[i], timeArray[i]); } + setTimesIntoLabels(); + this->repaint(); + + for (int i = 0; i < 11; i++) + { + timeArray[i] = 0; + } +} + +void ResultDialog::on_pushButtonSend_clicked() +{ + emit sendresult(); +} + +/** + * 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. + */ +void ResultDialog::setTimesIntoLabels() +{ QString time, timeInteger; - timeInteger.setNum(timeArray[3]); + timeInteger.setNum(timeArray[4]); time = "0 - 40 km/h: "; time.append(timeInteger); ui->labelResult40kmh->setText(time); - timeInteger.setNum(timeArray[2]); + timeInteger.setNum(timeArray[3]); time = "0 - 30 km/h: "; time.append(timeInteger); ui->labelResult30kmh->setText(time); - timeInteger.setNum(timeArray[1]); + timeInteger.setNum(timeArray[2]); time = "0 - 20 km/h: "; time.append(timeInteger); ui->labelResult20kmh->setText(time); - timeInteger.setNum(timeArray[0]); + timeInteger.setNum(timeArray[1]); time = "0 - 10 km/h: "; time.append(timeInteger); ui->labelResult10kmh->setText(time); - /* timeInteger.setNum(timeArray[5]); + timeInteger.setNum(timeArray[6]); time = "0 - 60 km/h: "; time.append(timeInteger); - ui->labelResult_5->setText(time); + ui->labelResult60kmh->setText(time); - timeInteger.setNum(timeArray[4]); + timeInteger.setNum(timeArray[5]); time = "0 - 50 km/h: "; time.append(timeInteger); - ui->labelResult_6->setText(time); + ui->labelResult50kmh->setText(time); - timeInteger.setNum(timeArray[3]); - time = "0 - 40 km/h: "; + timeInteger.setNum(timeArray[7]); + time = "0 - 70 km/h: "; time.append(timeInteger); - ui->labelResult_7->setText(time);*/ + ui->labelResult70kmh->setText(time); - this->repaint(); + timeInteger.setNum(timeArray[8]); + time = "0 - 80 km/h: "; + time.append(timeInteger); + ui->labelResult80kmh->setText(time); + + timeInteger.setNum(timeArray[9]); + time = "0 - 90 km/h: "; + time.append(timeInteger); + ui->labelResult90kmh->setText(time); + + timeInteger.setNum(timeArray[10]); + time = "0 - 100 km/h: "; + time.append(timeInteger); + ui->labelResult100kmh->setText(time); - for (int i = 0; i < 10; i++) + if (this->diagramGapStem == DIAGRAMGAP40KMH) { - timeArray[i] = 0; + ui->labelResult50kmh->hide(); + ui->labelResult60kmh->hide(); + ui->labelResult70kmh->hide(); + ui->labelResult80kmh->hide(); + 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(); } } diff --git a/Client/resultdialog.h b/Client/resultdialog.h index d0184cc..41722ba 100644 --- a/Client/resultdialog.h +++ b/Client/resultdialog.h @@ -22,6 +22,8 @@ public: ResultDialog(QWidget *parent = 0); ~ResultDialog(); void saveMeasuresToArray(Measures *pMeasures); + void setDiagramGapStem(double pDiagramGapStem); + void setDiagramGapHorizontal(double pDiagramGapHorizontal); signals: void sendresult(); @@ -32,10 +34,15 @@ protected: private: QPoint changeMeasuresToDiagramPoint(int aSpeed, qreal aTime); - qreal timeArray[10]; + void setTimesIntoLabels(); private: Ui::ResultDialog *ui; + qreal timeArray[11]; + double diagramGapStem; + double diagramGapHorizontal; + QStringList speedList; + QStringList timeList; private slots: void on_pushButtonSend_clicked(); diff --git a/Client/resultdialog.ui b/Client/resultdialog.ui index 81717c3..a1ad0f4 100644 --- a/Client/resultdialog.ui +++ b/Client/resultdialog.ui @@ -16,8 +16,8 @@ - 410 - 230 + 550 + 180 191 31 @@ -29,8 +29,8 @@ - 410 - 90 + 550 + 120 191 31 @@ -42,8 +42,8 @@ - 410 - 180 + 550 + 160 191 31 @@ -55,7 +55,7 @@ - 410 + 550 140 191 31 @@ -65,435 +65,95 @@ 0 - 30 km/h: 8,6 s - - - - 20 - 280 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 20 - - - - - - 20 - 160 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 60 - - - + - 20 - 310 - 31 - 17 + 550 + 260 + 101 + 27 - - - Bitstream Charter - 8 - - - 10 + Send results - + - 20 + 550 40 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 100 - - - - - - 20 - 250 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 30 - - - - - - 5 - 10 - 171 - 17 + 191 + 31 - - - Bitstream Charter - 8 - - - Y + 0 - 80 km/h: 9,8 s - + - 20 - 220 - 31 - 17 + 550 + 60 + 191 + 31 - - - Bitstream Charter - 8 - - - 40 + 0 - 70 km/h: 8,6 s - + - 20 - 130 - 31 - 17 + 550 + 80 + 191 + 31 - - - Bitstream Charter - 8 - - - 70 + 0 - 60 km/h: 6,9 s - + - 20 + 550 100 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 80 - - - - - - 20 - 190 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 50 - - - - - - 20 - 70 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 90 - - - - - - 70 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 1 - - - - - - 130 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 3 - - - - - - 190 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 5 - - - - - - 310 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 9 - - - - - - 250 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 7 - - - - - - 100 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 2 - - - - - - 220 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 6 - - - - - - 280 - 350 - 31 - 17 - - - - - Bitstream Charter - 8 - - - - 8 - - - - - - 50 - 360 - 170 - 17 - - - - - Bitstream Charter - 8 - - - - X - - - - - - 340 - 350 - 31 - 17 + 191 + 31 - - - Bitstream Charter - 8 - - - 10 + 0 - 50 km/h: 5,6 s - + - 160 - 350 - 31 - 17 + 550 + 20 + 191 + 31 - - - Bitstream Charter - 8 - - - 4 + 0 - 90 km/h: 8,6 s - + - 402 - 330 - 101 - 27 + 550 + 0 + 191 + 31 - Send results + 0 - 100 km/h: 9,8 s