From: Toni Jussila Date: Tue, 27 Apr 2010 10:07:04 +0000 (+0300) Subject: Feature: Show average speed in realtime. X-Git-Url: http://git.maemo.org/git/?p=speedfreak;a=commitdiff_plain;h=18cc0246bc4dcad660f57b740148e8288993e556 Feature: Show average speed in realtime. --- diff --git a/Client/routedialog.cpp b/Client/routedialog.cpp index f0806c8..da4853e 100644 --- a/Client/routedialog.cpp +++ b/Client/routedialog.cpp @@ -7,6 +7,7 @@ * @license http://opensource.org/licenses/gpl-license.php GNU Public License */ +#include "routesavedialog.h" #include "routedialog.h" #include "ui_routedialog.h" #include "usersettings.h" @@ -169,7 +170,8 @@ qreal countDistance(Vector *p1, Vector *p2) /** * Constructor of this class. */ -RouteDialog::RouteDialog(QWidget *parent) : +//RouteDialog::RouteDialog(QWidget *parent) : +RouteDialog::RouteDialog(RouteSaveDialog *parent) : QDialog(parent), ui(new Ui::RouteDialog) { qDebug() << "__RouteDialog"; @@ -189,9 +191,13 @@ RouteDialog::RouteDialog(QWidget *parent) : // Clear labels ui->labelInfoToUser->setText(""); ui->speedValueLabel->setText(""); + ui->avgSpeedValueLabel->setText(""); // Check login checkLogin(); + + // Set average speed + ui->avgSpeedValueLabel->setText(QString::number(parent->getAverageSpeed()) + " km/h"); } /** @@ -411,7 +417,7 @@ void RouteDialog::paintEvent(QPaintEvent *) // Show max velocity point by yellow circle painter.drawEllipse( x1Screen-5, y1Screen-5, 10, 10); - painter.drawEllipse( 650, 225, 10, 10); + painter.drawEllipse( ui->maxSpeedLabel->geometry().x()-15, ui->maxSpeedLabel->geometry().y()+15, 10, 10); QString jono; //jono = QString("%1 km/h").arg(maxv); diff --git a/Client/routedialog.h b/Client/routedialog.h index dd453dd..2b9aa4c 100644 --- a/Client/routedialog.h +++ b/Client/routedialog.h @@ -12,6 +12,7 @@ #include #include +class RouteSaveDialog; namespace Ui { class RouteDialog; @@ -21,7 +22,8 @@ class RouteDialog : public QDialog { Q_OBJECT public: - RouteDialog(QWidget *parent = 0); + //RouteDialog(QWidget *parent = 0); + RouteDialog(RouteSaveDialog *parent = 0); ~RouteDialog(); bool readRouteFromFile( QString &routeFile); int getLeft(); diff --git a/Client/routedialog.ui b/Client/routedialog.ui index e0d9c77..d7fb136 100644 --- a/Client/routedialog.ui +++ b/Client/routedialog.ui @@ -16,7 +16,7 @@ - 670 + 710 150 90 90 @@ -39,7 +39,7 @@ - 670 + 710 50 90 90 @@ -59,38 +59,6 @@ - - - - 650 - 250 - 141 - 81 - - - - - - - Max speed - - - Qt::AlignCenter - - - - - - - TextLabel - - - Qt::AlignCenter - - - - - @@ -127,6 +95,70 @@ + + + + 560 + 10 + 111 + 41 + + + + Max: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 560 + 40 + 110 + 41 + + + + speedValueLabel + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 560 + 130 + 131 + 31 + + + + Average: + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + + + + 560 + 160 + 135 + 31 + + + + avgSpeedValueLabel + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + diff --git a/Client/routesavedialog.cpp b/Client/routesavedialog.cpp index ba7100a..3153b21 100644 --- a/Client/routesavedialog.cpp +++ b/Client/routesavedialog.cpp @@ -26,6 +26,12 @@ RouteSaveDialog::RouteSaveDialog(QWidget *parent) : gpsData = NULL; helpRoutingDialog = NULL; + //Clear variables + averageSpeed = 0.0; + speed = 0.0; + allSpeeds = 0.0; + speedCount = 0; + //Button settings buttonStatus = true; pixmapRouteStop = new QPixmap("Graphics/route_stop.png"); @@ -53,6 +59,7 @@ RouteSaveDialog::RouteSaveDialog(QWidget *parent) : ui->labelRouteStatus->setVisible(0); ui->labelRoutePicture->setVisible(0); ui->labelGpsSpeed->setVisible(0); //GPS speed label + ui->labelGpsAvgSpeed->setVisible(0); //GPS average speed label ui->labelSignalStrength->setText(""); //GPS signal strength label timerRoutePicture = new QTimer(); timerRoutePicture->setInterval(400); @@ -110,6 +117,13 @@ void RouteSaveDialog::on_buttonRouteStartStop_clicked() if ( buttonStatus == true )//If start button clicked { qDebug() << "__start button clicked"; + + //Clear variables + averageSpeed = 0.0; + speed = 0.0; + allSpeeds = 0.0; + speedCount = 1; + buttonStatus = false; ui->buttonRouteStartStop->setIcon(*iconRouteStop); location->startPollingGPS(); @@ -137,13 +151,14 @@ void RouteSaveDialog::on_buttonRouteStartStop_clicked() if (routeDialog->readRouteFromFile( routeFile ) == true) { if(!routeDialog) - routeDialog = new RouteDialog; + routeDialog = new RouteDialog(this); connect(routeDialog, SIGNAL(sendroute()), this, SLOT(sendRoute())); routeDialog->show(); } - //GPS speed label + //Set GPS speed labels in visible ui->labelGpsSpeed->setVisible(0); + ui->labelGpsAvgSpeed->setVisible(0); //Stop route recording gpsData->stopRouteRecording(); @@ -192,7 +207,7 @@ void RouteSaveDialog::timerRoutePictureTimeout() } /** - * + * This slot function is called when GPS update location. */ void RouteSaveDialog::gpsStatus() { @@ -217,11 +232,22 @@ void RouteSaveDialog::gpsStatus() ui->labelRoutePicture->setVisible(1); timerRoutePicture->start(); - //Set GPS speed. - gpsSpeed.sprintf("%.0f",location->getSpeed()); + //Get GPS speed + speed = location->getSpeed(); + + //Set GPS speed + gpsSpeed.sprintf("%.0f", speed); ui->labelGpsSpeed->setText(gpsSpeed + " km/h"); ui->labelGpsSpeed->setVisible(1); + //Set GPS average speed + allSpeeds += speed; + averageSpeed = allSpeeds/speedCount; + gpsSpeed.sprintf("%.0f",averageSpeed); + ui->labelGpsAvgSpeed->setText("Average: " + gpsSpeed + " km/h"); + ui->labelGpsAvgSpeed->setVisible(1); + speedCount++; + //Start route recording gpsData->startRouteRecording(); } @@ -239,8 +265,9 @@ void RouteSaveDialog::gpsStatus() ui->labelRoutePicture->setVisible(0); timerRoutePicture->stop(); - //GPS speed label + //Set GPS speed labels in visible ui->labelGpsSpeed->setVisible(0); + ui->labelGpsAvgSpeed->setVisible(0); } } else //If stop button clicked @@ -257,8 +284,9 @@ void RouteSaveDialog::gpsStatus() ui->labelRoutePicture->setVisible(0); timerRoutePicture->stop(); - //GPS speed label + //Set GPS speed labels in visible ui->labelGpsSpeed->setVisible(0); + ui->labelGpsAvgSpeed->setVisible(0); } } @@ -295,3 +323,12 @@ void RouteSaveDialog::killHelpDialog() helpRoutingDialog = NULL; } } + +/** + * This function return speed average. + * @return double average speed + */ +double RouteSaveDialog::getAverageSpeed() +{ + return averageSpeed; +} diff --git a/Client/routesavedialog.h b/Client/routesavedialog.h index 186cbf8..1dda5ff 100644 --- a/Client/routesavedialog.h +++ b/Client/routesavedialog.h @@ -30,6 +30,7 @@ public: ~RouteSaveDialog(); RouteDialog *routeDialog; HelpRoutingDialog *helpRoutingDialog; + double getAverageSpeed(); protected: void changeEvent(QEvent *e); @@ -46,6 +47,10 @@ private: QIcon *iconRouteStop; QIcon *iconRouteStart; bool buttonStatus; + double averageSpeed; + double speed; + double allSpeeds; + int speedCount; private slots: void on_pushButtonInfo_clicked(); diff --git a/Client/routesavedialog.ui b/Client/routesavedialog.ui index 4638a5f..7c4ccbd 100644 --- a/Client/routesavedialog.ui +++ b/Client/routesavedialog.ui @@ -199,7 +199,7 @@ 550 - 120 + 10 151 51 @@ -231,6 +231,27 @@ + + + + 540 + 100 + 241 + 91 + + + + + 20 + + + + GPS avg speed + + + Qt::AlignCenter + +